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;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM