土木在线论坛 \ 建筑设计 \ CAD下载及教程 \ [ARX]图层合并程序。

[ARX]图层合并程序。

发布于:2004-05-19 20:25:19 来自:建筑设计/CAD下载及教程 [复制转发]
将一个图层的所有对象转移到另一个图层,并删除原图层。


//by yfy2003
//2004/5/19

AcDbObjectId eId;
AcDbObject *pObj;
AcDbEntity *pE;

ads_name ss;
ads_name ent;
ads_point pt;
long len;
char * layer_tc1;
char * layer_tc2;
struct resbuf eb;
struct resbuf blc;


int rc = acedEntSel("\\nn选择被合并图层实体:",ent,pt);
switch(rc)
{
case RTERROR :
acutPrintf("\\nn未选中实体! ");
break;

case RTCAN :
acutPrintf("\\nn取消! ");
break;

case RTNORM :
acdbGetObjectId(eId,ent);
acdbOpenObject(pE, eId, AcDb::kForRead, false);
layer_tc1 = pE->layer();//查询实体所在的图层
pE->close();

int rcc = acedEntSel("\\nn选择合并图层实体:",ent,pt);
switch(rcc)
{
case RTERROR :
acutPrintf("\\nn未选中实体! ");
break;

case RTCAN :
acutPrintf("\\nn取消! ");
break;

case RTNORM :
acdbGetObjectId(eId,ent);
acdbOpenObject(pE, eId, AcDb::kForRead, false);
layer_tc2 = pE->layer();
pE->close();

eb.restype = 8;//层名
eb.resval.rstring = layer_tc1;
eb.rbnext = NULL;
acedSSGet("X",NULL,NULL,&eb,ss);
free(eb.resval.rstring);

acedSSLength(ss,&len);
for(int i=0; i {
acedSSName(ss,i,ent);
acdbGetObjectId(eId,ent);
acdbOpenObject(pE, eId, AcDb::kForWrite, false);
pE->setLayer(layer_tc2);
pE->close();
}
acedSSFree(ss);

blc.restype = RTSTR;
blc.resval.rstring = "0";
acedSetVar("CLAYER",&blc);//设置当前图层为0层


AcDbLayerTable * pLayerTbl;//定义层表指针
acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pLayerTbl, AcDb::kForWrite);

AcDbLayerTableRecord * pLayerTblRcd; //定义层表记录指针
if ( Acad::eOk == pLayerTbl->getAt(layer_tc1 , pLayerTblRcd , AcDb::kForWrite))
{
pLayerTblRcd->erase(true);//删除图层
}
pLayerTblRcd->close();
pLayerTbl->close();
free(layer_tc2);
break;
}
free(layer_tc);
break;
}


全部回复(6 )

只看楼主 我来说两句
  • 施工cad
    施工cad 沙发
    军长的程序真高,可惜我一点不懂这种语言。
    2007-10-11 15:08:11

    回复 举报
    赞同0
  • toeastone
    toeastone 板凳
    高手,反正我不懂。。
    2007-03-28 12:24:28

    回复 举报
    赞同0
加载更多
这个家伙什么也没有留下。。。

CAD下载及教程

返回版块

52.09 万条内容 · 682 人订阅

猜你喜欢

阅读下一篇

[求助]].adf和.aml格式文件用什么软件打开?

.adf和.aml格式文件用什么软件打开? 谢谢!

回帖成功

经验值 +10