版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VisualLISP程序设计(第2版)第8章 第第8章章 编程实例编程实例 VisualLISP程序设计(第2版)第8章 8.1设置作图环境 编程作图和交互作图一样,也需要设置作图的环境,例如 图纸的范围、绘图的单位、目标捕捉的类型、图层、颜色、 线型、线宽、字样等,如果缺少对作图环境的设置,只能是 利用加载程序时AutoCAD提供的默认环境。设置一个合适的 作图环境不仅可以提高作图的精度和效率,有时还会影响到 所绘制的图纸是否符合企业的规范和满足生产的需要。 用程序实现设置作图环境的功能可以通过command函数调 用相关的命令,或者通过setvar函数改变相应系统变量的当前 值或当前状态。
2、有些功能只能通过上述一种途径实现,有些 功能可以通过上述两种途径实现。 VisualLISP程序设计(第2版)第8章 1. 设置图纸的范围 例如,设置A3图纸的作图范围。 (1)通过command函数设置图纸的范围 用下列表达式之一均可设置: (command limits 0,0 420,297) (command limits (0 0) (420 297) (command limits (list 0 0) (list 420 297) 如果p1、p2分别是作图范围的左下和右上角点,上 式可改写为: (command limits p1 p2) VisualLISP程序设计(第2版)第
3、8章 (2)通过setvar函数设置图纸的范围 用setvar函数设置图纸的范围时,需要分别设置图纸的左下 角点和右上角点,它们分别对应系统变量limmin和limmax。用 下列表达式之一均可设置图纸的左下角点: (setvar limmin (0 0) (setvar limmin (list 0 0) (setvar limmin 0,0) (setvar limmin p1) 用下列表达式之一均可设置图纸的右上角点: (setvar limmax (420 297) (setvar limmax (list 420 297) (setvar limmax 420,297) (setva
4、r limmax p2) VisualLISP程序设计(第2版)第8章 2. 设置绘图的长度和角度单位 例如将绘图的长度单位设置为十进制、3位小数,角度单 位设置为十进制的度()、2位小数、X轴正方向为0、逆时 针方向为正。 (1)通过command函数设置绘图的长度和角度单位 (command units 2 3 1 2 0 N) command的参数说明如下: units:AutoCAD设置绘图单位的命令; 2:长度单位为十进制; 3:3位小数; 1:角度单位为十进制的度; 2:2位小数; 0:X轴正方向为0; N:非顺时针,即逆时针为正。 VisualLISP程序设计(第2版)第8章 (
5、2)通过setvar函数设置设置绘图的长度 和角度单位 (setvar lunits 2) ;长度单位为十进制 (setvar luprec 3) ;长度单位为3位小数 (setvar aunits 1) ;角度单位为十进制的度 (setvar auprec 2) ;角度单位为2位小数 (setvar angbase 0.0) ;X轴正方向为0 (setvar angdir 0) ;逆时针方向为正 VisualLISP程序设计(第2版)第8章 3. 设置目标捕捉的类型 交互操作时,目标捕捉类型的选项是字符串,它以编码的形式记录 在系统变量osmode内。代码的具体含义如下: 0:不捕捉任何类型
6、的对象 1:线段和圆弧的端点 2:线段和圆弧的中点 4:圆、圆弧或椭圆的中心 8:用point命令生成的点 16:圆、圆弧或椭圆的象限点 32:线段和圆弧的交点 64:图或字符串的插入点 128:垂足 256:切点 512:对象上距光标的最近点 1024:快速捕捉 2048:在观察方向上相交,实际不一定相交的点 4096:延长线上的点 8192:与所选对象平行 VisualLISP程序设计(第2版)第8章 (1)通过command函数设置设置目标捕捉的类型 (command osnap endpoint,midpoint,center);捕捉端点、 中点和中心 (command osnap n
7、one);不捕捉任何类型 (2)通过setvar函数设置目标捕捉的类型 (setvar osmode 7);7是捕捉端点、中点和中心的代码之和 (setvar osmode 0);不捕捉任何类型 通常将osmode设置为0。假定osmode的当前值为1,就会捕 捉直线或圆弧的端点。在这种情况下,如果指定的是p点,而p 点处刚好有一条直线,那么实际获取的是该直线上距p点较近 的那个端点,而不是p点本身。所以用程序绘图时应该osmode 设置为0。 VisualLISP程序设计(第2版)第8章 4. 抑制AutoCAD普通命令的提示 在运行程序的过程中,可能会显示AutoCAD普通命令的提示 。例
8、如command函数在调用line命令绘制直线时,在命令提示区 会出现指定第一点:、指定下一点或放弃(U):等提示。如果不关 心这些信息,应该将其关闭,可以提高程序的运行速度。 通过setvar函数可以抑制AutoCAD普通命令的提示,表达式如 下: (setvar cmdecho 0) cmdecho是控制普通命令提示是否显示的系统变量,当其为1 时,照常显示AutoCAD普通命令的提示,将其设置为0,将抑制 这样的一些提示,但仍然显示AutoLISP函数的提示信息。通常应 将cmdecho设置为0。 VisualLISP程序设计(第2版)第8章 8.2 设置图层、颜色、线型和线宽 1. 创
9、建一个当前图层 通过command函数创建一个当前图层。假定图层的名字是“ 中心线”、颜色为红色、线型为center、线宽为0.1,表达式如 下: (command layer Make 中心线 Color 1 中心线 Ltype Center 中心线 LWeight 0.1 中心线 ) 因为在命令行操作时,layer命令需要空回车响应输入选项?/ 生成(M)/设定(S)/新建(N)/开(ON)/关(OFF)/颜色(C)/线型(L)/线宽 (LW)/材质(MAT)/打印(P)/冻结(F)/解冻(T)/锁定(LO)/解锁(U)/状 态(A):提示才能结束该命令,所以在右括号前增加一对引号( 注意
10、,引号内没有空格)。 VisualLISP程序设计(第2版)第8章 因为Make、Color、Ltype、LWeight等选项可以简写为M、C、L、LW, 所以上式可改为: (command layer M 中心线 C 1 中心线 L Center 中心线 LW 0.2 中心线 ) 又因为当前图层的名字是“颜色”、“线型”等选项默认的图层名,所 以上式可改为: (command layer M 中心线 C 1 L Center LW 0.2 ) 如果当前图层的颜色、线型、线宽等为默认的选择,表达式如下: (command layer M 粗线 ) “粗线”是当前图层、颜色号为7(白/黑)、线型
11、为continuous、线宽为 当前图形对象的默认线宽。 如果某图层已经存在,只是将其改变为当前图层,其表达式如下: (command layer M 粗线 )或者 (command layer S 粗线 ) VisualLISP程序设计(第2版)第8章 2. 设置新图形对象的颜色 (1)通过command函数设置新图形对象的颜色 (command color 3) 或者 (command color green) ;设置新图形对象的颜色为绿色 (2)通过setvar函数设置新图形对象的颜色 (setvar cecolor 2)或者 (setvar cecolor yellow);设置新图形对
12、象的颜色为黄色 3. 设置新图形对象的线型 (1)通过command函数设置新图形对象的线型 (command linetype s center ) ;设置新图形对象的线型为 中心线 (2)通过setvar函数设置新图形对象的线型 (setvar celtype dashed);设置新图形对象的线型为虚线 VisualLISP程序设计(第2版)第8章 4. 设置线型比例因子的大小 除了实线(continuous)之外,每种线型都是由不同长度的 短划线、空白段或点组成的。在不同的显示比例下,这些短划 线和空白段的视觉效果可能过大或过小。改变线型比例因子的 大小并不改变整条线段的长度,只改变短划
13、线和空白段的大小 。 例如,将线型的短划线和空白段缩短一半。 (1)通过command函数设置线型比例因子的大小 (command ltscale 0.5) (2)通过setvar函数设置设置线型比例因子的大小 (setvar ltscale 0.5) VisualLISP程序设计(第2版)第8章 5. 设置新图形对象的线宽 (1)通过command函数设置新图形对象的线宽 (command lweight 0.5);设置新图形对象的线宽为 0.5 (2)通过setvar函数设置新图形对象的线宽 系统变量celweight记录着新图形对象的线宽,它的值 是整型的,以1为单位。例如设置新图形对象
14、的线宽 为0.5的表达式如下: (setvar celweight 50) VisualLISP程序设计(第2版)第8章 【例8.1】 定义绘制图8-1所示的平键外形轮廓线和中心线的 命令,插入点p、键宽b、键长L、旋转角alf是交互输入的参数, 要求粗实线所在图层的名字为“粗线”、蓝色;中心线所在图 层的名字为“中心线”,红色,线型为center(中心线)。 图8-1绘制平键 VisualLISP程序设计(第2版)第8章 定义绘制平键轮廓线命令的源程序如下: (defun c:pingjian(/ p b l alf r l1 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10)
15、(setvar osmode 0) ;关闭目标捕捉状态 (setvar cmdecho 0) ;抑制普通命令的提示 (command “layer” “make” “粗线” “c” 5 “粗线” “”);生成粗实 线所在的图层,图层的状态为当前层,名字为“粗线”,颜色为蓝色。 (setq p(getpoint 输入平键的定位点:);以交互方式得到平键的定 位点p (setq b(getdist p 输入平键的宽度:);以交互方式得到平键的宽度b (setq l(getdist p 输入平键的长度:);以交互方式得到平键的长度l (setq alf(getangle p 输入平键的旋转角:);以
16、交互方式得到平键的 旋转角alf (setq r (* 0.5 b) l1(- l b);r和l1分别是平键宽度b和平键长度l的一半 VisualLISP程序设计(第2版)第8章 (setq p1 (polar p (+ alf (* 0.5 pi) r);p1p4是多义线的4个顶点 (setq p2 (polar p1 alf l1) (setq p3 (polar p2 (+ alf (* 1.5 pi) b) (setq p4 (polar p1 (+ alf (* 1.5 pi) b) (command pline p1 width 0.6 0.6 p2 arc p3 line p4
17、arc close);绘制平键的外形轮廓线。 (command layer m 中心线 c 1 l center );生成中心 线所在的图层,图层的状态为当前层,名字为“中心线”,颜色为红,线型为 中心线 (setvar ltscale 0.5) (setq p5 (polar p1 (+ alf (* 0.5 pi) 5) (setq p6 (polar p2 (+ alf (* 0.5 pi) 5) (setq p7 (polar p3 (+ alf (* 1.5 pi) 5) (setq p8 (polar p4 (+ alf (* 1.5 pi) 5) (setq p9 (polar
18、p (+ alf pi) (+ r 8) (setq p10 (polar p alf (+ (- l r) 8). VisualLISP程序设计(第2版)第8章 (command line p5 p8 );绘制中心线 (command line p6 p7 ) (command line p9 p10 ) ) 程序说明如下: (1)定义AutoCAD命令与定义函数一样,都是通过 defun函数,不同之处是命令名前必须加“C:”。 (2)AutoCAD命令的变元表内不能有变元,除号之后 的p、b、l等是这个函数的局部变量声明,即使没有局 部变量的声明,也不能缺少变元表的一对括号。 (3)第3行
19、通过setvar函数和系统变量cmdecho抑制普 通命令的提示,但并不抑制get函数的提示。 VisualLISP程序设计(第2版)第8章 (4)第5行getpoint函数的功能是在交互状态下获取一个点,既 可以用鼠标在屏幕上指定一个点,也可以通过键盘键入一个点的 坐标,如键入100,50,响应“输入平键的定位点:”的提示。 (5)第6行getdist函数的功能是在交互状态下获取一个长度值, 既可以通过键盘键入具体的数值,也可以用鼠标在屏幕上指定两 个点,两点的距离即为输入的长度值,由于本例提供了参照点p ,因此,只需用鼠标在屏幕上指定一个点,该点与p点的距离即 为输入的长度值。 (6)第8
20、行getangle函数的功能是在交互状态下获取一个角度值 ,既可以通过键盘键入具体的数值,也可以用鼠标在屏幕上指定 两个点,两点连线与X轴的正向夹角即为输入的角度值,由于本 例提供了参照点p,因此,只需用鼠标在屏幕上指定一个点,该 点与p点的连线与X轴的正向夹角即为输入的角度值。注意:尽管 键入的角度以度为单位(例如180),但获取的角度以弧度为单 位(例如3.14159)。 VisualLISP程序设计(第2版)第8章 (7)第14行调用的是command函数,pline是被调用的AutoCAD具体命令;该表达式 可简化为如下代码: (command pline p1 w 0.6 0.6 p
21、2 a p3 l p4 a cl) 其中w、a、l和cl分别是pline命令的选项width、arc、line和close。 (8)第15行和第4行的功能都是生成当前图层。该表达式也可以改写为一个函数,其功 能是生成一个当前层,并设置该层的颜色和线型。源代码如下: (defun tuceng(name color ltyle) (command layer m name c color name l ltype name ) ) 各变元的数据类型和含义如下。 name:字符串,图层的名字。 color:0-255的一个整数,图层的颜色号。 ltype:字符串,AutoCAD提供的线型名,如da
22、shed、center等。 将第4行改为调用该函数,表达式如下: (tuceng 粗线 3 ) 将第15行改为调用该函数,表达式如下: (tuceng 中心线 1 center) (9)加载该程序,切换到AutoCAD窗口,在命令:提示下,键入pingjian,按照程序的 提示,输入相应的数据,即可得到图8-1所示的图形。 VisualLISP程序设计(第2版)第8章 8.3 定义字样 1以形文件为原型定义字样 (command style 字样1 gbeitc 0.0 1.0 0.0 N N ) 各项含义如下。 style:定义字样的命令 字样1:字样的名字 gbeitc:AutoCAD提供
23、的形文件名,文件的全名是complex.shx 0.0:字的固定高度,若该值为0,表示没有固定的字高,每次 调用text命令时,临时指定字高 VisualLISP程序设计(第2版)第8章 1.0:宽度因子,为1.0时的高宽比约为3:2 0.0:字的倾斜角度 N:不反写,若为Y时,为反字(左右颠倒) N:不倒写,若为Y时,为倒字(上下颠倒) 由于字体原型文件名之后的选项都是默认值,因此上述表 达式可以简化表示为: (command style 字样1 complex ) 2以Windows提供的字体文件.ttf为原型定义名字为“汉 字1”的字样 (command style 汉字1 stfang
24、so.ttf ) 由于可以用字体名代替字体文件名,因此上述表达式可以 表示为: (command style 汉字1 华文仿宋 ) VisualLISP程序设计(第2版)第8章 3以一个大字体(big font)形文件为原型定义汉字字样 以Windows提供的字体文件为原型定义的字样,可以很好地 解决汉字书写的问题,但常用的几个字符、不能用Auto CAD规定的c、%d、%p转义输入,用大字体形文件为原 型定义的汉字可以很好地解决这个问题。普通形文件用一个字节 存放形(shape)编号,所以它所定义的字符数量不超过256。大 字体形文件用两个字节存放形编号,所以可以定义65000多个字 符。所
25、以大字体形文件用于定义汉字。其表达式如下: (command style 汉字2 gbcbig ) 其中gbcbig是定义汉字的大字体,文件的全名是gbcbig.shx。 注意,该表达式增加了一对双引号,用于对应是否垂直书写的 选项。 4普通形文件与大字体形文件组合,定义汉字字样 西文字符用普通的形文件为原型,汉字部分用大字体形文件为 原型,从两种形文件中各选一个满意的形文件定义汉字字样。其 表达式如下: (command style 汉字3 complex,gbcbig ) VisualLISP程序设计(第2版)第8章 【例8.2】定义绘制图8-2所示的A4图框和标题栏的命令, 零件名称、零
26、件材料、零件数量、绘图比例是交互输入的 参数,详细尺寸参照GB/T 14689-1993。 图8-2 A4图框和标题栏 VisualLISP程序设计(第2版)第8章 定义绘制A4图框和标题栏的源程序如下: (defun c:a4( / v1 v2 v3 ljmch cl shl bl);定义命令的名字为a4 (setq v1(getvar osmode);获取当前的目标捕捉类型,将其赋给变量v1 (setq v2(getvar cmdecho);获取当前的普通命令提示状态,将其赋给变量v2 (setq v3(getvar blipmode);获取当前的光标痕迹显示状态,将其赋给变量 v3 (s
27、etvar osmode 0);关闭目标捕捉状态 (setvar cmdecho 0);不显示普通命令的提示 (setvar blipmode 0) ;不显示光标痕迹 (setq ljmch(getstring n输入零件名称:);将输入的零件名称赋给变量ljmch (setq cl(getstring n输入零件材料:);将输入的零件材料赋给变量cl (setq shl(getint n输入零件数量:);将输入的零件数量赋给变量shl (setq shl(itoa shl);将整数shl转换为字符串 (setq bl(getstring n输入绘图比例:);将输入的绘图比例赋给变量bl (c
28、ommand style 汉字 gbcbig );定义字样名为汉字 (command layer m 细线 c 1 );创建当前图层细线 VisualLISP程序设计(第2版)第8章 (command limits 0,0 210,297);设置图纸范围 (command zoom a);显示整个图纸范围 (command line 0,0 210,0 210,297 0,297 c);绘制 A4图纸的边框 (command layer m 粗线 c 7 lw 0.6 );创 建当前图层“粗线” (command line 25,5 205,5 205,292 25,292 c);绘 制图框
29、(command line 85,5 85,27 205,27 );绘制标题栏 (command line 85,13 205,13 ) (command line 100,13 100,27 ) (command line 120,13 120,27 ) (command line 132,5 132,27 ) (command line 162,5 162,13 ) (command line 180,5 180,27 ) (command layer m 细线 );设置“细线”为当前图层 VisualLISP程序设计(第2版)第8章 (command line 85,20 132,20
30、); (command layer m 文字 c 5 );创建当前图层“文字” (command text m (list 108.5 9) 5 0 清华大学机械厂);填写 标题栏 (command text m (list 147 9) 5 0 (strcat 材料 cl) (command text m (list 171 9) 5 0 (strcat 数量 shl) (command text m (list 192.5 9) 5 0 (strcat 比例 bl) (command text m (list 92.5 23.5) 5 0 制 图) (command text m (lis
31、t 92.5 16.5) 5 0 校 核) (command text m (list 156 20) 10 0 ljmch) (setvar osmode);恢复目标捕捉的原来状态 (setvar cmdecho v2) ;恢复普通命令提示原来的显示状态 (setvar blipmode v3) ;恢复光标痕迹原来的显示状态 (princ);静默退出 ) VisualLISP程序设计(第2版)第8章 程序说明如下: (1)第2-4行用getvar函数获取系统变量osmode等的当前值,将其赋给变量v1 、v2、v3,以便程序结束时恢复程序开始时的环境。 (2)第5-7行用setvar函数将系
32、统变量osmode等设置为有利于程序绘图的环境 。 (3)第11行(setq shl(itoa shl)的作用是将整数shl转换为字符串,以适应后面的 字符串运算。 (4)第30行,text之后的m是书写文本的定位方式选项,表示中点定位。 (5)第31行,strcat函数的功能是连接字符串,它将字符串材料 和用户输 入的字符串,例如40Cr, 连接为一个字符串材料 40Cr。 (6)第37-39行用setvar函数设置系统变量osmode等为程序开始时的值,恢复 程序开始时的环境。 (7)运行程序总要返回最后一个表达式的值,第40行(princ)返回了一个没有 任何值的结果,实现了静默退出。
33、(8)绘制直线和书写文本的数据,是参照GB/T 14689-1993、GB/T10609- 1989计算之后得到的。 (9)加载该程序,切换到AutoCAD窗口,在命令:提示下,键入A4,输入零 件名称、材料、数量和绘图比例,即可得到图8-2所示的图框和标题栏。 VisualLISP程序设计(第2版)第8章 8.4 尺寸标注 1. 长度型尺寸标注 长度型尺寸标注需要确定尺寸线是水平、垂直还是指定的方 向,如果默认尺寸测量值即为尺寸文本,那么关键是确定其第1 条尺寸界线起点的位置p1、第2条尺寸界线起点的位置p2和尺寸 线的位置p3。尺寸界线的起点通常与确定图形对象的点重合, 因此可看作是已知的
34、,于是剩余的工作就是确定位置尺寸线的 位置p3。 例如,以下两个表达式可得到图8-3(a)所示的直线p1p2。 (setq p1 (10 10) p2 (50 20) p3 (30 25) (command line p1 p2 ) (1)指定尺寸线为水平或垂直方向的长度型尺寸标注 (command dimlinear p1 p2 h p3) 该表达式的说明如下: dimlinear:command函数调用标注长度型尺寸的命令。 p1、p2:第1、2条尺寸界线起点的位置。 VisualLISP程序设计(第2版)第8章 h:尺寸线的方向。可以是水平方向、也可以是垂直方向(v)还 可以指定为其他方
35、向(Rotated)。若选择其他方向,其后需增加角 度数值。 p3:确定尺寸线的位置点。可以是一个变量,如该例;可以是 一个字符串x,y,串内的x、y确定了p3点在当前坐标系下的位 置,如30,25;也可以用相对于第2条尺寸界线的起点p2的位置 来确定它,这样会方便得多。其格式如下。 x,y:表示相对于,x表示相对于p2点的X方向的增量 ,y表示相对于p2点的Y方向的增量。由于选项h已将其确定为 水平型,所以x或x可以为任意数值。 (command dimlinear p1 p2 h p3) (command dimlinear p1 p2 h 30,25) (command dimlinea
36、r p1 p2 h -20,5) 以上3个表达式用不同的形式确定了尺寸线的位置,见图8- 3(a)。它们的效果相同, 但用最后一个表达式较为方便。其表达 式不含有m或t选项,表示默认尺寸测量值为尺寸文本。 VisualLISP程序设计(第2版)第8章 (a) (b) 图8-3水平方向的尺寸标注 如果要标注尺寸线为垂直方向的尺寸,只需将以上表达式中 的h改为v即可。例如: (setq p1 (10 10) p2 (40 25) p3 (45 25) (command line p1 p2 ) (command dimlinear p1 p2 v p3 ) 结果见图8-3(b)。 VisualLI
37、SP程序设计(第2版)第8章 (2)默认尺寸线方向的长度型尺寸标注 如果不指定尺寸线的方向,p3 点与p1、p2点的相对位置确定了 尺寸线的方向。若p3点的X坐标 在p1、p2点的X坐标之外,而且 p3点的Y坐标在p1、p2点的Y坐 标之间,尺寸线为垂直方向;其 图8-4 用p3点确定尺寸线为垂直方向 他情况的尺寸线为水平方向。 如果去掉上述3个表达式中的h选项,其结果不变,因为p3点的 X坐标在p1、p2点的X坐标之间。若改为以下表达式之一: (command dimlinear p1 p2 (45 15) (command dimlinear p1 p2 45,15) (command d
38、imlinear p1 p2 5,-5) 将得到该直线的尺寸线为垂直方向的标注,见图8-4。 VisualLISP程序设计(第2版)第8章 2. 对齐型尺寸标注 对齐型尺寸标注的特点是,尺寸 线的方向是确定的,它与被标注对 象的两个端点或指定的两尺寸界线 起点的连线平行。 以下两个表达式绘制了图8-5所 图8-5对齐型长度尺寸标注 示的长度为40的一段直线。 (setq p1 (10 10) p2 (polar p1 (* 0.1 pi) 40) p3 (35 25) (command line p1 p2 ) 以下每个表达式都能生成图8-5所示的对齐型长度尺寸标注。 (command dim
39、aligned p1 p2 p3) (command dimaligned p1 p2 35,25) (command dimaligned p1 p2 -13.04,2.64) 以上表达式中各参数的含义与长度型尺寸标注中各参数的含 义相同。 VisualLISP程序设计(第2版)第8章 3. 直径型和半径型尺寸标注 直径型和半径型尺寸标注需要首先选择被标注的圆或圆弧, 然后确定尺寸线的位置,如果默认尺寸测量值为尺寸文本,用 作为默认的选择即可。 (1)直径型尺寸标注 以下两个表达式绘制了图8-6(a)所示的一个圆。 (setq pc (100 100) r 12.5 p1 (polar pc
40、 0 12.5) p2 (105 105) (command circle pc r) (a) (b) 图8-6 直径型和半径型尺寸标注 VisualLISP程序设计(第2版)第8章 在上述表达式中,p1是圆的选择点,p2点确定了尺寸线的位置 和方向,字符串105,105是当前坐标系下的坐标,字符串-7.5,5是 相对于选择点p1的X方向的增量和Y方向的增量。由于默认尺寸的 测量值,所以尺寸文本的第一个字符为直径符号。 (2)半径型尺寸标注 以下两个表达式绘制了图8-6(b)所示的一个圆弧。 (setq p1 (100 87.5) p2 (112.5 100) p3 (87.5 100) p4
41、 (105 105) (command arc p1 p2 p3) 以下每个表达式都能生成图8-6(b)所示的半径型尺寸标注。 (command dimradius p2 p4) (command dimradius p2 105,105) (command dimradius p2 -7.5,5) 在上述表达式中,p2是圆弧的选择点,p4点确定了尺寸线的位 置和方向,字符串105,105是当前坐标系下的坐标,字符串-7.5,5 是相对于选择点p2的X方向的增量和Y方向的增量。由于默认尺寸 的测量值,所以尺寸文本的第一个字符为半径符号R。 VisualLISP程序设计(第2版)第8章 4. 角
42、度型尺寸标注 标注两条直线的夹角是最常见的角度型尺寸标注。需要首先 选择被标注的两条直线,然后确定尺寸线的位置,如果默认尺 寸测量值为尺寸文本,用作为默认的选择即可。 以下两个表达式绘制了图8-7(a)所示的两条直线。 (setq p1 (50 0) p2 (20 0) p3 (40 20) p4 (40 14) (command line p1 p2 p3 ) 以下每个表达式都能生成图8-7(a)所示的角度型尺寸标注。 (command dimangular p1 p3 p4) (command dimangular p1 p3 40,14) (command dimangular p1 p
43、3 0,-6) 在上述表达式中,p1是第一条直线的选择点,p3是第二条直 线的选择点,p4点确定了尺寸弧线的位置,字符串40,14是当前 坐标系下的坐标,字符串0,-6是相对于选择点p3的X方向的增 量和Y方向的增量。由于默认尺寸的测量值,所以尺寸文本的最 后一个字符为度的单位符号。 VisualLISP程序设计(第2版)第8章 图8-7(a)中尺寸文本“45”的书写方向与尺寸弧线中点的切线 方向相同,可能不符合某些单位的制图标准,改写为以下的表达 式之一,可以得到图8-7(b)的结果。 (command dimangular p1 p3 A 0.01 p4) (command dimangu
44、lar p1 p3 A 0.01 40,14) (command dimangular p1 p3 A 0.01 0,-6) 其中A是尺寸文本的旋转角度选项,其后是旋转角度的数值, 由于AutoCAD不接受0方向,因此取其近似值0.01。 (a) (b) 图8-7角度型尺寸标注 VisualLISP程序设计(第2版)第8章 5. 设置尺寸变量 (1)尺寸变量的作用 尺寸变量属于系统变量,用来控制尺寸线、尺寸界线、尺寸 文字和尺寸箭头等要素的样式、大小和它们之间的相对位置。 公制(Metric)和英制(English)的尺寸变量的初值是不同的。 例如,尺寸文字的高度,前者为2.5,后者为0.18
45、。本章介绍的尺 寸变量的初值均是公制状态的初值。 2. 常用的尺寸变量 AutoCAD提供了近80个尺寸变量,最常用到的有以下几个。 (1) DIMSCALE:总尺寸比例因子,初始值为1。 (2) DIMTAD:如果为0,长度型尺寸的尺寸文字注在尺寸线中 间,否则注在尺寸线的上方,初始值为1,如图8-8所示。 (3) DIMTIH:如果为0,长度型尺寸两尺寸界线之内的尺寸文 字与尺寸线方向一致,否则为水平方向,初始值为0,如图8-8所 示。 VisualLISP程序设计(第2版)第8章 (4) DIMTOH:如果为0,长度型尺寸两尺寸界线外侧的尺寸 文字与尺寸线方向一致,否则为水平方向,初始值
46、为0,如图8-8 所示。 图8-8 控制尺寸文字与尺寸线方向 (5) DIMTIX:如果为0,不强制尺寸文字在两尺寸界线之内 ,否则强制尺寸文字在两尺寸界线之内,初始值为0,如图8- 9所示。 VisualLISP程序设计(第2版)第8章 图8-9 控制两尺寸界线之内是否有尺寸文字或直线 (6) DIMTOFL:如果为0,箭头在两尺寸界线外侧时,内 部无直线,否则内部有直线,初始值为1,如图8-9所示。 VisualLISP程序设计(第2版)第8章 (8) dimdsep:确定实型数值整数与小数部份的分隔 字符,初始值为“,”,应该设置为“.”。 (9) dimlfac:长度型、直径型和半径型
47、尺寸测量值的 比例因子,初始值为1.0。例如,将该变量设置为2, 实际直径为100的圆,其尺寸测量值为200,默认的选 择将得到“200”的标注结果。 (10) dimtsz:如果为0,标注普通箭头,否则将普通 箭头设置为建筑工程图中的短斜线,初始值为0。 (11) DIMTOL:如果为0,不标注公差,否则标注公 差。 (12) DIMTP:尺寸上偏差,初始值为0.0000。 (13) DIMTM:尺寸下偏差,初始值为0.0000。 VisualLISP程序设计(第2版)第8章 3. 修改尺寸变量的值 因为尺寸变量属于系统变量,所以既可以通过setvar 函数,也可以通过command函数修改
48、尺寸变量的值。 以下是修改上述尺寸变量的表达式。 (setvar dimscale 2) ;设置尺寸标注总比例因子为2 (setvar dimtad 1) ;设置尺寸文本在尺寸线的上方 (setvar dimtih 0) ;设置两尺寸界线之内的尺寸文本与尺寸 线方向相同 (setvar dimtoh 0) ;设置两尺寸界线外侧的尺寸文本与尺寸 线方向相同 (setvar dimtix 1) ;强制尺寸文本在两尺寸界线之内 (setvar dimtofl 1) ;小尺寸标注时在两尺寸界线之内增加连 线 VisualLISP程序设计(第2版)第8章 (setvar dimzin 8) ;舍去尺寸数
49、字的无效尾0 (setvar dimdsep .);设置字符“.”作为尺寸数字中整数与小数 部份的分隔符 (setvar dimlfac 2) ;设置长度尺寸的测量值是实际值的2倍 (setvar dimtsz 2.5) ;设置短斜线的长度并取代普通箭头 或者 (command dimscale 1) ;设置尺寸标注总比例因子为1 (command dimtad 0) ;设置尺寸文本在尺寸线之间 (command dimdsep .) ;设置字符“.”作为尺寸数字中整数 与小数部份的分隔符 VisualLISP程序设计(第2版)第8章 6. 处理尺寸文本的测量值 尺寸的测量值是AutoCAD根
50、据所选的对象、尺寸界线的起点和尺寸线 的方向计算得到的。对于尺寸的测量值,用户只有满意、不满意和部份满 意三种情况。所谓部份满意,就是对尺寸数值满意,但缺少尺寸数值的前 缀或后缀。 (1)默认尺寸的测量值 如果尺寸的测量值和期待生成的尺寸文本完全一致,在这种情况下应该 选择默认,即表达式中不含“m”或“t”选项。此前的一些实例都属于这种 情况。 (2)用自己输入的文本作为尺寸文本 如果不想使用尺寸的测量值,在确定尺寸线位置时增加“m”或“t”选项 ,随后输入自定的文本即可。将前面相应的表达式改写如下。 (command dimlinear p1 p2 h t %c50 p3);见 图8-10(
51、a) (command dimaligned p1 p2 t 60cm p3) ;见 图8-10(b) (command dimdiameter p1 t 2X%c50 p2) ;见 图8-10(c) (command dimradius p2 t R10 p4) ;见 图8-10(d) (command dimangular p1 p3 A 0.01 t 45.5%d p4) ;见 图8-10(e) VisualLISP程序设计(第2版)第8章 (a) (b) (c) (d) (e) 图8-10用自己输入的文本作为尺寸文本 (3)为尺寸的测量值增加前缀或后缀 有时虽然对尺寸的测量值满意,但是
52、还不够,还需要为尺寸 的测量值增加前缀或后缀。例如图8-11,尺寸240需要增加前缀 “460”,尺寸40需要增加前缀“5”。解决的办法是, 在确定尺寸线位置时增加text或t选项,随后输入以下字符串 : “前缀内容后缀内容” 其中表示使用尺寸的测量值,可以缺少前缀或后缀的内容 。例如生成图8-11所示3个尺寸的表达式如下: (command dimlinear p1 p2 p3) (command dimlinear p1 p4 t 4X60= p5) (command dimdiameter p6 t 5X p7) VisualLISP程序设计(第2版)第8章 图8-11增加前缀的尺寸 图
53、8-12中需要增加前缀和后缀的尺寸。其表达式如下: (command dimdiameter p1 t 4X锪平%c45 p2) (command dimdiameter p3 t 深10 p4) 图8-12增加前缀或后缀的尺寸 VisualLISP程序设计(第2版)第8章 8.5 调用AutoCAD的图形编辑功能 1. 用程序调用图形编辑功能的好处 (1)利用已生成的图形对象构造出新的图形对象。例如图8- 13的图形有4个螺纹孔,只需绘制1个,其余调用AutoCAD的 copy命令即可。 图8-13 有4个螺纹孔的长方形底板 (2)提高编程效率。例如图8-13所示的图形的轮廓线是由4 段直线
54、和4个圆弧组成的。可以先计算出每条直线的端点、每个 圆弧的端点和中心,再调用line和arc命令绘制出该轮廓线;也 可以先绘制倒圆角之前的矩形,然后调用AutoCAD的fillet命令 ,倒出矩形的4个圆角。显然,后一种方法要简便一些。 VisualLISP程序设计(第2版)第8章 (3)将复杂的几何运算交给AutoCAD的命令去完成。例如 图8-14所示轴的断面图。它的轮廓线是由1个圆弧和3段直线组 成的。p1、p2点是圆弧和直线的共有端点。如果觉得像例6.2那 样求解它们的坐标比较麻烦,那么可以首先绘制圆和p4p3、 p3p5和p5p6三段直线,然后调用AutoCAD的trim命令,经过
55、trim命令的修剪得到该图的轮廓线。 图8-14轴的断面图 VisualLISP程序设计(第2版)第8章 【例8.3】 绘制图8-13所示的4个带有中心线的螺纹孔。 和交互作图一样,首先绘制一个带有中心线的螺纹孔,然后再复 制3个螺纹孔。以下几个表达式生成了图8-15(a)所示的两条中心 线和1个螺纹孔。 (command layer m zhongxin l center ) (command line -5,0 5,0 ) (command line 0,-5 0,5 ) (command layer m cuxian lw 0.3 ) (command circle 0,0 3) (co
56、mmand layer m xixian ) (command arc -3.5,0 0,3.5 0,-3.5) (command zoom a);为确保选到指定的图元,显示整个作图范围 以下表达式调用copy命令,复制3个带中心线的螺纹孔,见 图8-15(b)。 VisualLISP程序设计(第2版)第8章 (command copy w -5,-5 5,5 0,0 12,0 24,0 36,0 ) 对该表达式的各项说明如下。 copy:调用的复制命令。 w:整体在窗口内的图形对象被选中。 -5,-5:窗口一个角点的坐标。 5,5:窗口另一个角点的坐标。 :结束选择对象的操作。 0,0:复制
57、图形对象时位移矢量的第1点。 12,0、24,0、36,0:位移矢量的第2点。 :结束复制。 VisualLISP程序设计(第2版)第8章 该例利用窗口选项w和随后窗口的角点坐标,将整 体在窗口内的图形对象选中;此项若为c,将与窗口区 域相交的图形对象选中;此项若为l,最新生成的图形 对象被选中。若不输入选项直接输入一个点,则认为 是单点选择。 (a) (b) 图8-15复制两条中心线和1个螺纹孔 VisualLISP程序设计(第2版)第8章 【例8.4】 绘制图8-13所示的带有4个圆角的轮廓线。 以下表达式绘制矩形。 (command layer m cuxian ) (command l
58、ine -7,-6 43,-6 43,6 -7,6 c) (command zoom e);为确保选到指定的图元,尽可能大地显示图形 对象 以下表达式倒图8-16所示的矩形的4个圆角。 (command fillet r 1.5);设置圆角半径 (command fillet -7,0 18,-6);倒左下圆角 (command fillet 18,-6 43,0);倒右下圆角 (command fillet 43,0 18,6);倒右上圆角 (command fillet 18,6 -7,0);倒左上圆角 VisualLISP程序设计(第2版)第8章 图8-16倒矩形的4个圆角 也可以调用绘
59、制矩形命令,因为矩形是一个封闭的多义线, 因此,输入选项p,再选中这个矩形,一次即可倒完4个圆角。 其表达式如下: (command layer m cuxian ) (command rectangle -7,-6 43,6);绘制矩形 (command fillet r 1.5);设置圆角半径 (command fillet p 18,-6);倒圆角 VisualLISP程序设计(第2版)第8章 【例8.5】绘制图8-17(c)所示的轴的断面轮廓线。 以下两个表达式生成了图8-17(b)所示的1个圆和3段直线。 (command circle 0,0 40) (command line 5
60、0,11 31,11 31,-11 50,-11 ) 以下表达式调用AutoCAD的trim命令,得到图8-17(c)的修剪后的图形。 (command zoom e);为确保选到指定的图元,尽可能大地显示图形对象 (command trim All 40,0 50,11 50,-11 ) 对该表达式的各项说明如下: trim:command函数调用的修剪命令。 All:所有的图形对象作为剪切边。 :选择剪切边的操作结束。 40,0:被剪对象的位置,该点为圆上一点,指出该段是为要剪去的圆弧。 50,11、50,-11:被剪对象的位置,此两点为直线上的点,指出该段是为要剪 去的线段。 :修剪命令
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年厦门东海职业技术学院单招职业适应性考试题库及一套答案详解
- 2026年南京特殊教育师范学院单招职业技能测试题库及一套参考答案详解
- 四川省凉山州木里藏族自治县中学2026年高三第六次月考试卷(物理试题文)试题含解析
- 广安市重点中学2026年高三5月阶段测试数学试题试卷含解析
- 滨州市重点中学2026届高三第十五模数学试题含解析
- 河南省巩义市市直高中2025-2026学年高三暑假第二次阶段性测试数学试题试卷含解析
- 安庆市重点中学2026届高三第一次摸底考试语文试题文试题含解析
- 2025福建土楼旅游投资集团有限公司招聘16人笔试历年难易错考点试卷带答案解析2套试卷
- 2025湖南省矿产资源集团有限责任公司招聘1人笔试历年典型考点题库附带答案详解2套试卷
- 2025湖南岳阳市交通建设投资集团有限公司“四海揽才”招聘15人笔试参考题库附带答案详解
- 2026年小红书38好心情小会招商方案
- 2026年山东城市服务职业学院单招职业适应性测试模拟测试卷附答案
- 神经重症患者的护理风险评估
- 女性避孕方法临床应用中国专家共识
- 初中英语(完整版)连词and-or-but的用法练习题及答案
- 嘉兴微型顶管施工方案
- 新房建房申请书
- 结直肠外科的发展历程解析
- 输液错误不良事件课件
- 春节的传说故事(合集15篇)
- 京津冀金融协同发展:测度、困境与优化路径
评论
0/150
提交评论