明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2059|回复: 4

[求助]创建多个图层的问题

[复制链接]
发表于 2009-2-18 15:23:00 | 显示全部楼层 |阅读模式
AcDbObjectId CCreateEnt::CreatLayer (char layername[100],int nNewColor,int Weight,char linetype[50])
{
// 获得当前图形的层表
AcDbLayerTable *pLayerTbl;
acdbHostApplicationServices()->workingDatabase()
  ->getLayerTable(pLayerTbl, AcDb::kForWrite);

// 创建新的层表记录
AcDbObjectId layerTblRcdId;
AcDbLayerTableRecord *pLayerTblRcd;
pLayerTblRcd = new AcDbLayerTableRecord();
pLayerTblRcd->setName(layername);
AcCmColor color;
color.setColorIndex(nNewColor);
pLayerTblRcd->setColor(color);
AcDb::ineWeight lineWeight =(AcDb::ineWeight)Weight;
pLayerTblRcd->setLineWeight(lineWeight);
AcDbLinetypeTable *pLinetypeTbl;
acdbHostApplicationServices()->workingDatabase()
  ->getLinetypeTable(pLinetypeTbl, AcDb::kForWrite);
AcDbObjectId linetypeId;
pLinetypeTbl->getAt(linetype, linetypeId);
pLayerTblRcd->setLinetypeObjectId(linetypeId);

// 将新建的层表记录添加到层表中

pLayerTbl->add(layerTblRcdId, pLayerTblRcd);
pLayerTbl->close();
pLayerTblRcd->close();
return layerTblRcdId;
}


这是 我 编写的 创建图层的 函数,我在调用时如果调用一次 运行可以成功,但当调用2次 或多次的时候 CAD就运行错误,请 高手给解决一下!  谢谢了!
以下我是的调用过程,在下初学者,请多多指教!
  char name2[]="02";
  char name3[]="03";
  char linetype1[]="CENTER";
  char linetype2[]="DASHED";
  char linetype3[]="Continuous";
CCreateEnt::CreatLayer(name1,1,0,linetype1);
  CCreateEnt::CreatLayer(name2,50,0,linetype2);
  CCreateEnt::CreatLayer(name3,100,30,linetype3);
 楼主| 发表于 2009-2-18 16:47:00 | 显示全部楼层
补充:  设置线宽那句少了一个 l 是我刚才输入时不小心弄的,我程序里不少l
发表于 2009-2-18 17:41:00 | 显示全部楼层

不想再调试了

出错的提示呢?

 楼主| 发表于 2009-2-19 12:23:00 | 显示全部楼层

啊 问题已经解决了   是 没有关闭 线型表.... 

谢谢!

发表于 2012-2-29 23:56:01 | 显示全部楼层
这个有点高深,没用过这个。以后再看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 08:41 , Processed in 0.139602 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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