天气与日历 切换到窄版

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

将图块中的不同图层统一

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

    [LV.6]常住居民II

    410

    主题

    167

    回帖

    2704

    积分

    管理员

    积分
    2704
    发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
    void test()
    {
            // 得到层ID
            AcDbObjectId layerId;
            AcDbLayerTable *pLayerTbl = NULL;
            if (acdbHostApplicationServices()->workingDatabase()
                    ->getLayerTable(pLayerTbl, AcDb::kForRead) != Acad::eOk)
                    return;
            if (pLayerTbl->getAt("0", layerId) != Acad::eOk)
            {
                    pLayerTbl->close();
                    return;
            }
            pLayerTbl->close();
          
            // 打开块表进行操作
            Acad::ErrorStatus es;
            AcDbBlockTable *pBlockTable = NULL;
        es = acdbHostApplicationServices()->workingDatabase()
            ->getSymbolTable(pBlockTable, AcDb::kForRead);
            if (es != Acad::eOk) return;
          
            AcDbBlockTableIterator *pBlkIter = NULL;
            if (pBlockTable->newIterator(pBlkIter) != Acad::eOk)
            {
                    pBlockTable->close();
                    return;
            }
            pBlockTable->close();
          
            // 遍历所有块表记录,找出插入快,设置新层
            AcDbBlockTableRecord *pRecord = NULL;
            AcDbBlockTableRecordIterator *pRcdIter = NULL;
            AcDbEntity *pEnt = NULL;
            AcDbObjectIdArray Ids;
            for (; !pBlkIter->done(); pBlkIter->step())
            {
                    if (pBlkIter->getRecord(pRecord, AcDb::kForWrite) != Acad::eOk)
                    {
                            continue;
                    }
                    // 判断是否是插入块
                    if (pRecord->getBlockReferenceIds(Ids) != Acad::eOk || Ids.length() == 0)
                    {
                            pRecord->close();
                            continue;
                    }
                   
                    if (pRecord->newIterator(pRcdIter) != Acad::eOk)
                    {
                            pRecord->close();
                            continue;
                    }
                    // 遍历该块表记录,设置新层
                    for (; !pRcdIter->done(); pRcdIter->step())
                    {
                            if (pRcdIter->getEntity(pEnt, AcDb::kForWrite) != Acad::eOk)
                            {
                                    continue;
                            }
                            pEnt->setLayer(layerId);
                            pEnt->close();
                    }
                    delete pRcdIter;
                    pRcdIter = NULL;
                    pRecord->close();
            }
          
            delete pBlkIter;
            pBlkIter = NULL;
          
            acDocManager->sendStringToExecute(acDocManager->curDocument(), "regen ");
    }

     

     

     

     

    将图块中的不同图层统一
    中国膜结构网打造全中国最好的膜结构综合平台 ,统一协调膜结构设计,膜结构施工,膜材采购,膜材定制,膜结构预算全方位服务。 中国空间膜结构协会合作单位。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

    GMT+8, 2024-7-1 05:35 , Processed in 0.056718 second(s), 22 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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