找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 158|回复: 0

得到块定义中的所有实体id(通过块名和数据库指针)

[复制链接]

0

主题

0

回帖

26

积分

管理员

积分
26
发表于 2024-3-13 23:03:11 | 显示全部楼层 |阅读模式
  1. //************************************
  2. // Summary:  得到块定义中的所有实体id(通过块名和数据库指针)
  3. // Parameter:
  4. //      arrid -    输出块定义中所有实体id集合
  5. //      szBlkTblRcdName -    输入块表记录名(块定义名、块名)(模型空间的名字是:ACDB采用MODEL采用SPACE)
  6. //      pDb -    输入块定义所在数据库指针
  7. // Return:       
  8. // Update Time: 2021-7-16 16:06:42    peihaodong
  9. //************************************
  10. bool PhdArxBlock::GetAllEntId(AcDbObjectIdArray& arrid, LPCTSTR szBlkTblRcdName, AcDbDatabase* pDb /*= acdbCurDwg()*/) const
  11. {
  12.         AcDbBlockTableRecordPointer pBlkTblRcd(szBlkTblRcdName, pDb, AcDb::kForRead);
  13.         if (pBlkTblRcd.openStatus() != Acad::eOk)
  14.                 return false;
  15.         AcDbBlockTableRecordIterator* pBTRIter = NULL;
  16.         Acad::ErrorStatus es = pBlkTblRcd->newIterator(pBTRIter);
  17.         if (Acad::eOk != es)
  18.                 return false;
  19.         //绑定智能指针
  20.         std::unique采用ptr<AcDbBlockTableRecordIterator> apBTRIter(pBTRIter);
  21.         for (apBTRIter->start(); !apBTRIter->done(); apBTRIter->step())
  22.         {
  23.                 AcDbEntity* pTempEnt = NULL;
  24.                 es = apBTRIter->getEntity(pTempEnt, AcDb::kForRead);
  25.                 if (Acad::eOk != es)
  26.                         continue;
  27.                 arrid.append(pTempEnt->objectId());
  28.                 pTempEnt->close();
  29.         }
  30.         return true;
  31. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-28 15:03 , Processed in 0.140380 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表