OBJECT ARX 遍历数据库所有图元代码

转自:http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece763104c8c711923d030678197027fa3c215cc790a1b103ab5ec65794c51ce95223a54b2121abdaf2b24360277b1cbc98e498cb995797b892433204c8115158512b8cb317f877fce4eacf259b1b5a372d9b9d2a2c82450dd240e6df1f29c2e73&p=837fcd1b93934eac59ef882d0215d53f&user=baidu&fm=sc&query=arx+%B1%E9%C0%FA&qid=9c46b5a501e1ce95&p1=2


typedef void (*DoSomethingWithEnt)( AcDbEntity*);

void WalkThrough(AcDbDatabase* db, DoSomethingWithEnt callBack)
{
AcDbBlockTable *pBlockTable;
db->getSymbolTable(pBlockTable, AcDb::kForRead);
AcDbBlockTableIterator* pBlockIt;
Acad::ErrorStatus es = pBlockTable->newIterator(pBlockIt);
if(Acad::eOk != es)
{
pBlockTable->close();
return;
}
AcDbBlockTableRecord *pBlockTableRecord;
for(pBlockIt->start();!pBlockIt->done();pBlockIt->step())
{
es = pBlockIt->getRecord(pBlockTableRecord, AcDb::kForRead);
if(Acad::eOk == es)
{
AcDbBlockTableRecordIterator* pEntIt;
es = pBlockTableRecord->newIterator(pEntIt);
if(Acad::eOk == es)
{
for (pEntIt->start();!pEntIt->done();pEntIt->step())
{
AcDbEntity* pEnt;
es = pEntIt->getEntity(pEnt, AcDb::kForWrite);
if (Acad::eOk == es)
{
callBack(pEnt);
pEnt->close();
}
}
delete pEntIt;
}
pBlockTableRecord->close();
}
}
delete pBlockIt;
pBlockTable->close();
}


你可能感兴趣的:(OBJECT ARX 遍历数据库所有图元代码)