找回密码
 立即注册

QQ登录

只需一步,快速开始

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

ObjectARX删除块参照

[复制链接]

1

主题

0

回帖

35

积分

管理员

积分
35
发表于 2024-3-16 09:44:10 | 显示全部楼层 |阅读模式
  1. void DeleteBlockReference(AcDbEntity* pEnt)
  2. {
  3.     if (pEnt->isA() == AcDbBlockReference::desc())
  4.     {
  5.         AcDbBlockReference* pBlkRef = AcDbBlockReference::cast(pEnt);
  6.         if (pBlkRef != nullptr)
  7.         {
  8.             // 删除块参照前也可以选择获取并处理其属性或其他信息
  9.             // ...
  10.             Acad::ErrorStatus es = pBlkRef->erase();
  11.             if (es == Acad::eOk)
  12.             {
  13.                 pBlkRef->close();
  14.             }
  15.         }
  16.     }
  17. }
  18. // 示例在选定集上删除所有块参照
  19. AcDbVoidPtrArray entities;
  20. ads采用name ss;
  21. acedSSGet(NULL, NULL, NULL, NULL, ss);
  22. Acad::ErrorStatus es = acdbGsMarker(ss, entities);
  23. if (es == Acad::eOk)
  24. {
  25.     for (int i = 0; i < entities.length(); ++i)
  26.     {
  27.         AcDbEntity* pEnt;
  28.         es = acdbOpenObject(pEnt, (AcDbObjectId)entities[i], AcDb::kForWrite);
  29.         if (es == Acad::eOk)
  30.         {
  31.             DeleteBlockReference(pEnt);
  32.             pEnt->close();
  33.         }
  34.     }
  35. }
  36. acdbClear采用ss(ss);
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-1-1 18:14 , Processed in 0.116959 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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