objectARX 获取指定图层上所有实体ID
2015-12-17 10:52
543 查看
2015-12-17
//获取指定图层上所有实体ID AcDbObjectIdArray GetAllEntityId(const TCHAR* layername) { AcDbObjectIdArray entIds; bool bFilterlayer = false; AcDbObjectId layerId; //获取指定图层对象ID if (layername != NULL) { AcDbLayerTable *pLayerTbl = NULL; acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pLayerTbl, AcDb::kForRead); if (!pLayerTbl->has(layername)) { pLayerTbl->close(); return entIds; } pLayerTbl->getAt(layername, layerId); pLayerTbl->close(); bFilterlayer = true; } //获得块表 AcDbBlockTable *pBlkTbl = NULL; acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pBlkTbl, AcDb::kForRead); //块表记录 AcDbBlockTableRecord *pBlkTblRcd = NULL; pBlkTbl->getAt(ACDB_MODEL_SPACE, pBlkTblRcd, AcDb::kForRead); pBlkTbl->close(); //创建遍历器,依次访问模型空间中的每一个实体 AcDbBlockTableRecordIterator *it = NULL; pBlkTblRcd->newIterator(it); for (it->start(); !it->done(); it->step()) { AcDbEntity *pEnt = NULL; Acad::ErrorStatus es = it->getEntity(pEnt, AcDb::kForRead); if (es == Acad::eOk) { if (bFilterlayer)//过滤图层 { if (pEnt->layerId() == layerId) { entIds.append(pEnt->objectId()); } } else { // entIds.append(pEnt->objectId()); pEnt->close(); } } } delete it; pBlkTblRcd->close(); return entIds; }
相关文章推荐
- Objective-C语言_不可变字典
- Javascript中的函数(Function)与对象(Object)的关系
- Javascript中的函数(Function)与对象(Object)的关系
- ORM(Object Relational Mapping)框架
- Javascript中的函数(Function)与对象(Object)的关系
- setValue和setObject的区别
- Objective-C Blocks Caveat
- PBDOM操作XML文档轻松入门(Easy XML with PowerBuilder Document Object Model)
- [Redux] Composition with Objects
- JSONObject使用方法详解
- Javascript中的函数(Function)与对象(Object)的关系
- 理解 Objective-C Runtime
- Objective-C总Runtime的那点事儿(一)消息机制
- Objective-C简单教程(入门)-从官方文档中挑选
- Objective-C KVC/KVO NSNotification(通知)的简单理解与应用
- Objective-C 类集合简介(文档)
- NSString* testObject = [[NSData alloc] init];testObject 在编译时和运行时分别是什么类型的对象?
- 关于jquery html()方法获取带有OBJECT标签的元素内容时,出现“类型不匹配。”的解决办法
- JS中的双向数据绑定及Object.defineProperty方法
- field 'int android.view.View.mViewFlags' on a null object reference