天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 32|回复: 0

arx炸开图纸上所有的块

[复制链接]
  • TA的每日心情
    开心
    昨天 06:36
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    105

    主题

    11

    回帖

    1308

    积分

    管理员

    积分
    1308
    QQ
    发表于 2024-10-10 16:03:02 | 显示全部楼层 |阅读模式
    1. static void explodeBlock1()
    2. {
    3.         AcDbObjectIdArray explodedBrefs;
    4.         AcDbVoidPtrArray  brefFragments;
    5.         AcDbDatabase* pDB = acdbCurDwg();
    6.         Acad::ErrorStatus es;

    7.         // Get the modelspace
    8.         AcDbObjectId IdModelSpace = acdbSymUtil()->blockModelSpaceId(pDB);
    9.         AcDbObjectPointer<AcDbBlockTableRecord> modelspace(IdModelSpace, AcDb::kForRead);
    10.         if (modelspace.openStatus() == Acad::eOk) {
    11.                 // Now let's iterate over all entities in the modelspace
    12.                 AcDbBlockTableRecordIterator* it = nullptr;
    13.                 es = modelspace->newIterator(it);
    14.                 if (it && (es == Acad::eOk)) {
    15.                         AcDbObjectId entityId;
    16.                         for (it->start(); !it->done(); it->step()) {
    17.                                 es = it->getEntityId(entityId);
    18.                                 AcDbObjectPointer<AcDbBlockReference> bref(entityId, AcDb::kForRead);
    19.                                 if (bref.openStatus() == Acad::eOk) {
    20.                                         // We found a BREF!
    21.                                         AcDbVoidPtrArray entitySet;
    22.                                         es = bref->explode(entitySet);
    23.                                         if (es == Acad::eOk) {
    24.                                                 brefFragments.append(entitySet);
    25.                                                 explodedBrefs.append(entityId);
    26.                                         }
    27.                                         // Don't append the fragments while iterating over the modelspace
    28.                                 }
    29.                         }
    30.                         delete it;
    31.                 }

    32.                 // Now append the new explosion fragment entities
    33.                 es = modelspace->upgradeOpen(); // must be write enabled now.
    34.                 for (void* p : brefFragments) {
    35.                         AcDbEntity* ent = (AcDbEntity*)p;
    36.                         es = modelspace->appendAcDbEntity(ent);
    37.                         if (es == Acad::eOk)
    38.                                 ent->close();
    39.                         else
    40.                                 delete ent; // avoid memory leak.
    41.                 }
    42.         }

    43.         // Now erase the exploded BREFs
    44.         for (AcDbObjectId& brefId : explodedBrefs) {
    45.                 AcDbObjectPointer<AcDbBlockReference> bref(brefId, AcDb::kForWrite);
    46.                 if (bref.openStatus() == Acad::eOk)
    47.                         bref->erase();
    48.         }
    49. }
    复制代码

     

     

     

     

    arx炸开图纸上所有的块
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

    GMT+8, 2024-11-1 10:19 , Processed in 0.170014 second(s), 24 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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