获取具有指定扩展数据的所有实体的Id,并存入Id数组中

AcDbObjectIdArray ObtainEntId()
{
//获取块表
AcDbBlockTable *pBlkTbl;
acdbHostApplicationServices()->workingDatabase()
->getBlockTable(pBlkTbl, ZcDb::kForRead);
//获取块表记录
AcDbBlockTableRecord *pBlkTblRcd;
pBlkTbl->getAt(ACDB_MODEL_SPACE, pBlkTblRcd, ZcDb::kForWrite);
pBlkTbl->close();
//创建遍历器
AcDbBlockTableRecordIterator *pIter = NULL;
pBlkTblRcd->newIterator(pIter);

AcDbObjectIdArray entIds;
//遍历所有实体得到其ID
for (pIter->start(); !pIter->done(); pIter->step())
{
//利用遍历器获得每一个实体
AcDbEntity *pEnt = NULL;
Acad::ErrorStatus es = pIter->getEntity(pEnt, AcDb::kForRead, false);
if (Acad::eOk != es )
{
acutPrintf(_T("\n打开实体失败!"));
return false;
}

//获取指定扩展数据的链表
struct resbuf *pRc;
struct resbuf *pRc1;

pRc = pEnt->xData(_T("BMC_NO_APP"));
pRc1 = pEnt->xData(_T("BMESC_CABLE_APP"));

//如果两个扩展数据的链表相等,则将此实体的Id存入entIds中
if( pRc != NULL && pRc1 != NULL)
{
entIds.append(pEnt->objectId());
}
pEnt->close();
}
delete pIter;
pBlkTblRcd->close();
return entIds;
}

posted on 2015-09-06 16:09  !!-阳光-!!  阅读(263)  评论(0编辑  收藏  举报

导航