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

//炸开
void BomEntity()
{
AcDbBlockTable *pBlkTbl;
acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlkTbl, AcDb::kForRead);

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

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

//块参照
if (pEnt->isKindOf(AcDbBlockReference::desc()))
{
//炸开
AcDbVoidPtrArray ents =Explode(pEnt);
//循环遍历炸开的实体
for(int i = 0; i < ents.length(); ++i)
{
AcDbEntity* pSubEnt = (AcDbEntity*)ents[i];
AcDbEntity* entity = AcDbEntity::cast(pSubEnt);
AppendToDatabase(entity);
entity->close();
}
pEnt->erase();
}

pEnt->close();
}
delete pItr;
}

转载于:https://www.cnblogs.com/Pond-ZZC/p/11578028.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值