第8章 编程实例 清华CAD二次开发 LISP_第1页
第8章 编程实例 清华CAD二次开发 LISP_第2页
第8章 编程实例 清华CAD二次开发 LISP_第3页
第8章 编程实例 清华CAD二次开发 LISP_第4页
第8章 编程实例 清华CAD二次开发 LISP_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 8 章 编程实例8.18.1设置作图环境设置作图环境 编程作图和交互作图一样,也需要设置作图的环境,例如编程作图和交互作图一样,也需要设置作图的环境,例如图纸的范围、绘图的单位、目标捕捉的类型、图层、颜色、线图纸的范围、绘图的单位、目标捕捉的类型、图层、颜色、线型、线宽、字样等,如果缺少对作图环境的设置,只能是利用型、线宽、字样等,如果缺少对作图环境的设置,只能是利用加载程序时加载程序时AutoCADAutoCAD提供的默认环境。提供的默认环境。 设置一个合适的作图环境不仅可以提高作图的精度和效率,设置一个合适的作图环境不仅可以提高作图的精度和效率,有时还会影响到所绘制的图纸是否符合企业的

2、规范和满足生产有时还会影响到所绘制的图纸是否符合企业的规范和满足生产的需要。的需要。 用程序实现设置作图环境的功能可以通过用程序实现设置作图环境的功能可以通过commandcommand函数调函数调用相关的命令,或者通过用相关的命令,或者通过setvarsetvar函数改变相应系统变量的当前函数改变相应系统变量的当前值或当前状态。有些功能只能通过上述一种途径实现,有些功值或当前状态。有些功能只能通过上述一种途径实现,有些功能可以通过上述两种途径实现。能可以通过上述两种途径实现。 1. 1. 设置图纸的范围设置图纸的范围 例如设置例如设置A3A3图纸的作图范围图纸的作图范围 (1 1)通过)通过

