天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 32|回复: 0

objectarx 之遍历当前模型空间中的所有实体,并对每个实体进行炸开

[复制链接]

该用户从未签到

主题

0

回帖

0

积分

管理员

积分
0
发表于 2024-8-7 13:08:33 | 显示全部楼层 |阅读模式
  1. // 炸开
  2. void BomEntity()
  3. {
  4. AcDbBlockTable *pBlkTbl;
  5. acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlkTbl, AcDb::kForRead);

  6. // 获得模型空间的块表记录
  7. AcDbBlockTableRecord *pBlkTblRcd;
  8. pBlkTbl->getAt(ACDB_MODEL_SPACE, pBlkTblRcd,AcDb::kForRead);
  9. pBlkTbl->close();

  10. // 创建块表记录遍历器
  11. AcDbBlockTableRecordIterator *pItr; // 块表记录遍历器
  12. pBlkTblRcd -> newIterator(pItr);
  13. pBlkTblRcd->close();
  14. AcDbEntity *pEnt = NULL; // 遍历的临时实体指针
  15. for(pItr->start();!pItr->done();pItr->step()){
  16. // 利用遍历器获得每一个实体
  17. pItr->getEntity(pEnt,AcDb::kForWrite);

  18. // 块参照
  19. if (pEnt->isKindOf(AcDbBlockReference::desc()))
  20. {
  21. // 炸开
  22. AcDbVoidPtrArray ents =Explode(pEnt);
  23. // 循环遍历炸开的实体
  24. for(int i = 0; i < ents.length(); ++i)
  25. {
  26. AcDbEntity* pSubEnt = (AcDbEntity*)ents[i];
  27. AcDbEntity* entity = AcDbEntity::cast(pSubEnt);
  28. AppendToDatabase(entity);
  29. entity->close();
  30. }
  31. pEnt->erase();
  32. }

  33. pEnt->close();
  34. }
  35. delete pItr;
  36. }
复制代码
objectarx 之遍历当前模型空间中的所有实体,并对每个实体进行炸开
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 10:18 , Processed in 0.151644 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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