好文档 - 专业文书写作范文服务资料分享网站

AutoLISP 入门

天下 分享 时间: 加入收藏 我要投稿 点赞

超值奉送

Auto LISP入门

Auto LISP 是在AutoCAD内部允许的一种内嵌式程序设计语言。LISP(List Processing Language)是人工智能领域中广泛采用的一种表处理语言,具有较强的表处理功能,主要用于人工智能、机器人、专家系统、博弈、定理证明等领域。LISP也被称为符号式语言,因为它处理的对象是符号表达式。

Auto LISP 可以直接调用几何所有的AutoCAD命令,为AutoCAD提供了使用高级语言开发编程的途径,使得用户能充分利用它对AutoCAD进行二次开发。

2007 AutoCAD 感谢:

感谢您选购本图书。

本部分是《AutoCAD 2007中文版自学手册——入门提高篇》图书超值赠送的一部分,仅供读者个人参考使用。未经许可,任何人不得将此部分用于其他商业用途。

欢迎您对我们的图书进行监督,并对我们的工作(图书质量、装帧设计、封面、印刷等)提出改进意见或建议。 网站:http://www.fr-cad.net

E-mail: editor.liu@gmail.comQQ 群:9843746 (CAD/CAM/CAE 应用方向)

您的支持是我们前进的动力,您的需要是我们努力的方向!

冯如设计在线 2006-10-09

1 utoCAD2007中文版绘图自学手册——超值奉送部分 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

2007 AutoCAD 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弧度,其正

3 utoCAD2007中文版绘图自学手册——超值奉送部分 负取决于数1的正负。该函数返回角度的范围是-PAI/2~PAI/2(弧度)。例如:

4

(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

((((( 19. (sqrt 数)

返回一个数的平方根。例如: (sqrt 9 ) ; 返回3

A.1.3 关系函数

1. (= [数或者字符串] [数或者字符串])

在该函数中,判断数字或者字符串的参数是否相等。如果所有的参数都相等,返回T;否则返回nil。如果只提供一个参数,返回T。如:

5.2); 返回T (= 5.20

(= “HELLO” “hello”); 返回nil 2. (/= [数或者字符串] [数或者字符串])

在该函数中,判断数字或者字符串的参数是否不等。如果相邻两个数或者字符串的值不相等,返回T;否则返回nil。如果只提供一个参数,返回T。如:

(/= 4 5.2 6); 返回T

2007 AutoCAD (/= 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

5

AutoLISP 入门

超值奉送AutoLISP入门AutoLISP是在AutoCAD内部允许的一种内嵌式程序设计语言。LISP(ListProcessingLanguage)是人工智能领域中广泛采用的一种表处理语言,具有较强的表处理功能,主要用于人工智能、机器人、专家系统、博弈、定理证明等领域。LISP也被称为符号式语言,因为它处理的对象是符号表达式。
推荐度:
点击下载文档文档为doc格式
3jpje0epna2cg5h8iu6s
领取福利

微信扫码领取福利

微信扫码分享