AUTOCAD文字線型格式完全解讀及C#實現方法


在.lin線型文件中“;;”代表注釋行。因此我們可以利用它來添加一些注釋性文字,以增強文件的可讀性。 每種線型都可以定義為兩行,第一行定義線型的名稱和線型說明。行首必須是以“*”開始,其后是線型名稱。線型的描述也是起一個直觀的注釋作用,最好加上,不過這種描述 不能超過47個字符。第二行才是真正描述線型的代碼。行首的“A”代表對齊方式。在這種對齊方式下,第一個參數的值應該大於或等於0,第二個參數的值應該小於0。簡單地說 :正值表示落表,AutoCAD會畫出一條相應長度的實線;0表示畫一個點;負值則表示提筆,AutoCAD會提筆空出相應長度。我們可以想像成繪圖筆的工作過程,就很容易理解 了。要注意的是,這些字符之間以半角的逗號隔開,每一行結束必須按回車鍵,最后一行也不例外。另外,在*.LIN文件中,每個線型文件最多可容納280個字符。 *linetypeName,lineTypeDescription A,linelength,spacelength1,["text",textstylename,scale,rotation,xoffset,yoffset],spacelength2

下面介紹了有關字符描述符中每個字段的附加信息要使用的值是帶符號的十進制數字,例如 1-17 和 0.01.

1. text

要在線型中使用的字符.

2. text style name

要使用的文字樣式的名稱如果未指定文字樣式,AutoCAD 將使用當前定義的樣式.

3. scale

S=要用於文字樣式的縮放比例與線型的比例相關文字樣式的高度需乘以縮放比例如果高度為 0,則 S=值的值本身用作高度.

4. rotation

R=值或A=. R= 指定相對於直線的相對或相切旋轉. A= 指定文字相對於原點的絕對旋轉;即所有文字不論其相對於直線的位置如何,都將進行相同的旋轉可以在值后附加 表示度(度為默認值),附加 表示弧度,或者附加 表示百分度如果省略旋轉,則相對旋轉為 0.

旋轉是圍繞基線和實際大寫高度之間的中點進行的.

5. xoffset

X=文字在線型的 軸方向上沿直線的移動如果省略 xoffset 或者將其設置為 0,則文字將沒有偏移,並且會變得復雜使用該字段控制文字與前面提筆或落筆筆划間的距離該值不能按照 S=值定義的縮放比例進行縮放,但是它可以根據線型進行縮放.

6. yoffset

Y=文字在線型的 軸方向垂直於該直線的移動如果省略 yoffset 或者將其設置為 0,則文字將沒有偏移,並且會變得復雜使用此字段控制文字相對於直線的垂直對齊該值不能按照 S=值定義的縮放比例進行縮放,但是它可以根據線型進行縮放.

熱水線型的定義:

-------------------------------------------------------------------------------

*HOT_WATER_SUPPLY,Hot water supply ---- HW ---- HW ---- HW ----

A,.5,-.2,["HW",STANDARD,S=.1,R=0.0,X=-0.1,Y=-.05],-.2

--------------------------------------------------------------------------------

第一行沒有什么特別的,跟簡單線型定義一樣,是線型名和線型的簡單描述。

第二行的A當然是對齊符號,數字的意義仍然與前面一樣。我們集中精力來看文本的嵌入。   “HW”是嵌入的文本,注意必須加上雙引號。“STANDARD”是文本式樣的名字,如果當前圖形中沒有該樣式,則AutoCAD不允許使用該線型。   “S=.1”確定文本的比例系數為0.1。如果使用固定高度的文本,AutoCAD會將此高度乘以比例系統數;如果使用的是可變高度的文本,則AutoCAD會把比例系統數看成絕 對高度。   “R=0”表示文本相對於當前線段方向的轉角。0表示文本與所給線段方向一致,這也是缺省值。   “X=-.1,Y=-.0.05”為可選項,它們確定相對於當前點的偏移量。缺省時AutoCAD將文本字符串的左下角點放在此當前點。X就是當前線段的方向,Y則是垂直於線段向上的 方向。這兩個偏移量將使文本的定位更精確。  

以熱水線型的定義過程為例:

線型定義:

-------------------------------------------------------------------------------

*HOT_WATER_SUPPLY,Hot water supply ---- HW ---- HW ---- HW ----

A,.5,-.2,["HW",STANDARD,S=.1,R=0.0,X=-0.1,Y=-.05],-.2

--------------------------------------------------------------------------------

 

c#實現定義過程:

 LinetypeTableRecord ltr =new LinetypeTableRecord();

ltr.Name = "HOT_WATER_SUPPLY";(第一行*號后的部分)

ltr.AsciiDescription = "HOT_WATER_SUPPLY ---- HW ---- HW ---- HW ----";(第一行逗號后面的部分)

ltr.PatternLength = 0.9;(0.5+0.2+0.2=0.9)

ltr.NumDashes = 3(一段實線,兩段留白);

// Dash #1

ltr.SetDashLengthAt(0, 0.5);(第一段為實線,長度0.5)

// Dash #2

ltr.SetDashLengthAt(1, -0.2);(第二段為留白,長度為0.2)

ltr.SetShapeStyleAt(1, tt["Standard"]);(在第二段處嵌入文字,注意:嵌入文字不影響任何尺寸的計算)

ltr.SetShapeNumberAt(1, 0);(嵌入文字,1表示dash的索引值,0表示文字的索引值??用於插入多行文字?)

ltr.SetShapeOffsetAt(1, new Vector2d(-0.1,-0.05));(設置文字的偏移量)

ltr.SetShapeScaleAt(1, 0.1);(設置文字的縮放,由於["Standard"]);是可變高度的文本,則AutoCAD會把比例系統數看成絕對高度,即文字高度為0.1) ltr.SetShapeRotationAt(1, 0);(設置文字的旋轉角度)

ltr.SetTextAt(1, "CW");(設置文字的內容)

// Dash #3 ltr.SetDashLengthAt(2, -0.2);(第三段為留白,長度為0.2)

ObjectId ltId = lt.Add(ltr);

tr.AddNewlyCreatedDBObject(ltr, true);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM