明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1574|回复: 0

合并图层问题.

[复制链接]
发表于 2005-7-1 21:00:00 | 显示全部楼层 |阅读模式
我在网上抄了一段代码放到工程里, 编译的时候出现"error C2065: 'layer_tc' : undeclared identifier"代码如下:
  1. //yfy2003
  2. //图层合并
  3. //将一个图层的所有对象转移到另一个图层,并删除原图层。 AcDbObjectId eId;
  4. //AcDbObject *pObj;
  5. AcDbEntity *pE;ads_name ss;
  6. ads_name ent;
  7. ads_point pt;
  8. long len;
  9. char * layer_tc1;
  10. char * layer_tc2;
  11. struct resbuf eb;
  12. struct resbuf blc;  
  13. int rc = acedEntSel("\n选择被合并图层实体:",ent,pt);
  14. switch(rc)
  15. {
  16.   case RTERROR :
  17.    acutPrintf("\n未选中实体! ");
  18.   break;  case RTCAN :
  19.    acutPrintf("\n取消! ");
  20.   break;  case RTNORM :     
  21.    acdbGetObjectId(eId,ent);
  22.    acdbOpenObject(pE, eId, AcDb::kForRead, false);
  23.    layer_tc1 = pE->layer();//查询实体所在的图层   
  24.    pE->close();   int rcc = acedEntSel("\n选择合并图层实体:",ent,pt);
  25.    switch(rcc)
  26.    {
  27.      case RTERROR :
  28.        acutPrintf("\n未选中实体! ");
  29.      break;     case RTCAN :
  30.        acutPrintf("\n取消! ");
  31.      break;     case RTNORM :           
  32.        acdbGetObjectId(eId,ent);
  33.        acdbOpenObject(pE, eId, AcDb::kForRead, false);
  34.        layer_tc2 = pE->layer();      
  35.        pE->close();       eb.restype = 8;//层名
  36.        eb.resval.rstring = layer_tc1;
  37.        eb.rbnext = NULL;
  38.        acedSSGet("X",NULL,NULL,&eb,ss);
  39.        free(eb.resval.rstring);       acedSSLength(ss,&len);
  40.        for(int i=0; i<len; i++)
  41.        {
  42.          acedSSName(ss,i,ent);
  43.          acdbGetObjectId(eId,ent);
  44.          acdbOpenObject(pE, eId, AcDb::kForWrite, false);
  45.          pE->setLayer(layer_tc2);
  46.          pE->close();   
  47.        }
  48.        acedSSFree(ss);       blc.restype = RTSTR;
  49.        blc.resval.rstring = "0";
  50.        acedSetVar("CLAYER",&blc);//设置当前图层为0层   
  51.        AcDbLayerTable * pLayerTbl;//定义层表指针
  52.        acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pLayerTbl, AcDb::kForWrite);
  53.          
  54.        AcDbLayerTableRecord * pLayerTblRcd; //定义层表记录指针
  55.        if ( Acad::eOk == pLayerTbl->getAt(layer_tc1 , pLayerTblRcd , AcDb::kForWrite))
  56.        {
  57.          pLayerTblRcd->erase(true);//删除图层
  58.        }      
  59.        pLayerTblRcd->close();
  60.        pLayerTbl->close();
  61.        free(layer_tc2);
  62.      break;
  63.    }
  64.    free(layer_tc);     
  65.   break;
  66. }
复制代码
就是红色字那里有问题,这个指针前面没有出现过.请问该怎么改啊.应该释放哪个指针变量.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 06:55 , Processed in 0.162139 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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