不太确定你想完成什么,但也许这会给你一些想法。
ps:欢迎来到沼泽
- static void SwampHelpdoit(void)
- {
- const CString layerName = "dgx";
- AcDbObjectId objId;
- AcDbObjectId BTRid;
- ads_name entName;
- struct resbuf *rbEnt = NULL;
- struct resbuf *rbTmp = NULL;
- AcDbDatabase* pDb = acdbHostApplicationServices()->workingDatabase();
- AcDbLayerTablePointer pLayerTbl(pDb->layerTableId(),AcDb::kForRead);
- if(pLayerTbl.openStatus() != Acad::eOk)
- {
- acutPrintf(_T("\nFailed to open LayerTable"));
- return;
- }
- if(!pLayerTbl->has(layerName))
- {
- acutPrintf(_T("\nError: Layer %s was not found"),layerName);
- return;
- }
- AcDbBlockTablePointer pBlkTbl(pDb->blockTableId(), AcDb::kForRead);
- if(pBlkTbl.openStatus() != Acad::eOk)
- {
- acutPrintf(_T("\nFailed to open BlockTable"));
- return;
- }
- if(pBlkTbl->getAt(ACDB_MODEL_SPACE,BTRid) != Acad::eOk)
- {
- acutPrintf(_T("\nFailed to get BlockTableRecord"));
- return;
- }
- AcDbBlockTableRecordPointer pBlkTblRcd(BTRid,AcDb::kForRead);
- if(pBlkTblRcd.openStatus() != Acad::eOk)
- {
- acutPrintf(_T("\nFailed to open BlockTableRecord"));
- return;
- }
- AcDbBlockTableRecordIterator* pIterator = NULL;
- pBlkTblRcd->newIterator(pIterator);
- for (pIterator->start(); !pIterator->done(); pIterator->step())
- {
- pIterator->getEntityId(objId);
- AcDbObjectPointer pEnt(objId, AcDb::kForRead);
- acdbGetAdsName(entName,objId);
- rbEnt = acdbEntGet(entName);
- if (pEnt.openStatus() == Acad::eOk)
- {
- for (rbTmp=rbEnt;rbTmp->rbnext!=NULL;rbTmp=rbTmp->rbnext)
- {
- switch (rbTmp->restype)
- {
- case 8:
- acutPrintf(_T("\n layer:%s"), rbTmp->resval.rstring);
- break;
- case 39:
- acutPrintf(_T("\n T:%s"), rbTmp->resval.rstring);
- break;
- case 30:
- if (rbTmp->resval.rreal == 60){
- pEnt->upgradeOpen();
- pEnt->setColorIndex(1);
- }
- acutPrintf(_T("\n elven:%f"), rbTmp->resval.rreal);
- break;
- default:
- break;
- }
- }
- }
- }
- delete pIterator;
- }
|