AUTOCAD文字线型格式完全解读及C#实现方法

时间:2024-02-20 21:45:50

在.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);