xhsd 发表于 2010-5-12 23:34:00

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

<p>/////////////////////////////////////////////////////////////////////////////////////</p><p>AcGePoint3d ptStart(x1, y1, 0.0);<br/>&nbsp;AcGePoint3d ptEnd(x2, y2, 0.0);<br/>&nbsp;AcDbLine *pLine = new AcDbLine(ptStart, ptEnd);</p><p><br/>&nbsp;//获得指向快表的指针<br/>&nbsp;AcDbBlockTable *pBlockTable;<br/>&nbsp;pDb-&gt;getSymbolTable(pBlockTable, AcDb::kForRead);</p><p>&nbsp;//获得指向特定的快表记录(模型空间)的指针<br/>&nbsp;AcDbBlockTableRecord *pBlockTableRecord;<br/>&nbsp;pBlockTable-&gt;getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite);<br/>&nbsp;pBlockTable-&gt;close();</p><p><br/>&nbsp;//将AcDbLine类的对象添加到快表记录中<br/>&nbsp;AcDbObjectId lineId;<br/>&nbsp;pBlockTableRecord-&gt;appendAcDbEntity(lineId, pLine);</p><p><br/>&nbsp;//关闭图形数据库的各种对象<br/>&nbsp;pBlockTableRecord-&gt;close();</p><p>&nbsp;pLine-&gt;setLayer("虚线层");</p><p>&nbsp;pLine-&gt;setColorIndex(3);</p><p>&nbsp;pLine-&gt;close();</p><p>&nbsp;return lineId;</p><p>/////////////////////////////////////////////////////////////////////////////////////</p><p>在上述代码中,设置图层setLayer的时候不起作用,线的图层一直是0,设置颜色起作用,不知道为什么,请高手指点</p>

xgready 发表于 2011-5-14 11:37:29

原因很简单,你当前的Dwg文件中没有你设置的那个虚线层。最好的方法是在设置实体图层前先判断一下是否存在该图层,如果不存在则新建一个图层,然后进行实体的图层设置。

chpmould 发表于 2011-5-18 23:02:23

xgready 发表于 2011-5-14 11:37 static/image/common/back.gif
原因很简单,你当前的Dwg文件中没有你设置的那个虚线层。最好的方法是在设置实体图层前先判断一下是否存在该 ...

如何写先判断一下是否存在该图层,如果不存在则新建一个图层。。。

松竹 发表于 2011-5-19 21:15:51

使用函数:AcDbSymbolUtilities::hasLayer(const char * name, AcDbDatabase * pDb);判断即可。

chpmould 发表于 2011-5-22 13:30:06

本帖最后由 chpmould 于 2011-5-22 16:02 编辑

松竹 发表于 2011-5-19 21:15 http://bbs.mjtd.com/static/image/common/back.gif
使用函数:AcDbSymbolUtilities::hasLayer(const char * name, AcDbDatabase * pDb);判断即可。

能否写个在一个新建层中增加一个线型简单的例子...例如:如何增加中心线

hourui800720 发表于 2011-7-13 14:54:45

也是遇到同样的问题,而且颜色设置也没有什么反应。
页: [1]
查看完整版本: [求助]实体图层设置问题