第8章_《CAD-lisp二次开发》For free

上传人:飞*** 文档编号:51257107 上传时间:2018-08-13 格式:PPT 页数:105 大小:4.05MB
返回 下载 相关 举报
第8章_《CAD-lisp二次开发》For free_第1页
第1页 / 共105页
第8章_《CAD-lisp二次开发》For free_第2页
第2页 / 共105页
第8章_《CAD-lisp二次开发》For free_第3页
第3页 / 共105页
第8章_《CAD-lisp二次开发》For free_第4页
第4页 / 共105页
第8章_《CAD-lisp二次开发》For free_第5页
第5页 / 共105页
点击查看更多>>
资源描述

《第8章_《CAD-lisp二次开发》For free》由会员分享,可在线阅读,更多相关《第8章_《CAD-lisp二次开发》For free(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,0420,297(2)通过setvar函数设置图纸的范围系统变量limmin和limmax分别对应于图纸的左下和右上角点, 只需用setvar函数设置它们以新的值即可。(setvar “limmin“ (0

3、 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“) 或者(setvar “limmax“ p2)2. 设置绘图的长度和角度单位例如将绘图的长度单位设置为十进制、3位小数,角度单位 设置为十进制的度()十进制、2位小数、X轴正方向为0、逆 时针方向为正。(1)通过comman

4、d函数设置绘图的长度和角度单位(command “units“ 2 3 1 2 0 “N“)command的参数说明如下: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

5、 “angbase“ 0.0) ;X轴正方向为0(setvar “angdir“ 0) ;逆时针方向为正3. 设置目标捕捉的类型交互操作时,目标捕捉类型的选项是字符串,它以编码的 形式记录在系统变量osmode内,代码码的具体含义义是: 0 :NONe (不标捕捉任何类型的对象)1: ENDpoint (线段和圆弧的端点)2: MIDpoint (线段和圆弧的中点)4 :CENter (圆、椭圆和圆弧的中心点)ENDpoint MIDpoint CENter8: NODe (结点,用point命令生成的点)16 :QUAdrant (圆和圆弧的象限点)32: INTersection (线段和

6、圆弧的交点)NODe QUAdrant INTersection 64 :INSertion (图块或字符串的插入点)128 : PERpendicular (垂足)INSertion PERpendicular256:TANgent (切点)512: NEArest (对象上的最近点)1024:QUIck (快速捕捉)2048:APParent Intersection (在观察方向上相交的点)4096:EXTension (延长线上的点)8192:PARallel(与所选对象平行的点)TANgent APParent Intersection EXTension PARallel(1)通过

7、command函数设置设置目标捕捉的类型(command “osnap“ “endpoint,midpoint,center“);捕捉端 点、中点和中心(command “osnap“ “none“);不捕捉任何类型(2)通过setvar函数设置目标捕捉的类型(setvar “osmode“ 7);7是捕捉端点、中点和中心的代码之和(setvar “osmode“ 0);不捕捉任何类型将osmode设置为0(不捕捉任何类型)是通常的设置。假定 osmode的当前值为1,将捕捉直线或圆弧的端点。在这种情况 下,如果指定的是p点,而p点处刚好有一条直线,那么实际获 取的是该直线距p点较近的那个端点

8、,而不是p点本身。所以应 该用setvar函数将osmode设置为0。 4. 抑制AutoCAD普通命令的提示在运行程序的过程中,可能会显示AutoCAD普通命令的提示。例如command函数在调用line命令绘制直线时,在命令提示区会出现下图的提示。如果不关心这些信息,应该将其关闭,可以提高程序的运行速度。通过setvar函数抑制AutoCAD普通命令的提示,表达式如下:(setvar “cmdecho“ 0)cmdecho是控制普通命令提示是否显示的系统变量,当其为1时,照常显示AutoCAD普通命令的提示,将其设置为0,将抑制这样的一些提示,但仍然显示某些AutoLISP函数的提示信息。

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

10、ze/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“ “) 又因为当前图层的名字是Color、Ltype等选项默认的图层名 ,所以上式可改为:(command “layer“ “M“ “zhongxin“ “C“ 1 “ “L“ “Cente

11、r“ “ “LW“ 0.2 “ “)如果当前图层的颜色、线型、线宽等为默认的选择,表达式 如下:(command “layer“ “M“ “cuxian“ “)图层cuxian是当前图层、颜色号为7(白/黑)、线型为 continuous、线宽为当前图形对象的默认线宽。如果某图层已经存在,只是将其改变为当前状态,其表达式 如下:(command “layer“ “M“ “cuxian“ “)或者(command “layer“ “S“ “cuxian“ “)2. 设置新图形对象的颜色(1)通过command函数设置新图形对象的颜色(command “color“ 3) 或者(command “

12、color“ “green“);设置新图形对象的颜色为绿色(2)通过setvar函数设置新图形对象的颜色(setvar “cecolor“ “2“)或者(setvar “cecolor” “yellow”);设置新图形对象的颜色为黄色3. 设置新图形对象的线型(1)通过command函数设置新图形对象的线型(command “linetype“ “s“ “centerset“ “) ;设置新图形对象的线型为中心线(2)通过setvar函数设置新图形对象的线型(setvar “celtype“ “dashed“);设置新图形对象的线型为虚线 4. 设置线型比例因子的大小除了实线(continuo

13、us)之外,每种线型都是由不同长度的短划线、空白段或点组成的。在不同的显示比例下,这些短划线和空白段的视觉效果可能过大或过小。改变线型比例因子的大小并不改变整条线段的长度,只改变短划线和空白段的大小。 例如,将线型的短划线和空白段缩小一半。(1)通过command函数设置线型比例因子的大小(command “ltscale“ 0.5)(2)通过setvar函数设置设置线型比例因子的大小(setvar “ltscale“ 0.5)5. 设置新图形对象的线宽(1)通过command函数设置新图形对象的线宽(command “lweight“ 0.5);设置新图形对象的线宽为0.5(2)通过setv

14、ar函数设置新图形对象的线宽系统变量celweight记录着新图形对象的线宽,它的值是整型的,以1为单位。例如设置新图形对象的线宽为0.5的表达式如下:(setvar “celweight“ 50) 【例8-1】 定义绘制图8-1的平键外形轮廓线和中心线的命令,插入点p、键宽b、键长L、旋转角alf是交互输入的参数,要求粗实线所在图层的名字为cuxian、蓝色;中心线所在图层的名字为zhongxin,红色,线型为center(中心线)。1. 定义绘制平键轮廓线命令的源程序(defun c:pingjian(/ p b l alf r l1 p1 p2 p3 p4 p5 p6 p7 p8 p9

15、p10)(setvar “osmode“ 0) ;关闭目标捕捉状态(setvar “cmdecho“ 0) ;抑制普通命令的提示(command“layer“ “make“ “cuxian“ “c“ 5 “cuxian“ “); 生成粗实线所在的图层,状态为当前层,名字为cuxian,颜色 为蓝(setq p(getpoint “输入平键的定位点:“);以交互方式 得到平键的定位点p(setq b(getdist p “输入平键的宽度:“);以交互方式得 到平键的宽度b(setq l(getdist p “输入平键的长度:“);以交互方式得 到平键的长度l(setq alf(getangle

16、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“ “close“);绘制平键的外形轮廓线(command “layer“ “m“ “zhongxin“ “c“ 1 “ “l“ “center“ “ “);生成中心线所在的图层,状态为当前层,名字为 zhongxinxian

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号