3、commandcommand函数设置函数设置图纸的范围图纸的范围 (command limits 0,0 420,297)(command limits 0,0 420,297)或者或者 (command limits (0 0) (420 297) (command limits (0 0) (420 297) 或者或者 (command limits (list 0 0) (list 420 297)(command limits (list 0 0) (list 420 297) 这时这时p1p1、p2p2分别是作图范围的左下和右上角点,上式可改写分别是作图范围的左下和右上角点,上式可改

4、写为:为:(command limits p1 p2)(command limits p1 p2)0,0420,297(2 2)通过)通过setvarsetvar函数设置图纸的范围函数设置图纸的范围 系统变量系统变量limminlimmin和和limmaxlimmax分别对应于图纸的左下和右上角点,分别对应于图纸的左下和右上角点,只需用只需用setvarsetvar函数设置它们以新的值即可。函数设置它们以新的值即可。 (setvar limmin (0 0) (setvar limmin (0 0) 或者或者 (setvar limmin (list 0 0) (setvar limmin (

5、list 0 0) 或者或者 (setvar limmin 0,0) (setvar limmin 0,0) 或者或者 (setvar limmin p1)(setvar limmin p1) 设置图纸的右上角点的表达式如下:设置图纸的右上角点的表达式如下: (setvar limmax (420 297) (setvar limmax (420 297) 或者或者 (setvar limmax (list 420 297) (setvar limmax (list 420 297) 或者或者 (setvar limmax 420,297) (setvar limmax 420,297) 或者

6、或者 (setvar limmax p2)(setvar limmax p2)2. 2. 设置绘图的长度和角度单位设置绘图的长度和角度单位 例如将绘图的长度单位设置为十进制、例如将绘图的长度单位设置为十进制、3 3位小数,角度单位位小数,角度单位设置为十进制的度(设置为十进制的度( )十进制、)十进制、2 2位小数、位小数、X X轴正方向为轴正方向为0 0 、逆、逆时针方向为正。时针方向为正。(1 1)通过)通过commandcommand函数设置绘图的长度和角度单位函数设置绘图的长度和角度单位 (command units 2 3 1 2 0 N)(command units 2 3 1 2

7、 0 N) command command的参数说明如下:的参数说明如下: unitsunits:AutoCADAutoCAD设置绘图单位的命令;设置绘图单位的命令; 2 2:长度单位为十进制;:长度单位为十进制; 3 3:3 3位小数;位小数; 1 1:角度单位为十进制的度;:角度单位为十进制的度; 2 2:2 2位小数;位小数; 0 0:X X轴正方向为轴正方向为0 0 ; N N:非顺时针,即逆时针为正。:非顺时针,即逆时针为正。(2 2)通过)通过setvarsetvar函数设置设置绘图的长度和角度单函数设置设置绘图的长度和角度单位位(setvar lunits 2) (setvar

8、lunits 2) ;长度单位为十进制;长度单位为十进制(setvar luprec 3) (setvar luprec 3) ;长度单位;长度单位3 3位小数位小数(setvar aunits 1) (setvar aunits 1) ;角度单位为十进制的度;角度单位为十进制的度(setvar auprec 2) (setvar auprec 2) ;角度单位为长;角度单位为长2 2位小数位小数(setvar angbase 0.0) (setvar angbase 0.0) ;X X轴正方向为轴正方向为0 0 (setvar angdir 0) (setvar angdir 0) ;逆时针

9、方向为正;逆时针方向为正3. 3. 设置目标捕捉的类型设置目标捕捉的类型 交互操作时,目标捕捉类型的选项是字符串,它以编码的交互操作时,目标捕捉类型的选项是字符串,它以编码的形式记录在系统变量形式记录在系统变量osmodeosmode内,内,代码的具体含义是:代码的具体含义是: 0 0 :NONe NONe (不标捕捉任何类型的对象)(不标捕捉任何类型的对象)1 1: ENDpoint ENDpoint (线段和圆弧的端点)(线段和圆弧的端点)2 2: MIDpoint MIDpoint (线段和圆弧的中点)(线段和圆弧的中点)4 4 :CENter CENter (圆、椭圆和圆弧的中心点)(

10、圆、椭圆和圆弧的中心点)ENDpoint MIDpoint CENter8: NODe (结点,用point命令生成的点)16 :QUAdrant (圆和圆弧的象限点)32: INTersection (线段和圆弧的交点)NODe QUAdrant INTersection 64 :INSertion (图块或字符串的插入点)128128 : PERpendicularPERpendicular (垂足)INSertion PERpendicular256256:TANgent TANgent (切点)(切点)512512: NEArest NEArest (对象上的最近点)(对象上的最近点)

11、10241024:QUIck QUIck (快速捕捉)(快速捕捉)20482048:APParent Intersection APParent Intersection (在观察方向上相交的点)(在观察方向上相交的点)40964096:EXTension EXTension (延长线上的点)(延长线上的点)81928192:PARallelPARallel(与所选对象平行的点)(与所选对象平行的点)TANgentTANgent APParent IntersectionAPParent Intersection EXTension PARallelEXTension PARallel(1 1

12、)通过)通过commandcommand函数设置设置目标捕捉的类型函数设置设置目标捕捉的类型 (command osnap endpoint,midpoint,center)(command osnap endpoint,midpoint,center);捕捉端;捕捉端点、中点和中心点、中点和中心 (command osnap none)(command osnap none);不捕捉任何类型;不捕捉任何类型(2 2)通过)通过setvarsetvar函数设置目标捕捉的类型函数设置目标捕捉的类型(setvar osmode 7)(setvar osmode 7);7 7是捕捉端点、中点和中心的

13、代码之和是捕捉端点、中点和中心的代码之和(setvar osmode 0)(setvar osmode 0);不捕捉任何类型;不捕捉任何类型 将将osmodeosmode设置为设置为0 0(不捕捉任何类型)是通常的设置。假定(不捕捉任何类型)是通常的设置。假定osmodeosmode的当前值为的当前值为1 1,将捕捉直线或圆弧的端点。在这种情况下,将捕捉直线或圆弧的端点。在这种情况下,如果指定的是,如果指定的是p p点,而点,而p p点处刚好有一条直线,那么实际获取点处刚好有一条直线,那么实际获取的是该直线距的是该直线距p p点较近的那个端点,而不是点较近的那个端点,而不是p p点本身。所以应

14、该点本身。所以应该用用setvarsetvar函数将函数将osmodeosmode设置为设置为0 0。 4. 4. 抑制抑制AutoCADAutoCAD普通命令的提示普通命令的提示 在运行程序的过程中,可能会显示在运行程序的过程中,可能会显示AutoCADAutoCAD普通命令的提示。例如普通命令的提示。例如commandcommand函数在调用函数在调用lineline命令绘制直线时,在命令提示区会出现下图的提示。如果不命令绘制直线时,在命令提示区会出现下图的提示。如果不关心这些信息,应该将其关闭,可以提高程序的运行速度。关心这些信息,应该将其关闭,可以提高程序的运行速度。 通过通过setv

15、arsetvar函数抑制函数抑制AutoCADAutoCAD普通命令的提示,表达式如下:普通命令的提示,表达式如下:(setvar cmdecho 0)(setvar cmdecho 0) cmdecho cmdecho是控制普通命令提示是否显示的系统变量,当其为是控制普通命令提示是否显示的系统变量,当其为1 1时,照常显示时,照常显示AutoCADAutoCAD普通命令的提示,将其设置为普通命令的提示,将其设置为0 0,将抑制这样的一些提示,但仍然显,将抑制这样的一些提示,但仍然显示某些示某些AutoLISPAutoLISP函数的提示信息。通常应将函数的提示信息。通常应将cmdechocmd

16、echo设置为设置为0 0。8.2 设置图层、颜色、线型和线宽设置图层、颜色、线型和线宽 1. 创建一个当前图层创建一个当前图层 假定图层的名字是假定图层的名字是“zhongxin”、颜色为红色、线型为、颜色为红色、线型为center、线宽为、线宽为0.2,通过,通过command函数创建一个当前图层表达式如下:函数创建一个当前图层表达式如下:(command layer Make zhongxin Color 1 zhongxin Ltype Center zhongxin LWeight 0.2 zhongxin ) 因为在命令行操作时,因为在命令行操作时,layer命令需要空回车响应命令

17、需要空回车响应“?/Make/Set/New/ON /OFF/Color/Ltype/LWeight/Plot/Freeze/Thaw/LOck/Unlock/state”提示才能提示才能结束该命令,所以在右括号前增加一对引号(注意,引号内没有空格)。结束该命令,所以在右括号前增加一对引号(注意,引号内没有空格)。 因为因为Make、Color、Ltype、LWeight等选项可以简写为等选项可以简写为M、C、L、LW,所以上式可改为:所以上式可改为:(command layer M zhongxin C 1 zhongxin L Center zhongxin LW 0.2 zhongxin

18、 ) 又因为当前图层的名字是又因为当前图层的名字是Color、Ltype等选项默认的图层名等选项默认的图层名,所以上式可改为:,所以上式可改为:(command layer M zhongxin C 1 L Center LW 0.2 ) 如果当前图层的颜色、线型、线宽等为默认的选择,表达如果当前图层的颜色、线型、线宽等为默认的选择,表达式如下:式如下:(command layer M cuxian ) 图层图层cuxian是当前图层、颜色号为是当前图层、颜色号为7(白(白/黑)、线型为黑)、线型为continuous、线宽为当前图形对象的默认线宽。、线宽为当前图形对象的默认线宽。 如果某图层

19、已经存在,只是将其改变为当前状态,其表达式如果某图层已经存在,只是将其改变为当前状态,其表达式如下:如下:(command layer M cuxian )或者或者(command layer S cuxian )2. 2. 设置新图形对象的颜色设置新图形对象的颜色(1 1)通过)通过commandcommand函数设置新图形对象的颜色函数设置新图形对象的颜色(command color 3)(command color 3) 或者或者(command color green)(command color green);设置;设置新图形对象的颜色为绿色新图形对象的颜色为绿色(2 2)通过)通过

20、setvarsetvar函数设置函数设置新图形对象的颜色新图形对象的颜色(setvar cecolor 2)(setvar cecolor 2)或者或者(setvar (setvar “cecolorcecolor” “yellowyellow”) );设置;设置新图形对象的颜色为黄色新图形对象的颜色为黄色3. 3. 设置新图形对象的线型设置新图形对象的线型(1 1)通过)通过commandcommand函数设置新图形对象的线型函数设置新图形对象的线型(command linetype s centerset )(command linetype s centerset ) ;设置;设置新图形

21、新图形对象的线型为中心线对象的线型为中心线(2 2)通过)通过setvarsetvar函数设置函数设置新图形对象的线型新图形对象的线型(setvar celtype dashed)(setvar celtype dashed);设置新图形对象的线型为虚;设置新图形对象的线型为虚线线 4. 4. 设置线型比例因子的大小设置线型比例因子的大小 除了实线除了实线(continuouscontinuous)之外,每种线型都是由不同长之外,每种线型都是由不同长度的短划线、空白段或点组成的。在不同的显示比例下,这些度的短划线、空白段或点组成的。在不同的显示比例下,这些短划线和空白段的视觉效果可能过大或过小

22、。改变短划线和空白段的视觉效果可能过大或过小。改变线型比例因线型比例因子的大小并子的大小并不改变整条线段的长度,只改变短划线和空白段的不改变整条线段的长度,只改变短划线和空白段的大小。大小。 例如,将线型的短划线和空白段缩小一半。例如,将线型的短划线和空白段缩小一半。(1 1)通过)通过commandcommand函数设置线型比例因子的大小函数设置线型比例因子的大小 (command ltscale 0.5)(command ltscale 0.5)(2 2)通过)通过setvarsetvar函数设置设置线型比例因子的大小函数设置设置线型比例因子的大小 (setvar ltscale 0.5)

23、(setvar ltscale 0.5)5. 5. 设置新图形对象的线宽设置新图形对象的线宽(1 1)通过)通过commandcommand函数设置新图形对象的线宽函数设置新图形对象的线宽 (command lweight 0.5)(command lweight 0.5);设置;设置新图形对象的线宽为新图形对象的线宽为0.50.5(2 2)通过)通过setvarsetvar函数设置函数设置新图形对象的线宽新图形对象的线宽 系统变量系统变量celweightcelweight记录着记录着新图形对象的线宽,它新图形对象的线宽,它的值是整的值是整型的,以型的,以1 1为单位。例如设置为单位。例如设

