//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;
}
0人已收藏
0人已打赏
免费0人已点赞
分享
CAD下载及教程
返回版块52.09 万条内容 · 682 人订阅
回帖成功
经验值 +10
全部回复(6 )
只看楼主 我来说两句-
施工cad
沙发
军长的程序真高,可惜我一点不懂这种语言。
2007-10-11 15:08:11
赞同0
-
toeastone
板凳
高手,反正我不懂。。
2007-03-28 12:24:28
赞同0
加载更多回复 举报
回复 举报