计算机辅助设计与制造7autolisp_第1页
计算机辅助设计与制造7autolisp_第2页
计算机辅助设计与制造7autolisp_第3页
计算机辅助设计与制造7autolisp_第4页
计算机辅助设计与制造7autolisp_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

1、1AutoLispAutoLisp二次开发技术(2) 计算机辅助设计与制造螺栓参数化绘图109(1)确定输入参数:21311公称直径d公称长度ld 基点坐标 0点564801272d(2)通过已确定的参数确定他几何数据图形的其ld0.7d2d 0.8d d调用AutoCAD命令绘图计算点的坐标确定基本输入参数AutoLisp2310AutoLisp921311564801272dld0.7d(polar 基点角度距离)从基点开始以一定的角度和距离来定义一个新点,返回值为新点的标与X轴正方向的夹角为<角度>, 其中,角度的是弧度。2d0.8dd计算点相对点相对角度相对长度10pi/2

2、d/2210ld-2d3202d-0.1d42- pi/2(d-0.8d)/25402d4utoLisp设置作图环境10921311数值检测564801272dld0.7d调用AutoCAD命令(图层、绘图、镜像等操作)2d 0.8d d5AutoLisp一、AutoLisp设置作图环境编程作图和交互作图一样,也需要设置作图的环境,例如图纸的范围、绘图的、目标捕捉的类型、图层、颜色、线型、线宽、字样等, 如果缺少对作图环境的设置, 只能是利用加载程序时AutoCAD提供的默认环境。设置一个合适的作图环境不仅可以提高作图的精度和效率,有时还会影响到所绘制的图纸是否符合企业的规范和满足生产的需要。

3、用程序实现设置作图环境的功能可以通过command函数调令,或者通过setvar函数改变相应系统变量的当前值或用相关当前状态。有些功能只能通过上述一种途径实现,有些功能可以通过上述两种途径实现。6AutoLisp1、设置图纸的范围例如设置A3图纸的作图范围(1)通过command函数设置图纸的范围(command(command"limits"“limits”"0,0" "420,297")p1p2)420,2970,07AutoLisp(2)通过setvar函数设置图纸的范围系统变量limmin和limmax分别对应于图纸的左下和右

4、上角点, 只需用setvar函数设置它们以新的值即可。(setvar "limmin" "0,0")(setvar "limmax" "420,297")limmaxlimmin8AutoLisp2. 设置绘图的长度和角度例如将绘图的长度设置为十进制、3位小数,角度设置为十进制的度(°)十进制、2位小数、X轴正方向为0°、逆时针方向为正。(1)通过command函数设置绘图的长度和角度(command "units" 2 3 0 2 0 "N")comma

5、nd的参数说明如下:units:AutoCAD设置绘图令;2:长度为小数制;3:3位小数;0:角度为十进制的度;2:2位小数;0:X轴正方向为0°;N:非顺时针,即逆时针为正。9AutoLisp(2)通过setvar函数设置设置绘图的长度和角度(setvar "lunits" 2);长度为十进制(setvar "luprec" 3);长度3位小数(setvar "aunits" 0);角度为十进制的度(setvar "auprec" 2)为长2位小数;角度(setvar "angbase&quo

6、t; 0.0);X轴正方向为0°(setvar "angdir" 0);逆时针方向为正二、设置图层、颜色、线型和线宽10921311564801272d0.7dld2d 0.8d dAutoLisp1011AutoLisp二、设置图层、颜色、线型和线宽1. 创建一个当前图层假定图层的名字是“zhongxin”、颜色为红色、线型为center、线宽为0.2,通过command函数创建一个当前图层表达式如下:(command"layer""Make""zhongxin""Color"1&q

7、uot;zhongxin""Ltype" "Center" "zhongxin" "LWeight" 0.2 "zhongxin" "")因为Make、Color、Ltype、LWeight等选项可以简写为M、C、L、LW,所以上式可改为:(command "layer" "M" "zhongxin" "C" 1 "zhongxin" "zhongxin&q

8、uot; "LW" 0.2 "zhongxin" "")"L" "Center"12AutoLisp(command "layer" "M" "zhongxin" "C" 1 "zhongxin" "zhongxin" "LW" 0.2 "zhongxin" "")"L" "Center&