24、置新图形对象的线宽为新图形对象的线宽为0.50.5的表达的表达式如下:式如下:(setvar celweight 50) (setvar celweight 50) 【例例8-18-1】 定义绘制图定义绘制图8-18-1的平键外形轮廓线和中心线的命令的平键外形轮廓线和中心线的命令,插入点,插入点p p、键宽、键宽b b、键长、键长L L、旋转角、旋转角alfalf是交互输入的参数,要是交互输入的参数,要求粗实线所在图层的名字为求粗实线所在图层的名字为cuxiancuxian、蓝色;中心线所在图层的、蓝色;中心线所在图层的名字为名字为zhongxinzhongxin,红色,线型为,红色,线型为c

25、entercenter(中心线)。(中心线)。1. 1. 定义绘制平键轮廓线命令的源程序定义绘制平键轮廓线命令的源程序(defun c:pingjian(/ p b l alf r l1 p1 p2 p3 p4 p5 p6 (defun c:pingjian(/ p b l alf r l1 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10)p7 p8 p9 p10) (setvar osmode 0) (setvar osmode 0) ;关闭目标捕捉状态;关闭目标捕捉状态 (setvar cmdecho 0) (setvar cmdecho 0) ;抑制普通命令的提示;抑制普通

26、命令的提示 (commandlayer make cuxian c 5 cuxian )(commandlayer make cuxian c 5 cuxian );生成粗实线所在的图层,状态为当前层,名字为;生成粗实线所在的图层,状态为当前层,名字为cuxiancuxian,颜,颜色为蓝色为蓝 (setq p(getpoint (setq p(getpoint 输入平键的定位点:输入平键的定位点:);以交互方式;以交互方式得到平键的定位点得到平键的定位点p p (setq b(getdist p (setq b(getdist p 输入平键的宽度:输入平键的宽度:);以交互方式得;以交互方式

27、得到平键的宽度到平键的宽度b b (setq l(getdist p (setq l(getdist p 输入平键的长度:输入平键的长度:);以交互方式得;以交互方式得到平键的长度到平键的长度l l (setq alf(getangle p (setq alf(getangle p 输入平键的旋转角:输入平键的旋转角:);以交互;以交互方式得到平键的旋转角方式得到平键的旋转角alfalf (setq r ( (setq r (* * 0.5 b) l1(- l b) 0.5 b) l1(- l b);r r和和l1l1分别是平键宽度分别是平键宽度b b和平键长度和平键长度l l的一半的一半 (

28、setq p1 (polar p (+ alf (setq p1 (polar p (+ alf (* * 0.5 pi) r) 0.5 pi) r);p1-p4p1-p4是多是多义线的义线的4 4个顶点个顶点 (setq p2 (polar p1 alf l1)(setq p2 (polar p1 alf l1) (setq p3 (polar p2 (+ alf ( (setq p3 (polar p2 (+ alf (* * 1.5 pi) b) 1.5 pi) b) (setq p4 (polar p1 (+ alf ( (setq p4 (polar p1 (+ alf (* * 1

29、.5 pi) b) 1.5 pi) b) (command pline p1 width 0.6 0.6 p2 arc p3 (command pline p1 width 0.6 0.6 p2 arc p3 line p4 arc close)line p4 arc close);绘制平键的外形轮廓线;绘制平键的外形轮廓线(command layer m zhongxin c 1 l center (command layer m zhongxin c 1 l center ) );生成中心线所在的图层,状态为当前层,名字为;生成中心线所在的图层,状态为当前层,名字为zhongxinxian

30、zhongxinxian,颜色为红,线型为中心线(点划线),颜色为红,线型为中心线(点划线) (setvar ltscale 0.5) (setvar ltscale 0.5) (setq p5 (polar p1 (+ alf ( (setq p5 (polar p1 (+ alf (* * 0.5 pi) 5) 0.5 pi) 5) (setq p6 (polar p2 (+ alf ( (setq p6 (polar p2 (+ alf (* * 0.5 pi) 5) 0.5 pi) 5) (setq p7 (polar p3 (+ alf ( (setq p7 (polar p3 (+

31、 alf (* * 1.5 pi) 5) 1.5 pi) 5) (setq p8 (polar p4 (+ alf ( (setq p8 (polar p4 (+ alf (* * 1.5 pi) 5) 1.5 pi) 5) (setq p9 (polar p (+ alf pi) (+ r 8) (setq p9 (polar p (+ alf pi) (+ r 8) (setq p10 (polar p alf (+ (- l r) 8) (setq p10 (polar p alf (+ (- l r) 8) (command line p5 p8 ) (command line p5

32、p8 );绘制中心线;绘制中心线 (command line p6 p7 )(command line p6 p7 ) (command line p9 p10 ) (command line p9 p10 ) )2. 2. 程序说明程序说明 (1 1)定义)定义AutoCADAutoCAD命令与定义函数一样,都是通过命令与定义函数一样,都是通过defundefun函函数,不同之处是命令名前必须加数,不同之处是命令名前必须加“C:C:”。 (2 2)AutoCADAutoCAD命令的变元表内不能有变元,除号之后的命令的变元表内不能有变元,除号之后的p p、b b、l l等是这个函数的局部变量声

33、明,即使没有局部变量的声明,等是这个函数的局部变量声明,即使没有局部变量的声明,也不能缺少变元表的一对括号。也不能缺少变元表的一对括号。 (3 3)第)第3 3行通过行通过setvarsetvar函数和系统变量函数和系统变量cmdechocmdecho抑制普通命抑制普通命令的提示,但并不抑制令的提示,但并不抑制getget函数的提示。函数的提示。 (4 4)第)第5 5行行getpointgetpoint函数的功能是在交互状态下获取一个点函数的功能是在交互状态下获取一个点,既可以用鼠标在屏幕上指定一个点,也可以通过键盘键入一,既可以用鼠标在屏幕上指定一个点,也可以通过键盘键入一个点的坐标,如键

34、入个点的坐标,如键入100,50100,50,响应,响应 输入平键的定位点:输入平键的定位点: 的提的提示。示。 (5 5)第)第6 6行行getdistgetdist函数的功能是在交互状态下获取一个长度函数的功能是在交互状态下获取一个长度值,既可以通过键盘键入具体的数值,也可以用鼠标在屏幕上值,既可以通过键盘键入具体的数值,也可以用鼠标在屏幕上指定两个点,两点的长度即为输入的长度值,由于本例提供了指定两个点,两点的长度即为输入的长度值,由于本例提供了参照点参照点p p,只需用鼠标在屏幕上指定一个点,该点与,只需用鼠标在屏幕上指定一个点,该点与p p的距离即的距离即为输入的长度值。为输入的长度

35、值。(6 6)第)第8 8行行getanglegetangle函数的功能是在交互状态下获取一个角度函数的功能是在交互状态下获取一个角度值,既可以通过键盘键入具体的数值,也可以用鼠标在屏幕上值,既可以通过键盘键入具体的数值,也可以用鼠标在屏幕上指定两个点,两点连线与指定两个点,两点连线与X X轴的正向夹角即为输入的角度值,由轴的正向夹角即为输入的角度值,由于本例提供了参照点于本例提供了参照点p p,只需用鼠标在屏幕上指定一个点,该点,只需用鼠标在屏幕上指定一个点,该点与与p p的连线与的连线与X X轴的正向夹角即为输入的角度值。注意:尽管键轴的正向夹角即为输入的角度值。注意:尽管键入的角度以度为

36、单位(例如入的角度以度为单位(例如180180 ),但获取的角度以弧度为单),但获取的角度以弧度为单位(例如位(例如3.141593.14159)。)。(7 7)第)第1414行调用的是行调用的是commandcommand函数,函数,plinepline是被调用的是被调用的AutoCADAutoCAD具体命令;该表达式可简化为如下代码:具体命令;该表达式可简化为如下代码:(command pline p1 w 0.6 0.6 p2 a p3 l p4 a (command pline p1 w 0.6 0.6 p2 a p3 l p4 a cl)cl)其中其中ww、aa、ll和和clcl分别

37、是分别是plinepline命令的选项命令的选项widthwidth、arcarc、lineline和和closeclose。 (8 8)第)第1515行和第行和第4 4行的功能都是生成当前图层。该表达式也可行的功能都是生成当前图层。该表达式也可以改写为一个函数,其功能是生成一个当前层,并设置该层的以改写为一个函数,其功能是生成一个当前层,并设置该层的颜色和线型。源代码如下:颜色和线型。源代码如下:(defun tuceng(name color ltyle)(defun tuceng(name color ltyle) (command layer m name c color name l

38、 ltype (command layer m name c color name l ltype ) 各变元的数据类型和含义如下:各变元的数据类型和含义如下: namename:字符串,图层的名字。:字符串,图层的名字。 colorcolor:0-2550-255的一个整数,图层的颜色号。的一个整数,图层的颜色号。 ltypeltype:字符串,:字符串,AutoCADAutoCAD提供的线型名,如提供的线型名,如dasheddashed、centercenter。 将第将第4 4行改为调用该函数,表达式如下:行改为调用该函数,表达式如下: (tuceng cuxian 3 )(tuceng

39、 cuxian 3 ) 将第将第1515行改为调用该函数,表达式如下:行改为调用该函数,表达式如下: (tuceng zhongxin 1 center)(tuceng zhongxin 1 center) (9 9)切换到)切换到AutoCADAutoCAD窗口,在窗口,在CommandCommand提示下,键入提示下,键入pingjianpingjian,按照程序的提示,输入相应的数据,即可得到上图所示的图形。按照程序的提示,输入相应的数据,即可得到上图所示的图形。 8.3 8.3 定义字样定义字样 StyleStyle命令以命令以AutoCADAutoCAD提供的提供的.shx.shx类

40、型的形文件或类型的形文件或windowswindows等等提供的提供的.ttf.ttf类型的字体文件为原型定义字样。新图开始时,只类型的字体文件为原型定义字样。新图开始时,只有一种字样,名字为有一种字样,名字为standardstandard,是以,是以AutoCADAutoCAD提供的形文件提供的形文件txt.shxtxt.shx为原型定义的。如果不满意为原型定义的。如果不满意standardstandard字样或者需要书写字样或者需要书写汉字,就必须自己定义字样。以下是通过汉字,就必须自己定义字样。以下是通过commandcommand函数调用函数调用StyleStyle命令定义字样的表达

41、式。命令定义字样的表达式。1 1以以AutoCADAutoCAD提供的形文件为原型定义字样提供的形文件为原型定义字样(command style ziyang1 complex 0.0 1.0 (command style ziyang1 complex 0.0 1.0 0.0 N N N )0.0 N N N )各项含义如下:各项含义如下:stylestyle:定义字样的命令。:定义字样的命令。ziyang1ziyang1:字样的名字。:字样的名字。complexcomplex:AutoCADAutoCAD提供的形文件名,文件全名提供的形文件名,文件全名complex.shxcomplex.

42、shx。0.00.0:字的固定高度,若该值为:字的固定高度,若该值为0 0,表示没有固定的字高,每次,表示没有固定的字高,每次调用调用texttext命令时,临时指定字高。命令时,临时指定字高。1.01.0:宽度因子,为:宽度因子,为1.01.0时的高宽比约为时的高宽比约为3:23:2。0.00.0:字的倾斜角度(:字的倾斜角度(obliquing angleobliquing angle)。)。N N:不反写:不反写(backwards)(backwards),若为,若为Y Y时,为反字(左右颠倒)。时,为反字(左右颠倒)。N N:不倒写:不倒写(upside-down)(upside-do

43、wn),若为,若为Y Y时,为倒字(上下颠倒)。时,为倒字(上下颠倒)。N N:不垂直书写。:不垂直书写。 由于字体原型文件名之后的选项都是默认值,因此上述表达由于字体原型文件名之后的选项都是默认值,因此上述表达式可以简化表示为:式可以简化表示为:(command style ziyang complex )(command style ziyang complex )2 2以以WindowsWindows提供的字体文件提供的字体文件stfanso.ttfstfanso.ttf为原型定义为原型定义名字为名字为hanzi1hanzi1的字样的字样(command style hanzi1 stf

44、angso.ttf (command style hanzi1 stfangso.ttf )由于可以用字体名代替字体文件名,因此上述表达式可以表示由于可以用字体名代替字体文件名,因此上述表达式可以表示为:为:(command style hanzi2 (command style hanzi2 华文仿宋华文仿宋 ) )注意,该表达式没有对应是否垂直书写的选项。注意,该表达式没有对应是否垂直书写的选项。3 3以一个大字体(以一个大字体(big fontbig font)形文件为原型定义汉字字样)形文件为原型定义汉字字样 用用WindowsWindows提供的字体文件可以很好地解决汉字书写的问题,

45、提供的字体文件可以很好地解决汉字书写的问题,但特殊字符但特殊字符“”、“ ”和和“ ”不能用不能用AutoCADAutoCAD规定的规定的c c、%d%d、%p%p转义输入,用大字体形文件为原型定义的汉字可以转义输入,用大字体形文件为原型定义的汉字可以很解决这个问题。其表达式如下:很解决这个问题。其表达式如下:(command style hanzi3 gbcbig )(command style hanzi3 gbcbig )其中其中gbcbiggbcbig是定义汉字的大字体,文件的全名是是定义汉字的大字体,文件的全名是gbcbig.shxgbcbig.shx。 4 4普通形文件与大字体形文

46、件组合,定义汉字字样普通形文件与大字体形文件组合,定义汉字字样 西文字符用普通的形文件为原型,汉字部份用大字体形文件西文字符用普通的形文件为原型,汉字部份用大字体形文件为原型,从两种形文件中各选一个满意的形文件定义汉字字样为原型,从两种形文件中各选一个满意的形文件定义汉字字样。其表达式如下:。其表达式如下:(command style hanzi4 complex,gbcbig (command style hanzi4 complex,gbcbig )【例8-2】定义绘制下图所示A4图框和标题栏的命令,零件名称、零件材料、数量、绘图比例是交互输入的参数,详细尺寸参照GB/T 14689-19

47、93、GB/T10609-1989。 1. 1. 定义绘制定义绘制A4A4图框和标题栏的源程序图框和标题栏的源程序(defun c:a4( / v1 v2 v3 ljmch cl shl bl)(defun c:a4( / v1 v2 v3 ljmch cl shl bl);定义命令的名;定义命令的名字为字为a4a4 (setq v1(getvar osmode) (setq v1(getvar osmode);获取当前的目标捕捉类型,;获取当前的目标捕捉类型,将其赋给变量将其赋给变量v1v1 (setq v2(getvar cmdecho) (setq v2(getvar cmdecho);

48、获取当前的普通命令提示状;获取当前的普通命令提示状态,将其赋给变量态,将其赋给变量v2v2 (setq v3(getvar blipmode) (setq v3(getvar blipmode);获取当前的光标痕迹显示;获取当前的光标痕迹显示状态,将其赋给变量状态,将其赋给变量v3v3 (setvar osmode 0) (setvar osmode 0);关闭目标捕捉状态;关闭目标捕捉状态 (setvar cmdecho 0)(setvar cmdecho 0);不显示普通命令的提示;不显示普通命令的提示 (setvar blipmode 0) (setvar blipmode 0) ;不显

49、示光标痕迹;不显示光标痕迹 (setq ljmch(getstring n (setq ljmch(getstring n输入零件名称:输入零件名称:);将输入的;将输入的零件名称赋给变量零件名称赋给变量ljmchljmch (setq cl(getstring n (setq cl(getstring n输入零件材料:输入零件材料:);将输入的零件;将输入的零件材料赋给变量材料赋给变量clcl (setq shl(getint n (setq shl(getint n输入零件数量:输入零件数量:);将输入的零件数;将输入的零件数量赋给变量量赋给变量shlshl (setq shl(itoa

50、shl) (setq shl(itoa shl);将整数;将整数shlshl转换为字符串转换为字符串 (setq bl(getstring n(setq bl(getstring n输入绘图比例:输入绘图比例:);将输入的绘图;将输入的绘图比例赋给变量比例赋给变量blbl (command style hz gbcbig ) (command style hz gbcbig );定;定义汉字的字样名为义汉字的字样名为hzhz (command layer m xixian c 1 ) (command layer m xixian c 1 );创建当前;创建当前图层图层xixianxixian

51、 (command limits 0,0 210,297) (command limits 0,0 210,297);设置图纸范围;设置图纸范围 (command line 0,0 210,0 210,297 0,297 c) (command line 0,0 210,0 210,297 0,297 c);绘制;绘制A4A4图纸边框图纸边框 (command layer m cuxian c 7 lw 0.6 (command layer m cuxian c 7 lw 0.6 ); ;创建当前图层创建当前图层cuxiancuxian (command line 25,5 205,5 205

52、,292 25,292 (command line 25,5 205,5 205,292 25,292 c)c);绘制图框;绘制图框 (command line 85,5 85,27 205,27 )(command line 85,5 85,27 205,27 );绘制标题;绘制标题栏栏 (command line 85,13 205,13 )(command line 85,13 205,13 ) (command line 100,13 100,27 ) (command line 100,13 100,27 ) (command line 120,13 120,27 ) (comman

53、d line 120,13 120,27 ) (command line 132,5 132,27 ) (command line 132,5 132,27 ) (command line 162,5 162,13 ) (command line 162,5 162,13 ) (command line 180,5 180,27 ) (command line 180,5 180,27 ) (command layer m xixian ) (command layer m xixian ) (command line 85,20 132,20 ) (command line 85,20 13

54、2,20 ) (command layer m wenzi c 5 ) (command layer m wenzi c 5 );创建当前;创建当前图层图层wenziwenzi (command text m (list 108.5 9) 5 0 (command text m (list 108.5 9) 5 0 清清 华华 大大 学学 机机 械械 厂厂);填写标题栏;填写标题栏 (command text m (list 147 9) 5 0 (strcat (command text m (list 147 9) 5 0 (strcat 材材 料料 cl) cl) (command te

55、xt m (list 171 9) 5 0 (strcat (command text m (list 171 9) 5 0 (strcat 数数 量量 shl) shl) (command text m (list 192.5 9) 5 0 (strcat (command text m (list 192.5 9) 5 0 (strcat 比比 例例 bl) bl) (command text m (list 92.5 23.5) 5 0 (command text m (list 92.5 23.5) 5 0 制制 图图) (command text m (list 92.5 16.5)

56、 5 0 (command text m (list 92.5 16.5) 5 0 校校 核核) (command text m (list 156 20) 10 0 ljmch) (command text m (list 156 20) 10 0 ljmch) (setvar osmode) (setvar osmode);恢复目标捕捉的原来状态;恢复目标捕捉的原来状态 (setvar cmdecho v2) (setvar cmdecho v2) ;恢复普通命令提示原来的显示状;恢复普通命令提示原来的显示状态态 (setvar blipmode v3) (setvar blipmode

57、v3) ;恢复光标痕迹原来的显示状态;恢复光标痕迹原来的显示状态 (princ)(princ);静默退出;静默退出) ) 2. 2. 程序说明程序说明(1 1)第)第2-42-4行用行用getvargetvar函数获取系统变量函数获取系统变量osmodeosmode等的当前值,等的当前值,将其赋给变量将其赋给变量v1v1、v2v2、v3v3,以便程序结束时恢复程序开始时的,以便程序结束时恢复程序开始时的环境。环境。(2 2)第)第5-75-7行用行用setvarsetvar函数将系统变量函数将系统变量osmodeosmode等设置为有利于等设置为有利于程序绘图的环境。程序绘图的环境。(3 3)

58、第)第1111行行(setq shl(itoa shl)(setq shl(itoa shl)的作用是将整数的作用是将整数shlshl转换为转换为字符串,以适应后面的字符串,以适应后面的字符串运算。字符串运算。(4 4)第)第3030行中,行中,texttext之后的之后的mm是书写文本的定位方式选项是书写文本的定位方式选项,表示中点定位。,表示中点定位。(5 5)第)第3131行中,行中,strcatstrcat函数的功能是连接字符串,它将字符串函数的功能是连接字符串,它将字符串 材材 料料 和用户输入的字符串,例如和用户输入的字符串,例如40Cr, 40Cr, 连接为一个字符连接为一个字符

59、串串 材材 料料 40Cr 40Cr ,cl)cl)(6 6)第)第37-3937-39行用行用setvarsetvar函数设置系统变量函数设置系统变量osmodeosmode等为程序开等为程序开始时的值,恢复程序开始时的环境。始时的值,恢复程序开始时的环境。(7 7)运行程序总要返回最后一个表达式的值,第)运行程序总要返回最后一个表达式的值,第4040行行(princ)(princ),它返回了一个没有任何值的结果,实现了静默退出。,它返回了一个没有任何值的结果,实现了静默退出。(8 8)绘制直线和书写文本的数据,参照)绘制直线和书写文本的数据,参照GB/T 14689-1993GB/T 14

60、689-1993、GB/T10609-1989GB/T10609-1989计算之后得到的。计算之后得到的。(9 9)加载该程序,切换到)加载该程序,切换到AutoCADAutoCAD窗口,在窗口,在CommandCommand提示下,键提示下,键入入A4A4,输入零件名称、材料、数量和绘图比例,即可得到上图,输入零件名称、材料、数量和绘图比例,即可得到上图所示的图框和标题栏。所示的图框和标题栏。8.4 尺寸标注尺寸标注1. 长度型尺寸标注长度型尺寸标注 长度型尺寸标注需要确定尺寸线是水平、垂直还是指定的方长度型尺寸标注需要确定尺寸线是水平、垂直还是指定的方向,如果默认尺寸测量值即为尺寸文本,那

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论