我想看一级黄色大片_久久亚洲国产精品一区二区_久久精品免视看国产明星_91久久青青青国产免费

您的位置:網站首頁 > CAD新聞

用.Net在AutoCAD中創建包含文字的線型

時間:2010-01-23 23:49:03 來源:
在Kean這篇文章(Creating a complex AutoCAD linetype containing text using .NET)的啟發下,修改了一個創建文字線型的函數,按自己的理解補充了一些注釋;增加了重復添加線型記錄時出現錯誤的修。在繪圖時把圖形實體指定為本線型就可以了。

代碼如下:

[code=csharp]///


/// 創建帶文字的線型
///
/// 返回線型ID
public static ObjectId CreateLineTypeWithText()
{
Document doc =
Autodesk.AutoCAD.ApplicationServices.
Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
Transaction tr =db.TransactionManager.StartTransaction();
using (tr)
{
// 讀出文字樣式表
TextStyleTable tt =
(TextStyleTable)tr.GetObject(db.TextStyleTableId,
OpenMode.ForRead);
// 讀出線型表
LinetypeTable lt =
(LinetypeTable)tr.GetObject(db.LinetypeTableId,
OpenMode.ForWrite);

if (lt.Has("Ben"))
{
return lt["Ben"];
}
else
{
// 創建新的線型記錄.
LinetypeTableRecord ltr = new LinetypeTableRecord();
// ...設置線型記錄特性
ltr.Name = "Ben";
ltr.AsciiDescription =
"Ben Supply ---- Ben ---- Ben ---- Ben ----";
ltr.PatternLength = 1.1;
ltr.NumDashes = 3; //分為三段
// 線段Dash #1
ltr.SetDashLengthAt(0, 0.5);
// 線段Dash #2
ltr.SetDashLengthAt(1, -0.3);
ltr.SetShapeStyleAt(1, tt["Standard"]);//文字樣式設定
ltr.SetShapeNumberAt(1, 0);
//文字位置設定,用一二維向量控制
ltr.SetShapeOffsetAt(1, new Vector2d(-0.1, -0.05));
ltr.SetShapeScaleAt(1, 0.1);//文字比例
ltr.SetShapeIsUcsOrientedAt(1, false);
ltr.SetShapeRotationAt(1, 0);//文字方向,0為順直接方向
ltr.SetTextAt(1, "Ben");//文字內容
// 線段Dash #3
ltr.SetDashLengthAt(2, -0.3);
// 添加新的線型記錄到線型表
ObjectId ltId = lt.Add(ltr);
tr.AddNewlyCreatedDBObject(ltr, true);
tr.Commit();

return ltId;//返回線型記錄ID
}
}
}[/code]