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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章