加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

ObjectARX explode炸开函数的用法

(2009-03-26 20:02:01)
标签:

objectarx

explode

炸开函数用法

it

分类: CAD使用和二次开发
  1. static AcDbObjectId AppendEntity(AcDbEntity *pEnt)
  2. {
  3. AcDbDatabase *pDb = acdbHostApplicationServices()->workingDatabase();
  4. AcDbBlockTable *pBt;
  5. pDb->getBlockTable(pBt, AcDb::kForRead);
  6. AcDbBlockTableRecord *pBtr;
  7. pBt->getAt(ACDB_MODEL_SPACE, pBtr, AcDb::kForWrite);
  8. AcDbObjectId entId;
  9. pBtr->appendAcDbEntity(entId, pEnt);
  10. pBtr->close();
  11. pBt->close();
  12. pEnt->close();
  13. return entId;
  14. }
  15. // - ahlzlARX._test command (do not rename)
  16. static void ahlzlARX_test(void)
  17. {
  18. // Add your code for command ahlzlARX._test here
  19. ads_name ent;
  20. ads_point pt;
  21. if (acedEntSel(_T("\n请选择对象:"), ent, pt) != RTNORM)
  22. {
  23.   return;
  24. }
  25. AcDbObjectId entId;
  26. acdbGetObjectId(entId, ent);
  27. AcDbEntity *pEnt = NULL;
  28. acdbOpenObject(pEnt, entId, AcDb::kForWrite);
  29. AcDbVoidPtrArray pExps;
  30. if (pEnt->explode(pExps) == Acad::eOk)
  31. {
  32.   for (int i = 0; i < pExps.length(); i++)
  33.   {
  34.    AcDbEntity *pExpEnt = (AcDbEntity*)pExps[i];
  35.    acutPrintf(_T("\n分解后的对象类型名是: %s"), (pExpEnt->isA()->name()));
  36.    AppendEntity(pExpEnt);
  37.   }
  38.   pEnt->erase(true);
  39. }
  40. else
  41. {
  42.   acutPrintf(_T("\n该对象不能被分解!"));
  43. }
  44. pEnt->close();
  45. }

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有