9、quot;又因为当前图层的名字是Color、Ltype等选项默认的图层名,所以上 式可改为:(command "layer" "M" "zhongxin" "C" 1 "" 0.2 "" "")"L" "Center" "" "LW"如果当前图层的颜色、线型、线宽等为默认的选择,表达式如下:(command "layer" "M" &qu

10、ot;cuxian" "")图层cuxian是当前图层、颜色号为7(白/黑)、线型为continuous、线宽为当前图形对象的默认线宽。1 红色,2 黄色,3 绿色,4 青色,5,6 品红色,7 白色/黑色。13AutoLisp4、设置线型比例因子的大小除了实线(continuous)之外,每种线型都是由不同长度的短划线、空白段或点组成的。在不同的显示比例下,这些短划线和空白段的视觉效果可能过大或过小。改变线型比例因子的大小并不改变整条线段的长度,只改变短划线和空白段的大小。 例如,将线型的短划线和空白段缩小一半。(1)通过command函数设置线型比例因子的大小

11、(command "ltscale" 0.5)(2)通过setvar函数设置设置线型比例因子的大小(setvar "ltscale" 0.5)14AutoLisp5、设置新图形对象的线宽(1)通过command函数设置新图形对象的线宽(command "lweight" 0.5);设置新图形对象的线宽为0.5(2)通过setvar函数设置新图形对象的线宽系统变量celweight着新图形对象的线宽,它的值是整型的,以1为。例如设置新图形对象的线宽为0.5的表达式如下:(setvar "celweight" 50)1

12、5AutoLisp【例】 定义绘制平键外形轮廓线和中心线令,点p、键宽b、键长L、旋转角alf是交互输入的参数,要求粗实线所在图层的名字为cuxian、;中心线所在图层的名字为zhongxin,红色,线型为center(中心线)。16AutoLisp例、定义绘制平键轮廓线命令的源程序(defun c:pingjian( )(setvar "osmode" 0) ;关闭目标捕捉状态(setvar "cmdecho" 0) ;抑制普通命令的提示(setq p (getpoint "输入平键的点:");以交互方式得到平键的点p(setq b

13、 (getdist "输入平键的宽度:");以交互方式得到平键的宽度b (setq l (getdist "输入平键的长度:");以交互方式得到平键的长度l(setq alf (getangle "输入平键的旋转角:");以交互方式得到旋转角alf键.lsp17AutoLisp(setq r (* 0.5 b) l1 (- l b);(setq p1 (polar p (+ alf (* 0.5 pi) r);p1-p4是多义线的4个顶点(setq p2 (polar p1 alf l1)(setq p3 (polar p2 (+ a

14、lf (* 1.5 pi) b)(setq p4 (polar p1 (+ alf (* 1.5 pi) b)AutoLisp18(command "layer" "make" "cuxian" "c" 5 "cuxian" "");生成粗实线所在的图层,状态为当前层,名字为cuxian,颜色为蓝(command "pline" p1 "width" 0.6 0.6 p2 "arc" p3 "line&qu

15、ot; p4 "arc""close");绘制平键的外形轮廓线"pline"是被调用的AutoCAD具体命令;该表达式可简化为如下代码:(command "pline" p1 "w" 0.6 0.6 p2 "a" p3 "l" p4 "a" "cl")其中"w"、"a"、"l"和"cl"分别是pline命令的选项"width&q

16、uot;、"arc"、"line"和"close"。19AutoLisp(command "layer" "m" "zhongxin" "c" 1 "" "l" "center" "" "");生成中心线所在的图层,状态为当前层,名字为zhongxinxian, 颜色为红,线型为中心线(点划线)(setvar "ltscale" 0.5)

17、20AutoLisp(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 (polar p alf (+ (- l r) 8)(command "line" p5 p8 "");绘制中心线(comman

18、d "line" p6 p7 "")(command "line" p9 p10 "")21AutoLisp三、1. 长度型长度型标注标注标注需要确定线是水平、垂直还是指定的方文本,那么关键是确定其第向,如果默认测量值即为1条界线起点的位置p1、第2条界线起点的位置p2和尺寸线的位置p3。界线的起点通常与确定图形对象的点重合,因此可看作是已知的,于是剩余的工作就是确的位置p3。置线22AutoLisp(1)指定线为水平或垂直方向的长度型标注(command "dimlinear" p1 p2 &

19、quot;h" p3)该表达式的说明如下:dimlinear:command函数调用标注长度型令。p1、p2:第1、2条界线起点的位置。h:线的方向。水平方向( h)、垂直方向(v) 还是指定其他方向(Rotated)。若选择其他方向,其后需增加角度数值。p3:确定线的位置点。可以是一个变量,如该例;可以是一个字符串“x,y”,串内的x、y确定了p3点在当前坐标系下的位置,如“30,25”;也可以用相对于第2条界线的起点p2的位置来确定它,这样会方便得多。其格式为: "Dx,Dy",表示相对于,Dx表示相对于p2点的X方向的增量,Dy表示相对于p2点的Y方向的增量

20、。由于选项h已将其确定为水平型,所以x或Dx可以为任意数值。23AutoLisp(command "dimlinear" p1 p2 "h" p3)(command "dimlinear" p1 p2 "h" "30,25") (command "dimlinear" p1 p2 "h" "-20,5")3个表达式用不同的形式确定了的位置,见图a线,只需将以上表达式中的“h”改为“v”如果要标注线为水平方向的即可。例如(结果见图b):(

21、command "dimlinear" p1 p2 "v" p3 )ab(setq p1 '(10 10) p2 '(50 20) p3 '(30 25)(command “line” p1 p2 “”) ;绘制直线P1P224AutoLisp2. 对齐型对齐型标注标注的特点是,线的方向是确定的,它与界线起点的连线平行。被标注对象的两个端点或指定的两以下每个表达式都能生成下图所示的对齐型长度(command "dimaligned" p1 p2 p3) (command "dimaligned&quo

22、t; p1 p2 "35,25")(command "dimaligned" p1 p2 "-13.04,2.64")标注。表达式中各参数的含义与长度标注中各参数的含义相同。25AutoLisp3. 直径型和半径型直径型和半径型标注标注需要首先选择被标注的圆或圆弧,然后确定线的位置.(1)直径型标注以下两个表达式绘制了下图所示的一个圆。(setq pc '(100 100) r 12.5 p1 (polar pc 0 12.5) p2 (105 105)(command "circle" pc r)26Au

23、toLisp以下每个表达式都能生成下图所示的直径型标注。(command "dimdiameter" p1 p2) (command "dimdiameter" p1 "105,105")(command "dimdiameter" p1 "-7.5,5")在上述表达式中,p1是圆的选择点,p2点确定了线的位置和方向,字符串"105,105"是当前坐标系下的坐标,字符串"-7.5,5"是相对于选择点p1的X方向的增量和Y方向的增量。由于默认"&#

24、175;"。的测量值,所以文本的第一个字符为直径符号27AutoLisp(2)半径型标注以下每个表达式都能生成下图所示的半径型(command "dimradius" p2 p4) (command "dimradius" p2 "105,105") (command "dimradius" p2 "-7.5,5")标注。p2是圆弧的选择点,p4点确定了线的位置和方向,字符串"105,105"是当前坐标系下的坐标,字符串"-7.5,5"是相对于选

25、择点p2的X方向的增量和Y方向的增量。由于默认的测量值,所以文本的第一个字符为半径符号"R"。28AutoLisp4. 角度型标注标注两条直线的夹角是是最常见的角度型标注。需要首先选择被标注的两条直线,然后确定线的位置,如果默认测量值为文本,用""作为默认的选择即可。以下每个表达式都能生成下图所示的角度型(command "dimangular" p1 p3 p4) (command "dimangular" p1 p3 "40,14") (command "dimangular&qu

26、ot; p1 p3 "0,-6")标注。p1是第一条直线的选择点p3是第二条直线的选择点,p4点确定了弧线的位置,字符串"40,14"是当前坐标系下的坐标,字符串"0,-6"是相对于选择点p3的X方向的增量和Y方向的增量。由于默认的测符号"°"。量值,所以文本的最后一个字符为度的29AutoLisp5. 设置变量变量属于系统变量,用来线、界线、文本和箭头等要素的样式、大小和它们之间的相对位置。公制(Metric)和英制(English)环境下的是始值是不同的。变量的初例如,文本的字高,前者为2.5,后者为

27、0.18。本节介绍的变量的初值均是公制状态下的初值。30AutoLisp(1)最常用到的变量AutoCAD2004提供了64个变量。 dimscale:总比例因子,初始值为1。 dimtad:如果为0(OFF),长度型的文本注在线中间,否线的上方,初始值为1。则注在 dimtih:如果为0,长度型两界线之内的文本与线方向一致,否则为水平方向,初始值为0(OFF)。 dimtoh:如果为0,长度型两界线外侧的文本与线方向一致,否则为水平方向,初始值为0(OFF) 。31AutoLisp dimtix:如果为0,不强制文本在两界线之内,否则强制文本在两界线之内,初始值为0。 dimtofl:如果为

28、0,箭头在两直线,否则内部有直线,初始值为1 。界线外侧时,内部无32AutoLisp dimzin:如果为8,舍弃无效的尾零,例如:10.0000注为10,12.5000注为12.5,初始值为8。 dimdsep:确定实型数值整数与小数部份的分隔字符,初始值为“,”,应该设置为“.”。 dimlfac:长度型、直径型和半径型数值的比例因子,初始值为1.0。例如,将该变量设置为2,直径为100的圆,其测量值为200,默认的选择将得到“¯200”的标注结果为dimtsz:如果为0,标注普通箭头,否则将普通箭头设置工程图中的短斜线,初始值为0。33AutoLisp(3)修改变量的值因为变

29、量属于系统变量,所以既可以通过setvar函数,也可以通过command函数修改(setvar "ltscale" 2) ;设置(setvar "dimtad" 1) ;设置(setvar "dimtih" 0) ;设置两(setvar "dimtoh" 0) ;设置两(setvar "dimtix" 1) ;强制变量的值。标注总比例因子为2文本在线上方界线之内的文本与线方向相同界线外侧的文本与线方向相同文本在两界线之内(setvar "dimtofl" 1) ;小标注时在两

30、界线之内增加连线34AutoLisp(setvar "dimzin" 8) ;舍去数字的无效尾0(setvar "dimdsep" ".");设置字符"."作为隔符数字中整数与小数部份的分(setvar "dimlfac" 2) ;设置长度的测量值是实际值的2倍(setvar "dimtsz" 2.5) ;设置短斜线的长度并取代普通箭头或者(command "ltscale" 1) ;设置标注总比例因子为1(command "dimtad&quo

31、t; 0) ;设置文本在线之间(command "dimdsep" ".") ;设置字符"."作为的分隔符数字中整数与小数部份35AutoLisp6. 处理文本的测量值的测量值是AutoCAD根据所选的对象、线的方向计算得到的。界线的起点和(1)默认如果的测量值的测量值和期待生成的文本完全一致,在这种情况下应该选择默认,即表达式中不含"text"或"t"选项。此前的一些实例都属于这种情况。(2)用输入的文本作为文本如果不想使用的测量值,在确定线位置时增加"text"或&quo

32、t;t"选项,随后输入自定的文本即可。将前面相应的表达式改写如下:(3)为的测量值增加前缀或后缀36AutoLisp(command "dimlinear" p1 p2 "h" "t" "%c50" p3);见图a(command "dimaligned" p1 p2 "t" "60cm" p3);见图b (command "dimdiameter" p1 "t" "2X%c50" p2

33、);见图c (command "dimradius" p2 "t" "R10" p4);见图d(command "dimangular" p1 p3 "A" 0.01p4);见图e"t" "45.5%d"abcde37AutoLisp(3)为的测量值增加前缀或后缀有时虽然对的测量值满意,但是还不个够,还需要为的测量值增加前缀或后缀。解决的办法是,在确定线位置时增加"text"或"t"选项,随后输入以下字符串:&quo

34、t;前缀内容<>后缀内容"其中<>表示使用的测量值,如果不需要为的测量值增加前缀或后缀,可以缺少相应的内容。,240需要增加前 缀“4×60”,¯40需要增加前缀“5×”38AutoLisp(3)为的测量值增加前缀或后缀60、4×60240和5ׯ40表达式如下:例如下图生成(command "dimlinear" p1 p2 p3)(command "dimlinear" p1 p4 "t" "4X60=<>"

35、; p5) (command "dimdiameter" p6 "t" “5X<>" p7)39AutoLisp以下是需要增加前缀和后缀的。其表达式如下:(command "dimdiameter" p1 "t" "4X<>锪平%c45" p2)(command "dimdiameter" p3 "t" "<>深10" p4)40AutoLisp五、 调用AutoCAD的图形编辑功能1. 用

36、程序调用图形编辑功能的好处(1)利用已生成的图形对象构造出新的图形对象。例如下图所示图形有4个螺纹孔,只需绘制1个,其余螺纹孔只需调用AutoCAD的copy命令即可。(2)提高编程效率。例如上图所示图形的轮廓线是由4段直线和4个圆弧组成的。可以先计算出每条直线的端点、每个圆弧的端点和中心,再调用line和arc命令绘制出该轮廓线;也可以先绘制倒圆角之前的矩形,然后调用AutoCAD的fillet命令,倒出矩形的4个圆角。显然,后法要简便一些。41AutoLisp(3)将复杂的几何运算交给AutoCAD令去完成。例如下图所示轴的剖面图。它的轮廓线是由1个圆弧和3段直线组成的。p1、p2点是圆弧

37、和直线的共有端点。如果求解这些坐标比较麻烦,那么可以首先绘制圆和p4p3、p3p5和p5p6三段直线,然后调用AutoCAD的trim命令,经过trim命令的修剪得到该图的轮廓线。42AutoLisp【例】 绘制4个带有中心线的螺纹孔。和交互作图一样,首先绘制一个带有中心线的螺纹孔,然后3个螺纹孔。以下个表达式生成了下图所示的两条中心线再和1个螺纹孔。(command "layer" "m" "zhongxin" "l" "center" "" "")(c

38、ommand "line" "-5,0" "5,0" "")(command "line" "0,-5" "0,5" "")(command "layer" "m" "cuxian" "lw" 0.3 "" "") (command "circle" "0,0" 3)(comma

39、nd "layer" "m" "xixian" "")43AutoLisp(command "arc" "-3.5,0" "0,3.5" "0,-3.5")(command "zoom" "a");为确保选到指定的图元,显示整个作图范围。(command "copy" "w" "-5,-5" "5,5" "&

40、quot; "m" "0,0" "12,0" "24,0" "36,0" "");调用AutoCAD的copy命令,3个带中心线的螺纹孔44AutoLisp(command "copy" "w" "-5,-5" "5,5""24,0" "36,0" "")对该表达式的各项说明如下:"""m"&quo

41、t;0,0""12,0"copy:command函数调用的命令。w:整体在窗口内的图形对象被选中。-5,-5:窗口一个角点的坐标。5,5:窗口另一个角点的坐标。"":结束选择对象的操作。m:多次0,0:。图形对象时位移矢量的第一点。12,0、24,0、36,0:位移矢量的第二点。"":结束多次。45AutoLisp【例】 绘制带有4圆角的轮廓线。(command "layer" "m" "cuxian" "")(command “line” “-

42、7,-6” “43,-6” “43,6” “-7,6” “c”) ;绘制一个的矩形(command "zoom" "e")为确保选到指定的图元,尽可能大地显示图形对象(command "fillet" "r" 1.5);设置圆角半径(command "fillet" "-7,0" "18,-6");倒图左下圆角(command "fillet" "18,-6" "43,0");倒图右下圆角(com

43、mand "fillet" "43,0" "18,6");倒图右上圆角(command "fillet" "18,6" "-7,0");倒图左上圆角46AutoLisp也可以调用绘制矩形命令,因为矩形是一个封闭的多义线,因此,输入 选项"p",再选中这个矩形,一次即可倒完4个圆角。其表达式如下:(command "layer" "m" "cuxian" "")(command "rectangle" "-7,-6" "43,6");绘制矩形(command "fillet" "r" 1.5);设置圆角半径(command "fillet" "p" "18,-6");倒圆角47AutoLisp【例】绘制花形图案参数为中心点cen1、半径rr和花瓣数nn,圆弧圆心角180°。本图案的绘制,先绘制下图所示的图形,通过阵列(array)来完

温馨提示

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

评论

0/150

提交评论