找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 532|回复: 4

[求助]:AcDbModelSpace的头文件(*.h)或*.lib?

[复制链接]
发表于 2004-4-19 04:23:50 | 显示全部楼层 |阅读模式

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

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

×
知道的,请告诉一声。谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-4-19 14:22:12 | 显示全部楼层
有AcDbModelSpace这个东东吗。在AutoCAD里面的模型空间和图纸空间都是AcDbBlockTableRecord的实例,应该这样访问模型空间:
AcDbDatabase * pCurDb = acdbHostApplicationServices() -> workingDatabase();
AcDbBlockTable * pBlockTable;
pCurDb        -> getSymbolTable(pBlockTable,AcDb::kForRead);
AcDbBlockTableRecord * pModelBlock;
pBlockTable -> getAt(ACDB_MODEL_SPACE,pModelBlock,AcDb::kForRead);
pBlockTable -> close();
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-4-19 14:30:13 | 显示全部楼层
最初由 kingofrpg 发布
[B]有AcDbModelSpace这个东东吗。在AutoCAD里面的模型空间和图纸空间都是AcDbBlockTableRecord的实例,应该这样访问模型空间:
AcDbDatabase * pCurDb = acdbHostApplicationServices() -> workingDatabase();
AcDbBl... [/B]


我在AUTODESK的论坛上找到的东西,麻烦你看看:

  1.   [FONT=courier new]
  2. class BxBlockBag : public AcDbEntity
  3. {
  4. public:
  5.         BxBlockBag(AcDbBlockReference* pRef);
  6.         Adesk::Boolean worldDraw(AcGiWorldDraw* draw);
  7.         AcDbObjectId m_BlkRecId;
  8.         AcDbBlockReference* m_BlkRef;
  9.         AcDbObjectId m_LayerId;
  10. };

  11. BxBlockBag::BxBlockBag(AcDbBlockReference* pRef)
  12. {
  13.         m_BlkRef = pRef;
  14.         m_BlkRecId = m_BlkRef->blockTableRecord();
  15. }

  16. Adesk::Boolean BxBlockBag::worldDraw(AcGiWorldDraw* draw)
  17. {
  18.         AcDbModelSpace ms;    //就是这个东西啊
  19.         AcDbBlockTableRecordPtr blkRec(m_BlkRecId);   //还有这里,知道的朋友,麻烦指点一下。
  20.         if(blkRec && ms)
  21.         {
  22.                 AcDbObjectId entlayer;
  23.                 AcDbObjectId layerZero = thisDrawing->layerZero();
  24.                 AcGeMatrix3d transMat;
  25.                 transMat.setToTranslation(ms->origin() - blkRec->origin());
  26.                 draw->geometry().pushModelTransform(m_BlkRef->blockTransform());
  27.                 draw->geometry().pushModelTransform(transMat);
  28.                 IdVec ids;
  29.                 blkRec.GetIds(ids);
  30.                 int count = ids.size();
  31.                 for(int i = 0; i < count; i++)
  32.                 {
  33.                         CxPtr<AcDbAttributeDefinition> att(ids);
  34.                         if(att) continue;
  35.                         CxPtr<AcDbEntity> ent(ids);
  36.                         if(ent)
  37.                         {
  38.                                 entlayer = ent->layerId();
  39.                                 if(entlayer == layerZero)
  40.                                         draw->subEntityTraits().setLayer(m_LayerId);
  41.                                 else
  42.                                         draw->subEntityTraits().setLayer(entlayer);
  43.                                 ent->worldDraw(draw);
  44.                         }
  45.                 }
  46.                 draw->geometry().popModelTransform();
  47.                 draw->geometry().popModelTransform();
  48.         }
  49.         return Adesk::kTrue;
  50. }
  51.   [/FONT]
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-20 09:59:04 | 显示全部楼层
估计上面的AcDbModelSpace是程序作者的一个自定义类,里面有一个AcDbBlockTableRecord *的成员变量,在类的构造函数中初始化该指针,大概就是我上面的那段代码;AcDbBlockTableRecordPtr可能也是封装AcDbBlockTableRecord*的类吧,这样好啊,免得经常忘记关闭打开的对象,下去我都要把程序改造一下了!@_@
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-4-20 13:55:28 | 显示全部楼层
最初由 kingofrpg 发布
[B]估计上面的AcDbModelSpace是程序作者的一个自定义类,里面有一个AcDbBlockTableRecord *的成员变量,在类的构造函数中初始化该指针,大概就是我上面的那段代码;AcDbBlockTableRecordPtr可能也是封装AcDbBlockTableR... [/B]


我后来也估计到是这样。
AcDbModelSpace可能是以AcDbBlockTableRecord 或 AcDbUCSTableRecord 为基类;
AcDbBlockTableRecordPtr应该是以AcDbBlockTableRecord 为基类的。
如果你改成功,别忘了给我发一份啊!
祝你成功!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 15:53 , Processed in 0.292986 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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