- 积分
- 643
- 明经币
- 个
- 注册时间
- 2009-7-13
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
本人写了一段加载自定义线形文件,并给实体设置线形的代码,想实现根据YaoSDM设置线形的功能。自定义的线形都在CAD中加载并测试了,都没有问题(据此,我推断自定义的线形文件没问题)。代码运行后,一部分实体实现了线形设置(据此,我推断代码应该是没错的),另一部分却没有变化。我一行一行地对代码进行了跟踪调试,也没有问题,可是线形就是没有实现想要的效果。请各路高手给指导一二吧。
代码如下:
//线型文件符号化
public void setLineType(ObjectId id, string YaoSDM,string layerName)
{
Database db = HostApplicationServices.WorkingDatabase;
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
using (Transaction tr = db.TransactionManager.StartTransaction())
{
Entity ent = (Entity)tr.GetObject(id, OpenMode.ForWrite);
LinetypeTable ltt = tr.GetObject(db.LinetypeTableId, OpenMode.ForRead) as LinetypeTable;
#region 加载线型文件
if (!ltt.Has(YaoSDM))
{
try
{
db.LoadLineTypeFile(YaoSDM, @"E:\Referrence\CAD\填充图案和线形\线形文件\测绘线形及相关形文件\myline.lin");
LinetypeTableRecord lttr = (LinetypeTableRecord)tr.GetObject(ltt[YaoSDM], OpenMode.ForRead);
//ent.Linetype = YaoSDM;
ent.LinetypeId = lttr.ObjectId;
ent.Layer = layerName;
ed.WriteMessage("线型" + YaoSDM + "已实现!\n");
}
catch
{
ed.WriteMessage("要素代码" + YaoSDM + "的线型不存在!\n");
//YaoSDM = "CENTER";
//if (!ltt.Has(YaoSDM))
//db.LoadLineTypeFile(YaoSDM, @"C:\Program Files\AutoCAD 2008\Support\acadiso.lin");
}
}
else
{
LinetypeTableRecord lttr = (LinetypeTableRecord)tr.GetObject(ltt[YaoSDM], OpenMode.ForRead);
ent.Linetype = YaoSDM;
ent.Layer = layerName;
ed.WriteMessage("线型" + YaoSDM + "已实现!\n");
}
#endregion
db.LineWeightDisplay = true;
db.Ltscale = 0.5;
tr.Commit();
}
}
|
|