超值奉送
Auto LISP 入门
Auto LISP 是在AutoCAD 内部允许的一种内嵌式程序设计语言。LISP (List Processing Language )是人工智能领域中广泛采用的一种表处理语言,具有较强的表处理功能,主要用于人工智能、机器人、专家系统、博弈、定理证明等领域。LISP 也被称为符号式语言,因为它处理的对象是符号表达式。
Auto LISP 可以直接调用几何所有的AutoCAD 命令,为AutoCAD 提供了使用高级语言开发编程的途径,使得用户能充分利用它对AutoCAD 进行二次开发。
感谢:
感谢您选购本图书。
本部分是《AutoCAD 2007中文版自学手册——入门提高篇》图书超值赠送的一部分,仅供读者个人参考使用。未经许可,任何人不得将此部分用于其他商业用途。
欢迎您对我们的图书进行监督,并对我们的工作(图书质量、装帧设计、封面、印刷等)提出改进意见或建议。 网站:www.fr-cad
E-mail: editor.liu@gmail
QQ :9843746 (CAD/CAM/CAE 应用方向)
您的支持是我们前进的动力,您的需要是我们努力的方向!
冯如设计在线                                                    2006-10-09
A.1  Auto LISP基本函数
自从AutoCAD RA.01 开始,出现了Visual LISP 语言,它是Autodesk公司为增强Auto LISP 程序开发能力而设计的软件工具,为Auto LISP增加了许多新的函数。Visual LISP的集成开发环境提供很多特性,使用户创建和修改源代码、测试和调试程序更加方便。
自从Auto LISP 嵌入AutoCAD 之后,使仅仅作为交互式图形编辑软件的AutoCAD,通过编程使之能真正进行计算机辅助设计、绘图。由于LISP灵活多变、易于学习和使用,因而使AutoCAD 成为功能很强大的工具性软件。
随着AutoCAD版本的升级,Auto LISP 的功能不断得到扩充和增强,主要功能如下:
z能够把数据和程序统一表达为表结构,即S-表达式,因此可以把程序当作数据来处理,以可以把数据当作程序来执行;
z有图形处理和程控方面的函数,可以直接调用AutoCAD的所有命令;
z扩充了AutoCAD应用的特殊功能;
z主要控制结构采用递归方式,使得程序设计简单易懂。
A.1.1 赋值函数
Auto LISP提供了大量系统预定义的函数。函数的一般描述格式为:
(函数名<;变元>  [<;变元> ……])
表中第一个元素为函数名,它一般指明函数的功能。其余各元素为函数的变量(称为变元)。[ ]表示任选项;……表示任意多项;<>表示变元类型。函数调用后显示一个执行该函数的结果,称为返回值。下面是Auto LISP的基本函数。
1. (setq 符号表达式[符号表达式]……)
将一个或者多个符号设置为相应表达式的值,返回最后一个表达式的值,例如:
(setq a 123 b 6.0)  ; 符号a返回6.0
(setq s “it” x ‘(a b ) ) ; 符号s 被赋值为”it”, 符号x 被赋值为(a b),返回(a b)
2. (set‘符号表达式)
如果符号前有一个单引号,该函数则将符号设置为表达式的值,此用法与setq函数的用法等价,例如:
(set ‘ a 18.0) ;符号a被赋为18.0,返回18.0
Set和setq函数都需要将符号作为它的第一个参数。但是set 函数接受返回结果为符号的表达式作为参数,setq却不可以。
3.(eval 表达式)
返回对表达式求值的结果,例如:
(setq a 24 b 45) ; 返回45
2
(eval 10.5 )  ; 返回10.5 (setq c (+1 2 3)) ;  (eval c ); 返回6
A.1.2 数值计算函数
这类函数有一个共同特点:参数既可以是整数,也可以是实数,如果所有的数都是整数,返回的结果就是整数;如果有的是实数,返回的结果也就是实数。
1.(+[数  数]……)
返回所有数之和。如果只有一个数,则返回它本身;如果不提供数,则返回0。例如: (+ 2 3 4);  返回9 2.(-[数  数]……)
返回第一个数减去其它所有数之和的差。如果只提供一个数,则返回它本身。如果不提供数,则返回0。例如:
(- 50  30.0  5.5);  返回
A.5
3.(*[数  数]……)
返回所有数的乘积。如果调用本函数只提供一个数,则返回它本身;如果不提供数,则返回0。例如:
(*  5  3  4.0);  返回
60.0 4.(/ [数  数]……)
返回第一个数除以其它所有数乘积的商。如果只提供一个数,则返回这个数除以1的结果;如果不提供数,则返回0。例如:
(/130 13 2);    返回5 5.(1+  数)
返回一个数加1后的结果。例如: (1+  4);  返回5 6.(1-  数)
返回一个数减1后的结果。例如: (1-  10); 返回9 7.(abs  数) 返回一个数的绝对值。 8.(atan  数1[数 2])
如果只提供数1,则该函数返回数1的反正切值(单位为弧度)。如果提供了数1和数2,则该函数返回数1/数2的反正切值。如果数2为0,则该函数返回正的或负的1.570796弧度,其正
负取决于数1的正负。该函数返回角度的范围是-PAI/2~PAI/2(弧度)。例如:(atan 0.5); 返回0.463648弧度
(atan 2.0 3.0); 返回0.58803弧度
9.(COS  角度)
返回角度的余弦值,角度的单位为弧度。例如:
( cos 0.2) ; 返回0.980067
10.(exp  num)
返回常数e(2.718282……)的指定幂,参数num为实数。例如:
( exp 1.0) ; 返回2.718282
11.(expt  number  power)
返回以number为底数的power次幂的值。例如:
( expt  3  3) ;  返回27
12.(fix  数)
返回将数截去小数部分的结果。例如:
( fis    4.5) ; 返回4
A.(gcd  正整数1  正整数2)
返回两个正整数的最大公约数。例如:
( gcd 30 20) ; 返回5
14. (log num)
返回num的自然对数。参数num为正数,返回值是实数。例如:
(log 4.5 ); 返回1.50408
15. (max  [数数……])
返回给定各数中的最大者。如果没有提供数,则返回0,例如:
(max 1  3  5  9 ) ; 返回9
16. (min  [数数……])
返回给定各数中的最小者。如果没有提供数,则返回0,例如:
(min 1  3  5  9 ) ; 返回1
17. (rem  [数数])
返回第1个数除以第2个数的余数。例如:
(rem  40  6 ) ; 返回4
18. (sin 角度)
返回角度(单位为弧度)的正弦值。例如:
(sin  1.0) ; 返回0.841471
4
19. (sqrt  数)
返回一个数的平方根。例如: (sqrt  9 ) ; 返回3
A.1.3 关系函数
1. (= [数或者字符串] [数或者字符串])
在该函数中,判断数字或者字符串的参数是否相等。如果所有的参数都相等,返回T ;否则返回nil 。如果只提供一个参数,返回T 。如:
(= 5.20
5.2);    返回T (= “HELLO”  “hello”);    返回nil 2. (/= [数或者字符串] [数或者字符串])
在该函数中,判断数字或者字符串的参数是否不等。如果相邻两个数或者字符串的值不相等,返回T ;否则返回nil 。如果只提供一个参数,返回T 。如:
(/= 4  5.2  6);    返回
T
(/= 4  5  5);    返回nil
3. (< [数或者字符串] [数或者字符串])
在该函数中,判断数字或者字符串的参数是否小于。如果每个参数的值都小于它右边参数的值,返回T ;否则返回nil 。如果只提供一个参数,返回T 。如:
(<
9  18);    返回T (< “l”  “ly”);    返回nil
4. (> [数或者字符串] [数或者字符串])
在该函数中,判断数字或者字符串的参数是否大于。如果每个参数的值都大于它右边参数的值,返回T ;否则返回nil 。如果只提供一个参数,返回T 。如:
(>
1009  901 );    返回T 5. (<= [数或者字符串] [数或者字符串])
在该函数中,判断数字或者字符串的参数是否小于等于。如果每个参数的值都小于或等于它右边参数的值,返回T ;否则返回nil 。如果只提供一个参数,返回T 。如:
(<= 9.01  9.010  10.09);    返回T (<= “love”  “hate”);    返回nil 6. (>= [数或者字符串] [数或者字符串])
在该函数中,判断数字或者字符串的参数是否大于等于。如果每个参数的值都大于或等于它右边参数的值,返回T ;否则返回nil 。如果只提供一个参数,返回T 。如:
字符串长度测量函数(>= 27  18  9);    返回T

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。