明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3400|回复: 5

[求助]实体图层设置问题

[复制链接]
发表于 2010-5-12 23:34:00 | 显示全部楼层 |阅读模式

/////////////////////////////////////////////////////////////////////////////////////

AcGePoint3d ptStart(x1, y1, 0.0);
 AcGePoint3d ptEnd(x2, y2, 0.0);
 AcDbLine *pLine = new AcDbLine(ptStart, ptEnd);


 //获得指向快表的指针
 AcDbBlockTable *pBlockTable;
 pDb->getSymbolTable(pBlockTable, AcDb::kForRead);

 //获得指向特定的快表记录(模型空间)的指针
 AcDbBlockTableRecord *pBlockTableRecord;
 pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite);
 pBlockTable->close();


 //将AcDbLine类的对象添加到快表记录中
 AcDbObjectId lineId;
 pBlockTableRecord->appendAcDbEntity(lineId, pLine);


 //关闭图形数据库的各种对象
 pBlockTableRecord->close();

 pLine->setLayer("虚线层");

 pLine->setColorIndex(3);

 pLine->close();

 return lineId;

/////////////////////////////////////////////////////////////////////////////////////

在上述代码中,设置图层setLayer的时候不起作用,线的图层一直是0,设置颜色起作用,不知道为什么,请高手指点

发表于 2011-5-14 11:37:29 | 显示全部楼层
原因很简单,你当前的Dwg文件中没有你设置的那个虚线层。最好的方法是在设置实体图层前先判断一下是否存在该图层,如果不存在则新建一个图层,然后进行实体的图层设置。
发表于 2011-5-18 23:02:23 | 显示全部楼层
xgready 发表于 2011-5-14 11:37
原因很简单,你当前的Dwg文件中没有你设置的那个虚线层。最好的方法是在设置实体图层前先判断一下是否存在该 ...

如何写先判断一下是否存在该图层,如果不存在则新建一个图层。。。
发表于 2011-5-19 21:15:51 | 显示全部楼层
使用函数:AcDbSymbolUtilities::hasLayer(const char * name, AcDbDatabase * pDb);判断即可。
发表于 2011-5-22 13:30:06 | 显示全部楼层
本帖最后由 chpmould 于 2011-5-22 16:02 编辑
松竹 发表于 2011-5-19 21:15
使用函数:AcDbSymbolUtilities::hasLayer(const char * name, AcDbDatabase * pDb);判断即可。


能否写个在一个新建层中增加一个线型简单的例子...例如:如何增加中心线
发表于 2011-7-13 14:54:45 | 显示全部楼层
也是遇到同样的问题,而且颜色设置也没有什么反应。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-29 03:49 , Processed in 0.165427 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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