天气与日历 切换到窄版

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

[每日一码] ARX图层合并

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

    [LV.4]偶尔看看III

    105

    主题

    11

    回帖

    1308

    积分

    管理员

    积分
    1308
    QQ
    发表于 2024-3-14 20:01:36 | 显示全部楼层 |阅读模式
    图层合并
    将一个图层的所有对象转移到另一个图层,并删除原图层。
    1. AcDbObjectId eId;
    2. AcDbObject *pObj;
    3. AcDbEntity *pE;
    4. ads采用name ss;
    5. ads采用name ent;
    6. ads采用point pt;
    7. long len;
    8. char * layer采用tc1;
    9. char * layer采用tc2;
    10. struct resbuf eb;
    11. struct resbuf blc;
    12. int rc = acedEntSel("\n选择被合并图层实体:",ent,pt);
    13. switch(rc)
    14. {
    15. case RTERROR :
    16.   acutPrintf("\n未选中实体! ");
    17. break;
    18. case RTCAN :
    19.   acutPrintf("\n取消! ");
    20. break;
    21. case RTNORM :   
    22.   acdbGetObjectId(eId,ent);
    23.   acdbOpenObject(pE, eId, AcDb::kForRead, false);
    24.   layer采用tc1 = pE->layer();//查询实体所在的图层  
    25.   pE->close();
    26.   int rcc = acedEntSel("\n选择合并图层实体:",ent,pt);
    27.   switch(rcc)
    28.   {
    29.    case RTERROR :
    30.     acutPrintf("\n未选中实体! ");
    31.    break;
    32.    case RTCAN :
    33.     acutPrintf("\n取消! ");
    34.    break;
    35.    case RTNORM :      
    36.     acdbGetObjectId(eId,ent);
    37.     acdbOpenObject(pE, eId, AcDb::kForRead, false);
    38.     layer采用tc2 = pE->layer();   
    39.     pE->close();
    40.     eb.restype = 8;//层名
    41.     eb.resval.rstring = layer采用tc1;
    42.     eb.rbnext = NULL;
    43.     acedSSGet("X",NULL,NULL,&eb,ss);
    44.     free(eb.resval.rstring);
    45.     acedSSLength(ss,&len);
    46.     for(int i=0; i<len; i++)
    47.     {
    48.      acedSSName(ss,i,ent);
    49.      acdbGetObjectId(eId,ent);
    50.      acdbOpenObject(pE, eId, AcDb::kForWrite, false);
    51.      pE->setLayer(layer采用tc2);
    52.      pE->close();  
    53.     }
    54.     acedSSFree(ss);
    55.     blc.restype = RTSTR;
    56.     blc.resval.rstring = "0";
    57.     acedSetVar("CLAYER",&blc);//设置当前图层为0层  
    58.     AcDbLayerTable * pLayerTbl;//定义层表指针
    59.     acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pLayerTbl, AcDb::kForWrite);
    60.      
    61.     AcDbLayerTableRecord * pLayerTblRcd; //定义层表记录指针
    62.     if ( Acad::eOk == pLayerTbl->getAt(layer采用tc1 , pLayerTblRcd , AcDb::kForWrite))
    63.     {
    64.      pLayerTblRcd->erase(true);//删除图层
    65.     }   
    66.     pLayerTblRcd->close();
    67.     pLayerTbl->close();
    68.     free(layer采用tc2);
    69.    break;
    70.   }
    71.   free(layer采用tc);   
    72. break;
    73. }   
    复制代码

     

     

     

     

    [每日一码] ARX图层合并
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

    GMT+8, 2024-11-1 13:37 , Processed in 0.270236 second(s), 28 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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