编程实例清华CAD二次开发LISP.ppt
《编程实例清华CAD二次开发LISP.ppt》由会员分享,可在线阅读,更多相关《编程实例清华CAD二次开发LISP.ppt(105页珍藏版)》请在三一办公上搜索。
1、第 8 章 编程实例,8.1设置作图环境 编程作图和交互作图一样,也需要设置作图的环境,例如图纸的范围、绘图的单位、目标捕捉的类型、图层、颜色、线型、线宽、字样等,如果缺少对作图环境的设置,只能是利用加载程序时AutoCAD提供的默认环境。设置一个合适的作图环境不仅可以提高作图的精度和效率,有时还会影响到所绘制的图纸是否符合企业的规范和满足生产的需要。用程序实现设置作图环境的功能可以通过command函数调用相关的命令,或者通过setvar函数改变相应系统变量的当前值或当前状态。有些功能只能通过上述一种途径实现,有些功能可以通过上述两种途径实现。,1.设置图纸的范围 例如设置A3图纸的作图范围
2、(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),0,0,420,297,(2)通过setvar函数设置图纸的范围 系统变量limmin和limmax分别对应于图纸的左下和右上角点,只需用setvar函数设置它们以新的值即可。(setvar limmin(0 0)或者(setvar limmin(li
3、st 0 0)或者(setvar limmin 0,0)或者(setvar limmin p1)设置图纸的右上角点的表达式如下:(setvar limmax(420 297)或者(setvar limmax(list 420 297)或者(setvar limmax 420,297)或者(setvar limmax p2),2.设置绘图的长度和角度单位 例如将绘图的长度单位设置为十进制、3位小数,角度单位设置为十进制的度()十进制、2位小数、X轴正方向为0、逆时针方向为正。(1)通过command函数设置绘图的长度和角度单位(command units 2 3 1 2 0 N)command的
4、参数说明如下:units:AutoCAD设置绘图单位的命令;2:长度单位为十进制;3:3位小数;1:角度单位为十进制的度;2:2位小数;0:X轴正方向为0;N:非顺时针,即逆时针为正。,(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);逆时针方向为正,3.设置目标捕捉的类型 交互操作时,
5、目标捕捉类型的选项是字符串,它以编码的形式记录在系统变量osmode内,代码的具体含义是:0:NONe(不标捕捉任何类型的对象)1:ENDpoint(线段和圆弧的端点)2:MIDpoint(线段和圆弧的中点)4:CENter(圆、椭圆和圆弧的中心点),ENDpoint MIDpoint CENter,8:NODe(结点,用point命令生成的点)16:QUAdrant(圆和圆弧的象限点)32:INTersection(线段和圆弧的交点),NODe QUAdrant INTersection,64:INSertion(图块或字符串的插入点)128:PERpendicular(垂足),INSert
6、ion PERpendicular,256:TANgent(切点)512:NEArest(对象上的最近点)1024:QUIck(快速捕捉)2048:APParent Intersection(在观察方向上相交的点)4096:EXTension(延长线上的点)8192:PARallel(与所选对象平行的点),TANgent APParent Intersection EXTension PARallel,(1)通过command函数设置设置目标捕捉的类型(command osnap endpoint,midpoint,center);捕捉端点、中点和中心(command osnap none);
7、不捕捉任何类型(2)通过setvar函数设置目标捕捉的类型(setvar osmode 7);7是捕捉端点、中点和中心的代码之和(setvar osmode 0);不捕捉任何类型 将osmode设置为0(不捕捉任何类型)是通常的设置。假定osmode的当前值为1,将捕捉直线或圆弧的端点。在这种情况下,如果指定的是p点,而p点处刚好有一条直线,那么实际获取的是该直线距p点较近的那个端点,而不是p点本身。所以应该用setvar函数将osmode设置为0。,4.抑制AutoCAD普通命令的提示 在运行程序的过程中,可能会显示AutoCAD普通命令的提示。例如command函数在调用line命令绘制直
8、线时,在命令提示区会出现下图的提示。如果不关心这些信息,应该将其关闭,可以提高程序的运行速度。通过setvar函数抑制AutoCAD普通命令的提示,表达式如下:(setvar cmdecho 0)cmdecho是控制普通命令提示是否显示的系统变量,当其为1时,照常显示AutoCAD普通命令的提示,将其设置为0,将抑制这样的一些提示,但仍然显示某些AutoLISP函数的提示信息。通常应将cmdecho设置为0。,8.2 设置图层、颜色、线型和线宽 1.创建一个当前图层 假定图层的名字是“zhongxin”、颜色为红色、线型为center、线宽为0.2,通过command函数创建一个当前图层表达式
9、如下:(command layer Make zhongxin Color 1 zhongxin Ltype Center zhongxin LWeight 0.2 zhongxin)因为在命令行操作时,layer命令需要空回车响应“?/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 zh
10、ongxin C 1 zhongxin L Center zhongxin LW 0.2 zhongxin),又因为当前图层的名字是Color、Ltype等选项默认的图层名,所以上式可改为:(command layer M zhongxin C 1 L Center LW 0.2)如果当前图层的颜色、线型、线宽等为默认的选择,表达式如下:(command layer M cuxian)图层cuxian是当前图层、颜色号为7(白/黑)、线型为continuous、线宽为当前图形对象的默认线宽。如果某图层已经存在,只是将其改变为当前状态,其表达式如下:(command layer M cuxian
11、)或者(command layer S cuxian),2.设置新图形对象的颜色(1)通过command函数设置新图形对象的颜色(command color 3)或者(command color green);设置新图形对象的颜色为绿色(2)通过setvar函数设置新图形对象的颜色(setvar cecolor 2)或者(setvar“cecolor”“yellow”);设置新图形对象的颜色为黄色,3.设置新图形对象的线型(1)通过command函数设置新图形对象的线型(command linetype s centerset);设置新图形对象的线型为中心线(2)通过setvar函数设置新图形
12、对象的线型(setvar celtype dashed);设置新图形对象的线型为虚线,4.设置线型比例因子的大小 除了实线(continuous)之外,每种线型都是由不同长度的短划线、空白段或点组成的。在不同的显示比例下,这些短划线和空白段的视觉效果可能过大或过小。改变线型比例因子的大小并不改变整条线段的长度,只改变短划线和空白段的大小。例如,将线型的短划线和空白段缩小一半。(1)通过command函数设置线型比例因子的大小(command ltscale 0.5)(2)通过setvar函数设置设置线型比例因子的大小(setvar ltscale 0.5),5.设置新图形对象的线宽(1)通过c
13、ommand函数设置新图形对象的线宽(command lweight 0.5);设置新图形对象的线宽为0.5(2)通过setvar函数设置新图形对象的线宽 系统变量celweight记录着新图形对象的线宽,它的值是整型的,以1为单位。例如设置新图形对象的线宽为0.5的表达式如下:(setvar celweight 50),【例8-1】定义绘制图8-1的平键外形轮廓线和中心线的命令,插入点p、键宽b、键长L、旋转角alf是交互输入的参数,要求粗实线所在图层的名字为cuxian、蓝色;中心线所在图层的名字为zhongxin,红色,线型为center(中心线)。,1.定义绘制平键轮廓线命令的源程序(
14、defun c:pingjian(/p b l alf r l1 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10)(setvar osmode 0);关闭目标捕捉状态(setvar cmdecho 0);抑制普通命令的提示(commandlayer make cuxian c 5 cuxian);生成粗实线所在的图层,状态为当前层,名字为cuxian,颜色为蓝(setq p(getpoint 输入平键的定位点:);以交互方式得到平键的定位点p(setq b(getdist p 输入平键的宽度:);以交互方式得到平键的宽度b(setq l(getdist p 输入平键的长度:);以
15、交互方式得到平键的长度l,(setq alf(getangle p 输入平键的旋转角:);以交互方式得到平键的旋转角alf(setq r(*0.5 b)l1(-l b);r和l1分别是平键宽度b和平键长度l的一半(setq p1(polar p(+alf(*0.5 pi)r);p1-p4是多义线的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 arc cl
16、ose);绘制平键的外形轮廓线(command layer m zhongxin c 1 l center);生成中心线所在的图层,状态为当前层,名字为zhongxinxian,颜色为红,线型为中心线(点划线),(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 p(+alf pi)(+r 8)(setq p10(p
17、olar p alf(+(-l r)8)(command line p5 p8);绘制中心线(command line p6 p7)(command line p9 p10),2.程序说明(1)定义AutoCAD命令与定义函数一样,都是通过defun函数,不同之处是命令名前必须加“C:”。(2)AutoCAD命令的变元表内不能有变元,除号之后的p、b、l等是这个函数的局部变量声明,即使没有局部变量的声明,也不能缺少变元表的一对括号。(3)第3行通过setvar函数和系统变量cmdecho抑制普通命令的提示,但并不抑制get函数的提示。(4)第5行getpoint函数的功能是在交互状态下获取一个
18、点,既可以用鼠标在屏幕上指定一个点,也可以通过键盘键入一个点的坐标,如键入100,50,响应输入平键的定位点:的提示。(5)第6行getdist函数的功能是在交互状态下获取一个长度值,既可以通过键盘键入具体的数值,也可以用鼠标在屏幕上指定两个点,两点的长度即为输入的长度值,由于本例提供了参照点p,只需用鼠标在屏幕上指定一个点,该点与p的距离即为输入的长度值。,(6)第8行getangle函数的功能是在交互状态下获取一个角度值,既可以通过键盘键入具体的数值,也可以用鼠标在屏幕上指定两个点,两点连线与X轴的正向夹角即为输入的角度值,由于本例提供了参照点p,只需用鼠标在屏幕上指定一个点,该点与p的连
19、线与X轴的正向夹角即为输入的角度值。注意:尽管键入的角度以度为单位(例如180),但获取的角度以弧度为单位(例如3.14159)。(7)第14行调用的是command函数,pline是被调用的AutoCAD具体命令;该表达式可简化为如下代码:(command pline p1 w 0.6 0.6 p2 a p3 l p4 a cl)其中w、a、l和cl分别是pline命令的选项width、arc、line和close。(8)第15行和第4行的功能都是生成当前图层。该表达式也可以改写为一个函数,其功能是生成一个当前层,并设置该层的颜色和线型。源代码如下:,(defun tuceng(name c
20、olor ltyle)(command layer m name c color name l ltype)各变元的数据类型和含义如下:name:字符串,图层的名字。color:0-255的一个整数,图层的颜色号。ltype:字符串,AutoCAD提供的线型名,如dashed、center。将第4行改为调用该函数,表达式如下:(tuceng cuxian 3)将第15行改为调用该函数,表达式如下:(tuceng zhongxin 1 center)(9)切换到AutoCAD窗口,在Command提示下,键入pingjian,按照程序的提示,输入相应的数据,即可得到上图所示的图形。,8.3 定义
21、字样 Style命令以AutoCAD提供的.shx类型的形文件或windows等提供的.ttf类型的字体文件为原型定义字样。新图开始时,只有一种字样,名字为standard,是以AutoCAD提供的形文件txt.shx为原型定义的。如果不满意standard字样或者需要书写汉字,就必须自己定义字样。以下是通过command函数调用Style命令定义字样的表达式。1以AutoCAD提供的形文件为原型定义字样(command style ziyang1 complex 0.0 1.0 0.0 N N N)各项含义如下:style:定义字样的命令。ziyang1:字样的名字。,complex:Aut
22、oCAD提供的形文件名,文件全名complex.shx。0.0:字的固定高度,若该值为0,表示没有固定的字高,每次调用text命令时,临时指定字高。1.0:宽度因子,为1.0时的高宽比约为3:2。0.0:字的倾斜角度(obliquing angle)。N:不反写(backwards),若为Y时,为反字(左右颠倒)。N:不倒写(upside-down),若为Y时,为倒字(上下颠倒)。N:不垂直书写。由于字体原型文件名之后的选项都是默认值,因此上述表达式可以简化表示为:(command style ziyang complex),2以Windows提供的字体文件stfanso.ttf为原型定义名字
23、为hanzi1的字样(command style hanzi1 stfangso.ttf)由于可以用字体名代替字体文件名,因此上述表达式可以表示为:(command style hanzi2 华文仿宋)注意,该表达式没有对应是否垂直书写的选项。,3以一个大字体(big font)形文件为原型定义汉字字样 用Windows提供的字体文件可以很好地解决汉字书写的问题,但特殊字符“”、“”和“”不能用AutoCAD规定的c、%d、%p转义输入,用大字体形文件为原型定义的汉字可以很解决这个问题。其表达式如下:(command style hanzi3 gbcbig)其中gbcbig是定义汉字的大字体,
24、文件的全名是gbcbig.shx。4普通形文件与大字体形文件组合,定义汉字字样 西文字符用普通的形文件为原型,汉字部份用大字体形文件为原型,从两种形文件中各选一个满意的形文件定义汉字字样。其表达式如下:(command style hanzi4 complex,gbcbig),【例8-2】定义绘制下图所示A4图框和标题栏的命令,零件名称、零件材料、数量、绘图比例是交互输入的参数,详细尺寸参照GB/T 14689-1993、GB/T10609-1989。,1.定义绘制A4图框和标题栏的源程序(defun c:a4(/v1 v2 v3 ljmch cl shl bl);定义命令的名字为a4(set
25、q v1(getvar osmode);获取当前的目标捕捉类型,将其赋给变量v1(setq v2(getvar cmdecho);获取当前的普通命令提示状态,将其赋给变量v2(setq v3(getvar blipmode);获取当前的光标痕迹显示状态,将其赋给变量v3(setvar osmode 0);关闭目标捕捉状态(setvar cmdecho 0);不显示普通命令的提示(setvar blipmode 0);不显示光标痕迹,(setq ljmch(getstring n输入零件名称:);将输入的零件名称赋给变量ljmch(setq cl(getstring n输入零件材料:);将输入的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编程 实例 清华 CAD 二次开发 LISP
链接地址:https://www.31ppt.com/p-6393741.html