版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2020/8/6,1,第三章 AutoLISP绘图程序设计,主要内容 1.AutoLISP特点 2.AutoLISP函数的用法 3.AutoLISP程序结构 4.AutoLISP程序执行方式,2020/8/6,2,3.1 AutoLISP概述,一、AutoLISP介绍 1.AutoLISP的作用 (1)AutoLISP是一种表语言,是常用的AutoCAD二次开发手段。 所谓二次开发:是指以AutoCAD软件为平台,加入自己所需要的功能。开发过程,就是编程的过程。 二次开发所支持的语言有VB、C+,大型的二次开发,以C+为主,而小型二次开发,一般以AutoLISP为主。,2020/8/6,3,(
2、2)必须在AutoCAD环境下运行(内嵌); (3)AutoLISP可以编写程序,调用AutoCAD的许多 命令; 举例:在水平方向画n个大小相等的圆。,;调用AutoCAD命令画圆 (defun C:HY() (setq P0 (getpoint 第一圆心坐标:) (setq R (getreal半径:) (setq L (getreal圆心间距离:) (setq a 1) (setq n(getintn圆的个数:) (while (= a n) (command circle P0 R) (setq P0 (polar P0 0 L) (setq a (1+ a) ) ),2020/8/6
3、,4,(4)AutoLISP语言中使用大量的函数(有200多个函数),进行各种运算; (5)AutoLISP编写的程序特点(学习中注意): 以表形式描述数据处理过程,程序执行过程就是函数求值过程; 每段程序都是一个函数; 具有交互处理功能,边解释边执行; 采用模块化设计方法。,2020/8/6,5,2.AutoLISP的数据类型,(1)整型数(INT):是由0、1、29、+、-组成的。 (2)实型数(REAL):如0.4(0不能少)、-1.23、0.526E9(0.526109)。 (3)符号(SYM):除(、)、*、”、;之外的字符序列,并且不能全部是数字。 符号常用着变量,如: Comma
4、nd:(setq X 12) ;整型数 Command:(setq X 12.0) ;实型数 Command:(setq X “12”) ;字符串,2020/8/6,6,(4)字符串(STR):如:“ABC”、“abc”、“457”等。 (5)表(LIST):带有一对括号、有若干元素组成。(元素1 元素2 元素n) 如:(2 4 f) 元素的个数叫表的长度。 元素也可以是表,如(45 (3 6) 7),这叫嵌套。 元素之间必须用“空格” 隔开。 表的定义方式:(LIST 5 6);(5 6);还可以用defun定义(后面讲)。,2020/8/6,7,例: (setq P(list 12.36
5、-26.58) 结果是:(12.36 -26.58) 例:(setq P (12.36 -26.58) 结果是:(12.36 -26.58) 提示: (1)表的嵌套时一定要注意括号“(”、“)”匹 配。 (2)西文状态下输入!,2020/8/6,8,(6)文件描述符 (7)AutoLISP内部函数 (8)AutoCAD的选择集 (9)AutoCAD的实体名 上述数据类型中,前四种称原子,原子包括数值原子(整型数、实型数),符号原子和字符串原子。 AutoLISP基本数据类型是原子和表,重点介绍前五种数据类型。,2020/8/6,9,二、几个基本概念 1.常数 PI数学中的(3.1415929)
6、 T逻辑真,即成立。 NIL逻辑假,即不成立。还代表空,即无值。 注意:(1)大小写等效;(2)它们不能作为变量。 2.原子 是程序处理中最小的数据单元。 3.表达式 原子和表的统称。 如:(setq P (12.36 -26.58),2020/8/6,10,4.点 是表的一种形式,也叫点表。 有三种获得点的方式: (1)用表示 (120.35 253.24) (2)list函数定义点 (setq X 12.36 Y -26.58) (setq M (list X Y) 结果是:M=(12.36 -26.58) (setq M ( X Y) 结果是:(X Y) (3)由getpoint函数得到
7、点 其格式:(getpoint “n输入一点:”),2020/8/6,11,三、AutoLISP程序结构 1.举例 例(1) ;在屏幕上显示 ASCII码为(6590)的字符 (defun C:zm(/ as) ;自定义命令 (setq as 65 n 100) (while (= as 90) (command text (list n 100) 15 (chr as) (setq as (+ as 1) n (+ n 20) ) ),2020/8/6,12,例(2) ;绘制正多边形程序 (defun c:dbx() (setq n (getintn输入多边形边数:) (setq L (ge
8、trealn输入多边形边长:) (setq P1(getpointn输入多边形第一个角点坐标:) (setq P2(polar P1 0 L) (command polygon n e p1 p2) ),2020/8/6,13,例(3) (defun yuan( ) ;画圆函数 (setq r (getrealn半径:) (setq p (getpointn圆心:) (command circle p r) ),2020/8/6,14,例(4) (defun ld( ) (setq p1 (getpointn p1:) p2 (getpointn p2:) );输入两点 (setq d (di
9、stance p1 p2);求距离 (setq ang (angle p1 p2);求方位角 (print d) (print ang) (command line p1 p2 );画直线 ),2020/8/6,15,2.结构 (1)注释行以 ;开始,可在程序头或句尾,增加程序可读性。也可以不要。 (2)除字符串外,字母大小写等效。 (3)表与表之间可以有空格,也可没有,建议有,这样清楚。 如:(distance(3 4)(56 32)或 (distance (3 4) (56 32) (4)函数名后至少要有一个空格,函数名与表之间可有可无。,2020/8/6,16,3.特点 (1)所谓语句都
10、是以表形式出现。 (2)一切成分都是以函数的形式给出。 (3)程序执行过程就是求函数值的过程。 四、AutoLISP程序执行方式 有三种方式:行方式、源文件方式、编译文件方式。 1.行方式 就是在AutoCAD的“command:”提示符下,输入表后回车。如: command:(+ 15 6.3) command:(setq a 10)(setq b (+ a 5) ,2020/8/6,17,2.源文件方式 用写字板或记事本把AutoLISP程序保存起来(后缀为.LSP)。然后用“LOAD”命令装载并调用。 例如:(1)把下列程序保存到“e:zm.lsp”,;在屏幕上显示 ASCII码为(65
11、90)的字符 (defun C:zm(/ as) ;自定义命令 (setq as 65 n 100) (while (= as 90) (command text (list n 100) 15 (chr as) (setq as (+ as 1) n (+ n 20) ) ),2020/8/6,18,(2)用“load”装载 即在命令行上输入(load “e:zm.lsp”) (3)在命令行上输入zm 3.编译文件方式(重点掌握) (1) Visual LISP的启动、界面和退出 (2) Visual LISP控制台 (3) Visual LISP创建LISP程序 (4) Visual LI
12、SP中运行LISP程序 提示:建议在Visual LISP中创建和运行LISP程序 举例:,2020/8/6,19,3.2 基本函数,一、算数运算函数 1.加运算 格式:(+ num1 num2 num3.) Command:(+ 2 5) 返回:7 Command:(+ 2.0 30.0 4.0 50.0) 返回:86.0 Command:(+ 2 30 4 50.0) 返回:86.0 注意:“+”与“num1”及各数之间必须要有空格,后面的函数格式都是如此。,2020/8/6,20,2. 减运算 格式:(- num1 num2 num3.) “减”函数(-)从第一个数中减去后面所有数的和,
13、即 num1-( num2 + num3 + . . . ) 。 如: Command: (- 28 14) 返回:1 4 Command: (- 25 7 11 ) 返回:7 Command: (- 50 20 10.0) 返回:20.0 Command: (- 20.0 30.0) 返回:-10.0,2020/8/6,21,3. 乘运算 格式:(* num1 num2 num3 .) 4. 除运算 格式:(/ num1 num2 num3 .) “除”函数以第一个数除以其他所有运算数的积,即 num1 / ( num2 * num3 * . . . ) 。 例如: (* 2 5 3 2.0
14、) 返回:60.0 (* 2 5 3) 返回:30 (/ 3 2) (Setq a(/ 3.0 2) 返回:1.5,2020/8/6,22,5. 增量 格式:(1+ number) 注意:1和“+”之间不能空格,+ 与n u m b e r之间必须要空格。 6. 减量 格式:(1- number) 注意:1和“-”之间不能空格,- 与number之间必须要空格。 例如: (setq b(1+ -12.5) (setq c(1- -16.4),2020/8/6,23,举例:,1.求a,b,c三个数的平方和。 2.根据前后视读数,求两点间高差。 3.求闭合水准线路的高差闭合差。,2020/8/6,
15、24,参考答案1: (setq a (getreal输入第一个数a:) (setq b (getreal输入第二个数b:) (setq c (getreal输入第三个数c:) (setq s (+ (* a a)(* b b)(* c c),参考答案2: (setq a (getreal输入后视读数a:) (setq b (getreal输入前视读数b:) (setq h (- a b),2020/8/6,25,参考答案3: (setq n (getint 输入高差个数:) (setq fh 0.0) (repeat n (setq h (getrealn依次输入高差:) (setq fh(+
16、 fh h) ),2020/8/6,26,二、标准函数,1.绝对值(abs)、平方根 (sqrt) 、正弦(sin) 、余弦(cos) 、 反正切(atan) 以上函数格式:(函数名 ) 2.幂函数(expt)、(exp) 格式: (expt 底数 幂) 格式: (exp 底数 ) 注意:以上各函数返回的数值类型。 3.举例,2020/8/6,27,举例:用AutoLISP表示下列公式:,(1)计算三角高程的表达式 (2)计算坐标增量的表达式 (3)将度化成弧度单位,2020/8/6,28,参考答案: (1) (setq HA (getreal 输入HA:) (setq L (getreal
17、输入L:) (setq AF (getreal 输入AF:) (setq i (getreal 输入i:) (setq v (getreal 输入v:) (setq HB1 (+ HA (- i v) (setq HB2 (* L (sin af) (setq HB (+ HB1 HB2),2020/8/6,29,参考答案: (3) (setq af (getreal “输入af:”); af是整度数 (setq af (/ 180 (* pi af) 如何将度分秒化成弧度?,2020/8/6,30,三、赋值函数,赋值函数有两个:setq和set 1.setq 格式:(setq 变量1 表达式
18、1 变量2 表达式2 ) 赋给变量的值可以是任何表达式(数值、字符串、字母)。 注意:不要用AutoLISP的函数名和常数当作变量。 举例:(1) (setq a 32 b 33.26 c yes) (2) (setq a (sin (/ pi 4) (3) (setq x 34.3 y 5.23 p(list x y ) (4) (setq pt(getpointn输入一点:),2020/8/6,31,2.set 与setq不同之处,是set为符号赋值,setq为变量赋值。 如:(set a 9) 结果a为9 此函数非常有用,和其它函数配合使用,可以得到一维数组。 举例: (1) (set(
19、read(getstringn输入点 名:)(getpointn输入点坐标:) (2) (set(read(getstringn输入变量 名:)(getrealn输入变量值:),2020/8/6,32,四、字符串处理函数 1.strcat 格式:(strcat 串1 串2.) 把“串1”、“串2”、等连成一个新的字符串。如: (strcat a bout) 返回 about (strcat a b c) 返回 abc (strcat a c) 返回 ac“ 2.strlen 格式:(strcat 字符串) 此函数求“字符串”长度。如: (strlen one two three) 返回11,2
20、020/8/6,33,3.substr 格式:(substr 字符串 起点 长度) 此函数将返回“字符串”的子字符串。子串的起始位置是以“起点”确定,子串长度由“长度”指定。如果“长度”没有设定, 则子串将从“起点”到最后。“起点”和“长度”均须为正整型数。如: (substr abcde 2) 返回 bcde (substr abcde 3 2) 返回 cd,2020/8/6,34,五、类型转换函数 1.fix 格式: (fix number) 此函数将number变为整型数。如果number是实型数,则舍去小数部分。 如: (fix 3) 返回 3 (fix 3.7) 返回 3,2020/
21、8/6,35,2.float 格式: (float number) 此函数将number变为实型数。 如: (float 3) 返回 3.0 (float 3.75) 返回 3.75 3.atoi 格式: (atoi 字符串) 此函数可用来将字符串转换成整型数。 如: (atoi 97) 返回 97,2020/8/6,36,4. atof 格式: (atof 字符串) 此函数可用来将字符串转换成实型数。 如: (atof 67.9)返回 67.9 (atof “97”)返回 97.0 5. itoa 格式:(itoa 整型数) 此函数将整型数转换成字符串。如: (itoa 56) 返回 “56
22、”,2020/8/6,37,6. rtos rtos函数将按给定的方式和精度把数转换为字符串。 格式:(rtos 数 方式 精度) 方式:有五种,其代码分别是1、2、3、4、5(只要掌握2)。 精度:是制小数位数。 例如: (setq A(rtos 5.78925 2 4) 返回5.7893 (setq A(rtos 45.23 2 1) 返回45.2,2020/8/6,38,7.(angtos 角度 模式 精度) 把弧度转换为度(取整度) 注意:(1)角度以弧度表示; (2)模式是04的整数;(0十进制;1度分秒;2梯度;3弧度;4测量单位) (3)精度是一整数,表示十进制数小数位; (4)
23、角度为负时, angtos自动将其还原成02 之间的正值。 例:(angtos 0.785398 ) (atof(angtos 0.528 0 2) 与angtos互补的函数(angtof 32 ),2020/8/6,39,8.chr 格式:(chr integer) 此函数是将 integer中的ASCII码转换成单一的对应字符串。如 : (chr 97) 返回 a (chr 65) 返回 “A (chr 66) 返回 B“ 9.ascii 格式:(ascii 字符串) 此函数是将字符串转换成ASCII。如 : (ascii “A”) 返回65,2020/8/6,40,10.read 格式:
24、(read 字符串) 此函数将返回字符串的第一个表或原子。如: (read (12 45) (15.36 28.478) 返回(12 45) (read 48.65 34.8) 返回48.65 11.Cvunit 格式:(Cvunit 数值 旧单位 新单位) (cvunit 2.3 minute“ second) 返回138.0 (cvunit 1 meter3” inch3) 返回61023.7,2020/8/6,41,举例1: ;得到一组点,如:P1、P2、等等 (defun c:pt() (setq n(getint“n输入n值:) (setq m 1) (repeat n (set(r
25、ead(getstringn输入点名:)(getpointn输入点坐标:) (setq m (1+ m) ) ),2020/8/6,42,举例2:将度分秒化为弧度 ;把度分秒化成弧度 (defun hd() (setq a (getstring nA:);输入角度(按6.3628形式输入) (cond (= (strlen a) 6) ;(strlen a)求a的长度 (setq ad (substr a 1 1) ;以字符串形式保存角的度数 (setq am (substr a 3 2) ;以字符串形式保存角的分数 (setq as (substr a 5 2) ;以字符串形式保存角的秒数
26、) (= (strlen a) 7) (setq ad (substr a 1 2) (setq am (substr a 4 2) (setq as (substr a 6 2) ),2020/8/6,43,(= (strlen a) 8) (setq ad (substr a 1 3) (setq am (substr a 5 2) (setq as (substr a 7 2) ) (setq a1 (atof ad) ;把ad转换为实数 (setq a2 (atof am) ;把am转换为实数 (setq a3 (atof as) ;把as转换为实数 (setq ar (+ a1 (/
27、 a2 60) (/ a3 3600) (setq ard (/ (* ar pi) 180) (princ ard) (princ),2020/8/6,44,六、求值函数 1. 距离(distance) 格式:(distance 点1 点2) 求出两点之间的距离,结果是实型数。如: (distance (1 2) (7 3)返回:6.082763 (distance (1.0 2.5 3.0) (7.7 2.5 9.0)返回:8.99389(空间距离),2020/8/6,45,2.angle函数 是求点1到点2的方向与X轴正向的夹角(),如图,单位是弧度。 格式:(angle 点1 点2)
28、(angle (5 1) (2 1)返回:3.141593,2020/8/6,46,3. polar函数 polar函数以一个给定角度和一个与给定点的距离来定义一个新点,如下图所示。 其中角用弧度表示,并以逆时针方向测量为正 。 polar函数的格式: (polar 点 角度 距离) (setq pt2 (polar (2.0 3.0) pi 100) 返回:(-98.0 3.0) (setq p2 (polar (100 100) (/ pi 2) 50) 返回:(100.0 150.0),2020/8/6,47,4.eval 格式:(eval 表达式 ) 此函数求出表达式结果。如: (se
29、tq a 56 b 45.3) (eval a) (eval b) 提示:eval和strcat、read、setq等函数配合用,可以建立一个一维数组。 例如: 建立一维数组xi(i=1,2,n)。,2020/8/6,48,(setq n(getintn输入一个整数:) (setq i 0 s 0) (repeat n (setq i(1+ i) (set (read(strcatx(itoa i)(getrealn输入一个实数:) (setq s(+ s(eval(read(strcat x(itoa i) ) 此程序运行结果可以得到: x1,x2,xn。 S=x1+x2+xn。,2020/
30、8/6,49,七、表处理函数,1.list函数 2.car函数 格式:(car 表) 返回一个列表中的第一个元素的数值(X元素)。如果该列表中没有任何元素,则返回空值nil。 3.cadr函数 返回一个列表的第二个元素(Y元素)。 4.last函数 返回一个列表的最后一个元素。 5.(nth 表) 返回表中第n个元素(n从0算起)。,2020/8/6,50,1. (setq p(getpoint“n输入一点:”) (setq x(car p) y(cadr p),举例:,2. (setq p( GPS1 3456.786 23415.674 34.567) (setq dh(car p) x(
31、cadr p) y(nth 2 p) z(last p),2020/8/6,51,八、Command函数,Command函数是AutoLISP中唯一调用AutoCAD命令实现绘图的途径,非常重要。 1.作用:使用Command函数(唯一)可调用AutoCAD命令。 2.格式:(Command “AutoCAD命令及其选项”),如: (setq p1 (100.453 100.567) p2 (200.254 201.587) (command line p1 p2 ),2020/8/6,52,3.注意事项 (1)Command函数不能调用AutoLISP的输入函数,如getpoint、geta
32、ngle、getstring、getint等。 (2)AutoCAD命令名称和选项必需放在双引号中,并要求双引号中不能有空格。 (3)不带“AutoCAD命令及其选项”,即(command),等效ESC键(中止)。 (4)几个命令和数据可以写在一个command函数中,也可分开写在两个或两个以上的command函数中。如: (Command “line” p1 p2 p3 p4 “” ) 和 (Command “Pline” p1 p2) (Command p3 p4 “”)等效。,2020/8/6,53,(5)文字注记时,字符串也要用“”括起来。如: (Command “Text” (100
33、 100) 5 “” “AutoLISP”) (6)调用对话框命令时,不显示对话框,以提示方式执行。如:新建“控制点”图层,设置图层为红色。 (command layer m 控制点 c 1 ),2020/8/6,54,举例:画一个边长为L,中心点坐标为P的正三角形,要求底边水平。,(setq L (getrealn输入边长:) (setq P (getpointn输入中心:) (setq r (* 0.288675134 L) ;求内切圆半径12r*r=L*L (command polygon 3 P c R),2020/8/6,55,3.3 自定义命令和自定义函数,一、自定义函数(defu
34、n),用函数(defun)可以定义用户自己的函数,叫自定义函数。自定义函数象AutoLISP函数一样可以被调用,比如说,把常用的符号定义成自定义函数,实际用时,带入具体参数就可以得到图形,不别再绘制。,2020/8/6,56,1. 自定义函数格式 (defun 函数名 变元表 表达式1 表达式2 ),例:用自定义函数方式编写一个程序,绘制正三角形。 (defun sjx() (setq L (getrealn输入边长:) (setq P (getpointn输入中心:) (setq r (* 0.288675134 L) ;求内切圆半径12r*r=L*L (command polygon 3
35、P c R) ),2020/8/6,57,2.注意 (1)函数名是用户自己设定的,不能与AutoLISP内部函数名、变量名相同; (2)变元表的形式有四种: (参数1 参数2),如上例。变元表为此形式 时,调用要带参数。 ( ),无参形式。调用时不带参数。 (参数1 参数2/局部变量1 局部变量2)。变元表为此形式时,调用要带参数。 (/局部变量1 局部变量2)。调用时不带参数。 / 与参数、局部变量之间必须有空格。,2020/8/6,58,(3)表达式是函数的定义体,完成计算和绘图。 (4)自定义函数的作用:defun函数用于在AutoLISP程序中定义一个函数。它就象其它标准函数一样,可以
36、为我所用。使用时,通过不同的参数,可以绘制不同的图形。,调用自定义函数举例:,;度化弧度自定义函数 (defun hd(af) (setq hhd(/ (* af pi) 180) ),2020/8/6,59,(defun hsjx () (setq L (getreal n输入边长:) (setq P (getpoint n输入中心:) (setq r (* 0.288675134 L) ;求内切圆半径 (setq p1 (polar P (hd 210) (* 2 r) ;调用自定义函数 (setq p2 (polar p1 (hd 0) L) ;调用自定义函数 (setq p3 (pol
37、ar p1 (hd 60) L) ;调用自定义函数 (command line p1 p2 p3 c) ),2020/8/6,60,二、自定义命令,自定义命令的作用是用defun函数为AutoCAD增加各种新命令。 1.格式 (defun C:() ) 或 (defun C:(/) ),2020/8/6,61,2.注意事项 (1)自定义命令格式中是命令名称;必须有C:(大小写等效);与C:之间不能有空格。 (2)不能和内部或外部函数名相同;也不能和其它命令同名。 (3)注意与自定函数的区别。 3. 自定义命令调用 加载(load)程序后,在命令行上输入自定义命令名。,2020/8/6,62,例
38、.编写计算三角高程的AutoLISP程序。 程序清单如下: ;计算三角高程 (defun c:sjgc() (hd) ;调用自定义函数hd (setq L(getreal”n斜边边长:”) (setq i(getreal”n仪器高:”) (setq v(getreal”n觇标高:”) (setq h1 (* L (sin ard) (setq h2 (- i v) (setq h (+ h1 h2) ),2020/8/6,63,;把度分秒化成弧度 (defun hd() (setq a (getstring nA:) ;输入角度(按6.3628形式输入) (cond (= (strlen a)
39、 6) (setq ad (substr a 1 1) (setq am (substr a 3 2) (setq as (substr a 5 2) ) (= (strlen a) 7) (setq ad (substr a 1 2) (setq am (substr a 4 2) (setq as (substr a 6 2) ),(= (strlen a) 8) (setq ad (substr a 1 3) (setq am (substr a 5 2) (setq as (substr a 7 2) ) (setq a1 (atof ad) (setq a2 (atof am) (s
40、etq a3 (atof as) (setq ar (+ a1 (/ a2 60) (/ a3 3600) (setq ard (/ (* ar pi) 180) (princ ard) (princ),2020/8/6,64,3.4 程序结构函数,程序结构函数用于控制程序的进程,把它叫程序结构函数。包括:关系函数、逻辑函数、谓词函数、条件函数、循环函数。,一、关系函数 1.等于 格式:(= atom1 atom2.) 等于函数(= )判断数是否相等。如果相等则条件为真,返回值为T(真值)。同样,如果不相等,则条件为假,返回值为nil(假值)。,2020/8/6,65,2.不等于 格式:(/=
41、 atom1 atom2.) 不等于函数( / =)判断数是否不相等。如果不相等,则条件为真,返回值为T。 3.小于 格式:( atom1 atom2 .) 小于函数( )判断前一个数( atom1)是否小于后面的作数( atom2),如果小于,则条件为真,返回值为T,否则返回nil。,2020/8/6,66,4.小于等于 格式:( atom1 atom2.) 大于函数判断第一个数是否大于第二个数,如果大于,则条件为真,返回值为T,否则返回nil。 6.大于等于 格式:(= atom1 atom2.),2020/8/6,67,二、逻辑函数 1.逻辑“与” 格式:(and 表达式1) 这个函数求
42、出表达式之间的“与”运算值,即当所有表达式值同时为T时,函数结果为T,如果其中任何一个表达式值为nil,函数结果为nil。例如: (setq a 10 b 20) (and ( a 5)( b 5)( b 15) 结果为nil,2020/8/6,68,2. 逻辑“或” 格式:(or 表达式1) 这个函数求出表达式之间的“或”运算值,即当所有表达式值同时为nil时,函数结果为nil,如果其中任何一个表达式值为T,函数结果为T。例如: (setq a 10 b 20) (or ( a 15) 结果为nil (or ( b 15) 结果为T,2020/8/6,69,3. 逻辑“非” 格式:(not
43、数或表达式) 这个函数求出表达式之间的“非”运算值,即当“数或表达式”值为nil时,函数结果为T,否则函数结果为NIL。例如: (setq a 10 b 20 c nil) (not a) 结果为nil (not c) 结果为T (not (or ( a 15) 结果为T (not (or ( b 15) 结果为nil,2020/8/6,70,三、数据谓词函数和等值谓词函数(自学) 四、条件函数和顺序处理函数 1.If函数 格式: (If ),2020/8/6,71,举例: (1) (If (= 1 3) “YES” “NO”) 结果为“NO” (2) (setq a 15) (If (and
44、 (= a 10)(= a 18) (setq d 3) (setq c 10) ) 结果D为3。,2020/8/6,72,2.cond函数 格式: (cond ) 是逻辑表达式,为一个或多个表达式。执行过程见图。,2020/8/6,73,举例: (setq d 0.3) (cond (and(= d 0.2)(= d 0.5)(= d 1.0)(setq c 9.0) ( d 0.6)(setq c 9.0) ) 运行结果为C=10。,2020/8/6,74,3.progn函数 progn函数通常和If函数一道用,来控制计算顺序。 格式:(prong 表达式1),举例: (setq a 15
45、 b 15.0) (if (= a b) (princ “大家好!”) (setq a (+ a 1) b (+ b 1) ) 运行结果是:大家好! a=15, b=15.0,(setq a 15 b 15.0) (if (= a b) (progn (princ “大家好!”) (setq a (+ a 1) b (+ b 1) ) ) 运行结果是:大家好! a=16, b=16.0,2020/8/6,75,五、循环函数,有两个循环函数:repeat、while。 1.Repeat函数 格式:(Repeat 数 表达式1) 数:必须是正整数。 表达式:是循环体,循环次数由数来决定。最后返回表达式的值。,举例: (setq a 10 b 100) (repeat 4,(setq a (+ a 10) (setq b (+ b 100) ),2020/8/6,76,2.while函数 格式:(while 表达式1),执行过程:先计算,若为T,则计算后面若干个表达式(循环体);若为NIL,则退出循环体。 举例:按要求画下列图形。,2020/8/6,77,(defun C:HY () (setq P0 (getpoint 圆心1:) (setq R (getreal半径:) (setq L (getr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年淮北市天一中学招聘3名生活老师笔试参考题库及答案解析
- 酒店安全巡查制度
- 2026云南昆明仲裁委员会办公室招聘工作人员1人笔试备考试题及答案解析
- 2026云南昆明市电化教育馆(昆明教育电视台)招聘2人笔试参考题库及答案解析
- 2026漳州供销集团市场化选聘部门经理2人笔试模拟试题及答案解析
- 2026年及未来5年市场数据中国新能源材料行业市场调查研究及发展趋势预测报告
- 2026西安银行总行资产管理部相关岗位招聘笔试参考题库及答案解析
- 2026宁夏回族自治区地质局高层次人才招聘4人考试备考试题及答案解析
- 渗透测试员岗前理论水平考核试卷含答案
- 小微信贷员岗前工作能力考核试卷含答案
- 音乐学院工作汇报
- 《国际结算(双语)》试卷B及参考答案
- 剧院设计方案
- 2025年人教版初中七年级地理下册(全册)知识点梳理
- 布氏杆菌培训课件
- 泰国中小学汉语教学课件
- 住建局执法证考试题库及答案
- T/SHPTA 075-2024125 ℃汽车线用聚氯乙烯塑料
- 第6课《我参与我奉献》教学设计(教学设计)-部编版道德与法治五年级下册
- 腮腺肿物护理规范
- 《项目前期调研与分析》课件
评论
0/150
提交评论