找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 904|回复: 4

[ARX函数]:getSymbolTable与getBlockTable的区别

[复制链接]
发表于 2005-9-22 10:06:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
getSymbolTable与getBlockTable的区别

我在文字标注流程中用到
AcDbBlockTable *pBlockTablew;
acdbHostApplicationServices()->workingDatabase()
        ->getSymbolTable(pBlockTablew, AcDb::kForRead);


在圆圈标注流程中用到
AcDbBlockTable *pBlockTablee;
acdbCurDwg()  ->getBlockTable(pBlockTablee,AcDb::kForRead);

谁能告诉我这两者的区别?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-9-22 10:24:35 | 显示全部楼层
getSymbolTable 不仅仅可以取得AcDbBlockTable
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-22 10:36:28 | 显示全部楼层
如果单从上面的程序使用效果看,没有区别,但是:
1、AcDbSymbolTable类是所有符号表的基类,AcDbBlockTable是其派生类。
2、对于getBlockTable()函数,AutoDesk已明确表态,在将来的版本中要取消,与其早知如此、何必当初,还是趁早使用getSymbolTable(),免得将来接受不了沧桑巨变的事实。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-22 11:00:55 | 显示全部楼层
void CAttribute::Scircle(const double num)
{  
        for(int n=0;n<NodeNumCount;n++)
        {               
                AcGeVector3d normal(0.0, 0.0, 1.0);
                AcGePoint3d startPt(xco[n],yco[n],0.0);//定义直线点
                AcDbCircle *pCirc1 = new AcDbCircle(startPt, normal, num);         
                AcDbBlockTable *pBlockTablee;
        acdbCurDwg()->getBlockTable(pBlockTablee,AcDb::kForRead);
                //        acdbHostApplicationServices()->workingDatabase()
                //             ->getSymbolTable(pBlockTablee, AcDb::kForRead);
                AcDbBlockTableRecord *pBlockTableRecorde;
                pBlockTablee->getAt(ACDB_MODEL_SPACE, pBlockTableRecorde,AcDb::kForWrite);
                pBlockTablee->close();       
//////////////////////////////////////////////////////////////////////////                文字标注代码
   // AcGePoint3d textPosition(xco[n], yco[n], 0.0);//*
   //        AcGePoint3d atextPosition(xco[n], yco[n], 0.0);
               char s1[64];
                sprintf(s1, "%d", n);        //int型向const char *s 的类型转换                
             double textHeight = 10;
                double textWidthFactor = 0.8000;
                double textRotation = 0.0;
               
                //AcDb::kTextLeft
        AcDbText* pText=new AcDbText(startPt,s1, AcDbObjectId::kNull,textHeight,textRotation);
                pText->setHorizontalMode(AcDb::kTextMid);
                pText->setAlignmentPoint(startPt);//atextPosition  textPosition
                pText->setColorIndex(1);
               
                AcDbObjectId textId;
                pBlockTableRecorde->appendAcDbEntity(textId, pText);               
//////////////////////////////////////////////////////////////////////////                文字标注代码
                AcDbObjectId circleId;
                pBlockTableRecorde->appendAcDbEntity(circleId, pCirc1);
                pBlockTableRecorde->close();
                pCirc1->close();
             pText->close();

        }acutPrintf("\n 点标注完毕!");
}

C++中编译无错,cad中运行到这里回非正常退出,甚至无法保存
出错如下:我把错误提示写下来好了:
  AutoCAD错误中断
   致命错误:Unhandle Access Violaion Reading 0x0000 Exception at 7800b742h
AutoCAD  Error-abort
    Error  handler  re-entered  Exiting  now

                               
登录/注册后可看大图


                               
登录/注册后可看大图
(看不到图片的朋友请右击显示图片)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-25 10:52:25 | 显示全部楼层
inline Acad::ErrorStatus
AcDbDatabase::getBlockTable(
    AcDbBlockTable*& pTable,
    AcDb::OpenMode mode)
{
    return getSymbolTable(pTable, mode);
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-16 23:54 , Processed in 0.198803 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表