• objectARX 获取指定图层上所有实体ID


     1 //获取指定图层上所有实体ID
     2 AcDbObjectIdArray GetAllEntityId(const TCHAR* layername)
     3 {
     4     AcDbObjectIdArray entIds;
     5     bool bFilterlayer = false;
     6     AcDbObjectId layerId;
     7     //获取指定图层对象ID
     8     if (layername != NULL)
     9     {
    10         AcDbLayerTable *pLayerTbl = NULL;
    11         acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pLayerTbl, AcDb::kForRead);
    12         if (!pLayerTbl->has(layername))
    13         {
    14             pLayerTbl->close();
    15             return entIds;
    16         }
    17         pLayerTbl->getAt(layername, layerId);
    18         pLayerTbl->close();
    19         bFilterlayer = true;
    20     }
    21     //获得块表
    22     AcDbBlockTable *pBlkTbl = NULL;
    23     acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pBlkTbl, AcDb::kForRead);
    24     //块表记录
    25     AcDbBlockTableRecord *pBlkTblRcd = NULL;
    26     pBlkTbl->getAt(ACDB_MODEL_SPACE, pBlkTblRcd, AcDb::kForRead);
    27     pBlkTbl->close();
    28     //创建遍历器,依次访问模型空间中的每一个实体
    29     AcDbBlockTableRecordIterator *it = NULL;
    30     pBlkTblRcd->newIterator(it);
    31     for (it->start(); !it->done(); it->step())
    32     {
    33         AcDbEntity *pEnt = NULL;
    34         Acad::ErrorStatus es = it->getEntity(pEnt, AcDb::kForRead);
    35         if (es == Acad::eOk)
    36         {
    37             if (bFilterlayer)//过滤图层
    38             {
    39                 if (pEnt->layerId() == layerId)
    40                 {
    41                     entIds.append(pEnt->objectId());
    42                 }
    43             }
    44             else
    45             {
    46             //    entIds.append(pEnt->objectId());
    47                 pEnt->close();
    48             }
    49         }
    50     }
    51     delete it;
    52     pBlkTblRcd->close();
    53     return entIds;
    54 }
  • 相关阅读:
    正则表达式
    MySQL 中的锁类型有哪些
    vscode使用remote-ssh免密连接服务器
    net-java-php-python-阿克苏水果销售管理计算机毕业设计程序
    qml布局管理器介绍与代码演示
    Spring Security漏洞防护—HTTP 安全响应头
    MySQL学习问题记录
    C#,动态规划(DP)模拟退火(Simulated Annealing)算法与源代码
    反射是什么
    近邻搜索算法浅析
  • 原文地址:https://blog.csdn.net/u010579736/article/details/133442661