AutoLISP与AutoCAD的通信_第1页
AutoLISP与AutoCAD的通信_第2页
AutoLISP与AutoCAD的通信_第3页
AutoLISP与AutoCAD的通信_第4页
AutoLISP与AutoCAD的通信_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、AutoLISP与AutoCAD的通信3.1 command函数调用格式: (command: 命令参数)3.1.1 参数及规则1). 调用AutoCAD的命令及其子命令和选择项都用字符串表示, 其中字符大小写均可。2). 数值变量可以写成数本身,也可以写成字符串的形式。3). 对于点常数有两种表示方法,即:(0.4 5)和 “0.4,5”;如果点的坐标x、y为变量,则必须表为: (list x y)。4). Command调用参数中的空串“”,等效于在键盘上按了一次回车 键或空格键。5). 如果调用(command)时不带任何参数,则等效于Ctrl-C.6). Get族函数不能用作comma

2、nd函数的参数。 3.1.2 应用举例1). 编程绘制任意倾斜的矩形 (defun boxa (l w ang) (setq bp (getpoint nEnter an base point:) (command ucs o bp ucs z ang) (command rectangle 0,0 (list l w) (command ucs w) );end2). 编程绘制给定图号的图幅 (defun tk () (initget 5 5 4 3 2 1 0) (setq n (getint nEnter No.:) (cond (= n 5) (setq l 210 w 148 a 2

3、5 c 5) (= n 4) (setq l 297 w 210 a 25 c 5) (= n 3) (setq l 420 w 297 a 25 c 5) (= n 2) (setq l 594 w 420 a 25 c 10) (= n 1) (setq l 841 w 594 a 25 c 10) (= n 0) (setq l 1189 w 841 a 25 c 10) );cond (command rectangle 0,0 (list l w) (command rectangle (list a c) (list (- l c) (- w c) );end3). 编程绘制五角星

4、 (defun star_5 (r) (command color 1) (setq cp (getpoint nCenter point:) (setq pt1 (polar cp (* 0.017453 18) r) pt2 (polar cp (* 0.017453 54) r) p2 (polar cp (* 0.5 pi) r) (setq p1 (inters cp pt2 pt1 (polar pt1 pi r) p3 (polar cp (* 0.017453 126) (distance cp p1) (command pline cp p1 p2 p3 cp p2 ) (c

5、ommand bhatch p s (polar cp (* 0.017453 70) 10) ) (command color 2) (command bhatch p s (polar cp (* 0.017453 95) 10) ) (command array all p cp 5 ) (princ) );end程序运行结果:3.1.3 应用command函数的注意事项 Command函数调用中的参数类型、个数与顺序必须与AutoCAD命令严格对应; 在command函数中允许使用PAUSE,以暂停接受数据。 如:(command “line” pause pause “”),除少数几

6、个命令外几乎所有的AutoCAD命令均可用于command函数的调用; Command函数调用中的命令及其选项等字符串参数中不能包含有空格,因为字符串中空格也是有效的; 需要回车才能结束AutoCAD命令时,可在command函数的最后一个参数位置设为空串,即:“”。 为使AutoLISP编程定义的命令函数执行时其执行过程不显示出来,可把系统变量cmdecho的值设置为零。3.2. 用户输入函数3.2.1 交互输入函数(get族函数)函数名 格 式 功 能getint(getint 提示)提示输入一个数,返回整型数(getint “n输入一个整型数:”)getreal(getreal 提示)提

7、示输入一个数,返回实型数(getreal “n输入一个实型数:”)getdist(getdist 基点 提示)提示输入一个数或相对于基点定出(getdist “n输入一个距离:”)getpoint(getpoint 基点 提示)提示输入一个点或相对于基点定出(getpoint “n输入一个点:”)getcorner(getcorner 基点 提示)提示输入一个点或相对于基点定出(getcorner “10,10” “输入一个角点:”)getangle(getangle 基点 提示)提示输入一角度或相对于基点定出(getangle “n输入一个角度:”)getorient(getorient 基

8、点 提示)提示输入一角度或相对于基点定出3.2.2 字符串输入函数函数名格式功能getstring(getstring 选项 提示)等待输入一个字符串,并返回字符串。选项为T时允许输入空格;为NIL时不能输入空格。getkword (getkword 提示)等待输入一个关键字,并返回相应的关键字串3.2.3 输入控制函数initget调用格式:(initget 位值 关键字)功能:为随后的get族函数(getstring除外)确立关键字,并控制输入值的范围。位值 含 义1不接受空输入(直接回车或按空格键)2不接受零值4不接受负值8不检查图形范围(即使LIMCHECK为开)16返回三维点,而不是

9、二维点32用虚线画皮筋拉伸线和拉伸框64使用getdist函数时,禁止使用Z坐标输入举例:Command:(setq a (getint “n Enter an integer:”)Enter an integer:25 返回: 25Command:(setq b (getreal “n Enter a number:”)Enter a number:25 返回:25.0000Command:(setq d (getdist “n How far?”)How far?25 返回:25.0000Command: (setq pt (getpoint “n Enter a point:”)Ente

10、r a point:6,8 返回:(6 8)Command: (setq ang (getangle “n Enter angle:”)Enter angle: 180 返回: 3.141592例1.输入数并统计结果 (setq s 0) (while (setq n (getint “n Enter an integer:/”) (setq s (+ s n) );while 例2.输入控制函数的应用 (initget 1 “Yes No”) (setq key (getkword “n Are you sure? (yes/No):”) ;= (initget 7 “Y Z A B C D

11、 E”) (setq dlxh (getkword “n选择V带型号(Y Z A B C D E):”)3.2.4 其它输入函数 1). Read-char函数 调用格式: (read-char) 功能: 等待用户从键盘输入一个字符,并返回一个整型数(即该字符的ASCII码)。 2). Read-line函数 调用格式: (read-line) 功能: 等待用户从键盘输入一行字符串,并返回该字符串。例1:编程打印输入字符及其对应的ASCII码 (defun prch (/ ch) (while (/= (setq ch (read-char) 32) (print (chr ch) (prin

12、c “”) (princ ch) );while (princ) );end 程序运行及其结果 Command: (prch)在键盘上按ABCD再按空格键,屏幕上显示如下: A65 B66 C67 D68 按空格键结束。例2:编程打印read-line输入的字符串 (defun prlin (/ ch) (while (/= (setq ch (read-line) ) (print ch) (princ) );while (princ) );end 程序运行及其结果 Command: (prlin) AutoCAD “AutoCAD” AutoLISP “AutoLISP” VisualLI

13、SP “VisualLISP” OK “OK” 按回车键结束。3.3 显示控制函数3.3.1 用于屏幕和文件的输出函数 函数名 格 式 功 能print(print 表达式)换行打印表达式的求值结果,后面加一空格。prin1(Prin1 表达式)不换行打印表达式的求值结果,后面不加空格。princ(princ 表达式)打印出的字符串不加引号,控制字符起作用。Write-char(write-char 数)将ASCII码数转换成字符,并写到当前光标位置处。Write-line(write-line 字符串)打印出的字符串不带引号,打印后换行。例:编程在屏幕上打印整数1025的平方根 (defun

14、 c:psqrt ( x) (setq x 10) (while (= x 25) (print (list sqrt x) (princ “ =“) (princ (sqrt x) (setq x (+ x 5) );end 运行结果: Command: psqrt (sqrt 10) =3.162278 (sqrt 15) =3.872983 (sqrt 20) =4.472136 (sqrt 25) =5.0000003.3.2 只用于屏幕输出的函数 a). Prompt函数 调用格式: (prompt 字符串) 功能:将字符串打印在文本屏幕上,返回值为NIL。 如:(prompt “n

15、正在计算,稍等”) b). Terpri函数 调用格式: (terpri) 功能: 用于控制换行,返回值为NIL。3.4 查询函数 3.4.1 系统变量查询与设置 a) 调用格式: (getvar “系统变量名”) 功能:获取一个AutoCAD系统变量的值。 如:(getvar “dimasz”) ; 查询标注箭头的大小 返回:2.5 b). 调用格式: (setvar “系统变量名” 新值) 功能:为一个AutoCAD系统变量设置新的值。 如:(setvar “dimasz” 3.5) ; 设置标注箭头的大小 返回:3.53.5 几何实用函数 3.5.1 几何计算函数 1) 求角度函数 调用

16、格式: (angle 点1 点2) 功能:获取UCS中两点连线的方位角。 如:(angle (0 0) (10 10) 返回:0.785398 2). 求距离函数 调用格式: (distance 点1 点2) 功能:获取UCS中两点连线的距离。 如:(distance (6 6) ( 26 6) ) 返回:20.03.5 几何实用函数 3) 求交点函数 调用格式:(inters 点1 点2 点3 点4 【方式】) 功能:求两直线的交点,并返回交点坐标 如:(inters (6 6) ( 26 6) (10 0) (10 10) 返回:(10.0 6.0) 4) 求下一点函数 调用格式:(pol

17、ar 基点 角度 距离) 功能:求由基点引出的点,并返回该点坐标 如: (polar (0 0) (* 0.0174533 30) 45) 返回:(38.9711 22.5)几何实用函数应用实例1(defun wjx (r) (setq cp (getpoint n指定中心点:) (setq p1 (polar cp (* 0.5 pi) r)p2 (polar cp (* 0.017453 162) r)p3 (polar cp (* 0.017453 234) r)p4 (polar cp (* 0.017453 306) r)p5 (polar cp (* 0.017453 18) r)

18、 (setq p12 (inters p1 p3 p2 p5)p23 (inters p1 p3 p2 p4)p34 (inters p2 p4 p3 p5)p45 (inters p1 p4 p3 p5)p15 (inters p1 p4 p2 p5) (command pline p1 p12 p2 p23 p3 p34 p4 p45 p5 p15 c) (command circle cp r) )应用实例2:(defun tzx (b l r)(setq bp (getpoint nEnter base point:)(command ucs o bp)(setq p2 (list (

19、* 0.5 b) r) p1 (polar p2 pi b) p6 (list (* 0.5 l) (* 0.5 r) p5 (polar p6 pi l) p7 (inters p1 (list (car p1) 0) p5 (polar p5 (atan 1 10) l) p8 (polar p7 0 b) p4 (list (* 0.5 l) 0) p3 (polar p4 pi l) ;setq(command pline p1 p2 p8 p6 p4 p3 p5 p7 c)(command ucs w);end3.5.2 对象捕捉函数 调用格式:(osnap 基点 捕捉方式) 功能:

20、按捕捉方式要求,根据基点来捕捉相应的点,并返回该点坐标。 如: (setq cp (30 40) p1 (120 80) p2 (30 60) (command “circle” cp 20) (command “line” p1 (osnap p2 “tan”) “”) 说明: 对象捕捉函数与AutoCAD的osnap命令相似,用于准确捕捉图形上的特征点,如直线端点、圆心、相切点等。 目标捕捉方式名:NEA、END、MID、CEN、NOD、QUA、INT、INS、PER、TAN、QUI、NON。 1)如果在指定点处按照目标捕捉方式捕捉到了相应的目标特征点,则返回该特征点,否则返回NIL。 2)当目标捕捉方式打开时,屏幕上将出现一个靶区符号,靶区大小可通过设置系统变量aperture来改变。 3)目标捕捉方式为字符串参数,除quick和none外,其它目标捕捉方式可以任意组合使用。 4)目标捕捉只辨认屏幕上可见图素,关闭层无效。 对象捕捉函数应用实例:编程绘制带传动机构运动简

温馨提示

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

评论

0/150

提交评论