Teigha.net for CAD:使用LoadLineTypeFile加载部分含文字(形)的线型失败原因

在使用LoadLineTypeFile从线型文件中(如acad.lin加载部分含有文字(形)的线型的莫名其妙的出错,经过一段时间的百般查找原因,终于明白,如 db.LoadLineTypeFile(“BATTING”, lineFile),要加BATTING线型,该线型描述如下:
*BATTING,Batting SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
A,.0001,-.1,[BAT,ltypeshp.shx,x=-.1,s=.1],-.2,[BAT,ltypeshp.shx,r=180,x=.1,s=.1],-.1
从中可以看到字母“S”需要的字体(形)为“BAT”,支持该字体(形)的文件为“ltypeshp.shx”。在加载“BATTING”线型失败,是由于db中字体表中缺少“BAT”字体(形)记录,因此,需要预先加载该字体。加载代码可如下:

//load font style
TextStyleTable tst = db.TextStyleTableId.GetObject(Teigha.DatabaseServices.OpenMode.ForWrite) as TextStyleTable;
TextStyleTableRecord Bat = new TextStyleTableRecord();
Bat.Name = "BAT";
string shapeFile = Application.StartupPath + "\\ltypeshp.shx";
tst.Add(Bat);
Bat.IsShapeFile = true;//要放在后面
Bat.FileName = shapeFile;//要放在后面

现在就可以成功加载"BATTING"线型了:

LinetypeTable ltt = db.LinetypeTableId.GetObject(Teigha.DatabaseServices.OpenMode.ForWrite) as LinetypeTable;
string lineFile = Application.StartupPath + "\\acad.lin";
db.LoadLineTypeFile("BATTING", lineFile);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章