姚丽华
(河北省水利水电勘测设计研究院,天津 300250)
AutoCAD线型二次开发在工程制图中的应用
姚丽华
(河北省水利水电勘测设计研究院,天津 300250)
AutoCAD软件系统中提供了标准线型文件,同时也为用户的二次开发留出了接口,即用户可以定制自己的线型文件以满足不同的需要。文章简要介绍了开发线型文件和形文件的基本方法,并介绍了工程制图中堤防线、铁路线、长城符号等几种常用线型的定义方法。
线型文件;复杂线型;定制线型;形文件;堤防线;铁路线
在AutoCAD的SUPPORT子目录中,可以找到ACAD.LIN或ACADISO.LIN文件,这就是AutoCAD的线型文件。其中包含了AutoCAD已经定义的各种线型。在新建的AutoCAD图形文件中,只有CONTINUOUS(实线)这一种线型,要想应用更多的线型,必须首先装载线型文件。
AutoCAD的线型分简单线型与复杂线型两种,简单线型是指由线、空、点组成的线型,而复杂线型除了可以有线、空、点外,其间还可嵌套文本串或形。线型文件可以由用户编辑或重新创建。只要掌握了线型的定义方法,就可以方便地定制自己所需要的线型。在绘制流域图、工程布置图等图形中经常遇到的堤防线、铁路线及长城符号等,都可以定制为AutoCAD中的线型,这样,绘制图元就和画一般的多义线一样轻松自如了。
线型文件中包含注释语句和线型定义语句。注释语句用分号开头,它们没有实际意义,和BASIC语言中的REM语句,以及FORTRAN语言中的“C”是同样的作用,它可以是对线型的简要说明或标记。每个线型文件中可以定义一个或多个线型,每一个线型定义包括两行:标题行和定义行。
定义简单线型的格式为:
*线型名[,线型描述]
A,<线型定义>
其中:“*”为一种线型定义的开始;“BORDER”是这种线型的名字;“____.____”是对这种线型的描述,这项可以省略;“A”对准方式,保证线的两端均以划线开始或结束;A后面即是线型定义的内容。用逗号把各项内容分开。
线型定义的规则为:正值为落笔的长度,负值为抬笔的长度,点用0表示。在上例中定义的线型的实际效果为:0.5个单位短线,0.25个单位间隔,后接0.5个单位短线,空0.25个单位后画点,0.25个单位间隔……依此循环。
在制图过程中,可以根据图纸的大小来适当地调整线型比例,以达到满意的效果。上述线型的线型比例为1和5时,得到的线型为:
用简单线型定义的方法可以定义一种非常简单但非常有用的线型,线型定义内容:
这种线型类似于虚线,特点是线与空等长。用这种线型再辅以两条平行线,可以实现铁路线的绘制。不管铁路是多么曲折,这样画出的铁路线都会非常平滑、均匀,而且是由3条平行的多义线组成的图形,修改起来非常方便。
定义简单线型的规则同样适用于定义复杂线型,只是复杂线型在“线型定义”部分增加了嵌套文本串或形的内容。
嵌套文本串的格式为:
上面各项含义如下:“string”是需要嵌入的文字串,该文字串必须用双引号括起来;“style”是Auto-CAD中已经定义过的字型名字,如果此处输入的字型名字在AutoCAD中没有定义,则在加载这个线型文件时会出现错误;“shape_file”是AutoCAD的形文件名,其中包含着若干个形的定义;“shape”是“shape_file”中的一种形的名字;n1、n2、n3、n4、n5都是需要给出的变量:“R=n1”是所嵌套的文字串或形相对于当前画线方向的倾斜角度,为可选项,缺省时,R=0,表示所嵌套文本或形与所画线的方向相同;“A=n2”是指所嵌套的文字串或形相对于世界坐标系(WCS)X轴的倾斜角度,为可选项,缺省时,A=0,表示所嵌套文本或形总是保持水平;“S=n3”决定所嵌套的文字串或形的比例系数,对于文本来说,如果所用字型是定高度的,那么该高度值的n3倍就是所嵌套的文字串的高度,如果所用字型没有定义高度,那么n3就是所嵌套的文字串的高度;对于形而言,此值就是原形的缩放系数;“X=n4”“Y=n5”确定所嵌套文本串或形相对于线型定义所确定的当前点的偏移量。缺省时,AutoCAD把当前点(即嵌套文本或形之前笔的位置)作为所嵌套文本串的左下角点或所嵌套形的插入点。
嵌套文本串例子:
因为“A”保证线的两端均以划线开始和结束,所以两端的短线作了调整。
嵌套形的例子:
TRACK1是名为“ltypeshp.shx”的形文件中定义的一个形,长度为2个单位,插入点为线的中点。插入文本串或形时,笔的位置不会随着文本串或形移动,后面的内容仍然从插入点开始,所以要想在线条中间插入文本串或形,必须根据文本串或形的长度及缩放比例留出足够的间隔。
不论是简单线型还是复杂线型,线型定义的内容不得少于2项,不得超过12项(不包括嵌套的文本串或形)。
在复杂线型定义中用到的形与块有相同的特点:占用内存少,可以作为一个整体被其他图形调用。不同之处是:块可以是任意的图形,制作方便灵活,而形只是由线、弧定义出来的特殊图元,且形的定义比较麻烦,所以形常用于简单图形,如字体、常用符号等。但是形在复杂线型定义中的作用是块无法取代的。
形文件中也包含注释语句和定义语句。同样,分号作为注释行的标记。
形的定义包括两行:标题行和定义行。
其格式为:*形编号,定义字节数,形名称。
形编号为1~255之间的整数,其中1~127号用于字体形文件的定义,128~255号留给用户使用。定义字节数是指所定义的总字节数,形定义中用逗号隔开的数字为1个字节。对于用户自定义的形,形名称的命名规则是除了不能用小写字母其他同普通变量的命名。
3.2.1 用指定的方向和长度定义
AutoCAD规定的方向和长度见图1。
其中0-F为方向代号,如0代表0°,1代表22.5°,8代表180°;各个方向代表的实际长度不同,如0方向1个单位代表实际长度1,方向2上的1个单位实际长度为1.414。
形定义的每个字节由一个3位数的十六进制数组成:如“02C”,第一位的“0”表示十六进制数,第二位表示线的长度,第三位数表示方向。形定义一行的最后一个字节为0,表示形定义结束。
例如要定义图2,取名为“三角”,形文件定义为:
图1 形定义的方向规定
图2 形定义举例
用上述方法适用于定义一笔完成的简单图形,且图中均为线条组成,并且线条的长度要符合图中的规律。
3.2.2 用特殊码定义
特殊码共有12种。
(1)“000”表示形定义结束。此项同第一种定义方法。(2)“001”代表落笔。(3)“002”代表抬笔。(4)“003”表示以后的长度均除以下一个字节的值,即缩小若干倍。
(5)“004”表示以后的长度均乘以下一个字节的值,即扩大若干倍。
(6)“005”表示将当前笔的位置存入堆栈(以便以后引用)。
(7)“006”表示将堆栈中的坐标位置取出作为当前笔的位置。
(8)“007”表示转向子型,子型的编码由下一字节给出。
(9)“008”表示接着两个字节给出笔的相对位置;为了表达的更加明白,坐标值可用括号括起来。
(10)“009”表示后面是多组移动的坐标,(0,0)表示坐标移动结束。用于绘制折线。
(11)“00A”表示后面画整段圆弧;格式为:00A,半径,±0SC。
其中:“半径”为1~255间整数;“±”为圆弧方向,“+”为反时针(+号可省略);“S”为圆弧起点的半径方向,如图3(a);“C”为画几个1/8圆弧数,“C”的取值为0~7之间的整数,C=0时,画整个圆弧;C=1时,所画圆弧角度为45°(即1/8圆弧),C=2时,所画圆弧角度为90°,依此类推。
如果想定义图3(b),定义可写成:
图3 特殊码定义形文件
(12)“00B”表示后面画非整段圆弧;格式为:00B,起点偏移量,终点偏移量,高位半径,低位半径,±0SC。
起点偏移量计算方法:设α1=弧线起点角度,β1=小于α1且离α1最近的1/8角,则起点偏移量=(α1-β1)×256/45。
终点偏移量计算方法:设α2=弧线终点角度,β2=小于α2且离α2最近的1/8角,则终点偏移量=(α2-β2)×256/45。
因为在形定义中不允许出现小数,所以起点偏移量和终点偏移量都要取整。
高位半径与低位半径:因为1个字节所能表示的最大十六进制数为FF,换算成十进制数为255,所以当半径值大于255时,就需要用两个值来表示半径。①当R≤255时,高位半径为0,低位半径可以用十六进制数表示,也可以用十进制数表示。②当R>256时,高位半径=R/256取整,低位半径=(R/256)的余数;如要画R=260的圆弧,高位半径=1,低位半径=4。③当R=256时,高位半径取值应为1,低位半径取值应为0,但是这种定义为形的编译时被告知为“非法”,所以半径为256的圆弧无法用这种方法直接画出;这时可以把半径的取值减小若干倍作成形,然后在插入形时再扩大若干倍。④±0SC:±为圆弧方向;S、C分别为起点、终点近处的1/8角度(β1、β2)的半径方向。
例如:要画一段半径为4、从50°~110°的圆弧,如图4所示,首先计算起点偏移量和终点偏移量。
起点偏移量=(50-45)×256/45=28.44≈28
终点偏移量=(110-90)×256/45=113.78≈114
高位半径为0,低位半径为4;S=1,C=2;
形定义内容为:
*145,7,YUANHU
00B,28,114,0,4,012,0
以上12种代码也可以用十进制数表示为0、1、2、……、9、10、11。
把形定义的两种方法结合使用,就可以制作任意的图形。
图4 非整段圆弧的定义
可以编辑的形文件后缀为.SHP,必须经过编译变成SHX型才能被图形调用。在AutoCAD中,用COMPILE命令完成形文件的编译,LOAD命令把编译过的型文件加载到图形中,然后用SHAPE命令调用形或者在线型定义中引用定义的形。
在工作过程中,开发制作了形文件与线型文件,举例如下:
(1)形文件命名为LTSHPYYY.SHP,内容如下:
;;;
在AutoCAD中,用COMPILE命令对文件Ltshpyyy.shp进行编译,生成一个Ltshpyyy.shx型文件,在线型定义中就可以调用这个型文件中的形。
使用自定义线型绘制的多义线如图5。
新定义的线型和形可以添加到AutoCAD的标准线型文件或形文件中,也可以独立组成新的文件,建议采用后者,这样在重装软件时不至于丢失自定义的内容。
AutoCAD已经成为设计人员工作过程中不可或缺的应用软件之一,其应用降低了设计人员的劳动强度,提高了工作效率和成果质量。
[1]魏祥武.AutoCAD线型的二次开发[J].辽宁省交通高等专科学校学报,2006(3).
[2]崔素华,张锡爱,崔治辉.基于CAD的线型开发[J].机械管理开发,2009(4).
[3]鲁东枝.合理利用和开发线型加快绘图速度与质量[J].山西建筑,2010(3).
[4]尤畅.AutoCAD在绘制工程图中的灵活运用[J].机械,2006(11).
[5]袁太文,李迅波.CAD线型定制技术的研究及实现[J].实用测试技术,2002(1).
[6]范富才,于海艳,姚涵珍.AutoCAD2005的线型开发技术[J].机械,2006(S1).
Application of Secondary Development of AutoCAD Linear File in Engineering Drawing
YAO Li-hua
(Hebei Research Institute of Investigation&Design of Water Conservancy&Hydropower,Tianjin 300250,China)
The AutoCAD software system provides not only the standard linetype file,but also the interface for secondary development.Users can customize their own linetype files to meet the different needs.This paper introduces the basic methods of developing new linetype and shape file,and the linear definition methods in engineering drawing,such as dike,railway,the Great Wall and other commonly used linear symbols.
linear file;complex linear;custom-built linear;shape file;dike line;railway line
TV222.1
B
1672-9900(2014)02-0059-05
2014-01-02
姚丽华(1968-),女(汉族),河北石家庄人,高级工程师,主要从事水文规划工作,(Tel)13920229733。