第二讲AutoLISP语言基础课件.ppt
《第二讲AutoLISP语言基础课件.ppt》由会员分享,可在线阅读,更多相关《第二讲AutoLISP语言基础课件.ppt(70页珍藏版)》请在三一办公上搜索。
1、AutoLISP语言基础,第 2 讲,2.1 AutoLISP程序语言,LISP语言: (list processing language)是人工智能学科领域中广泛采用的一种程序设计语言,是一种计算机的表处理语言。AutoLISP语言:是一种嵌入在AutoCAD内部的LISP编程语言,是LISP语言和AutoCAD有机结合的产物。本节主要介绍AutoLISP的数据类型、程序结构、内部函数以及AutoLISP的编程方法。,2.2 AutoLISP数据类型,整数 -21474836472147483648实型数 2.45, -0.38, -4.56E8符号原子 x, y1, ax2, abc, 除
2、(). ,“ ;5个字符以外的任何可打印字符。 Setq是一个赋值函数,如( Setq X 25 )查看某个符号的当前约束值(将一个值赋给符号)方法:Command:!X 注意:程序中定义的符号或变量名称不能与系统定义的函数和符号名相同,否则后面的定义将取代已有的定义,从而引起混乱。,2.2数据类型,字符串 “fx” “AutoCAD” “2.36” 是由双引号括起来的字符序列组成的,字母的大小写和空格字符都是有意义的。表 (COS phai) (2 5 8) AutoLISP中广泛使用,表提供了在一个符号中存储大量相关数值的有效方法。 如:(setq a 10) (setq a( + b (
3、 d 2) 表有标准表和引用表2种基本类型。标准表括号中首元素必须是合法的已存在的AutoLISP的函数;引用表是在左括号前加一撇号,如 (x y),表示对此表不做求值处理,而是供其它函数引用。,2.2数据类型,文件描述符 (setq f (open “d:myfile.dat” “r”) 其返回值就是AutoLISP赋予被打开文件的标识号。实体名 (setq e1 (entlast) 其返回值就是赋予图形实体的标识号。选择集 (setq s1 (ssget “x” (0 . “circle”)其返回值就是由当前图形数据库中所有圆构成的集合。,2.2数据类型,2.3 AutoLISP程序结构,
4、前缀表示法 将运算符号放在操作数之前,如X=(A+B)*C,若用AutoLISP表示则为: (setq X (* (+ A B) C)程序结构组成 一个完整的AutoLISP程序是由一系列按顺序排列的表达式组成的,最里面的表先被求值。程序注释 以一个分号“;”开始,并在一行的末尾结束。,2.3程序结构,在程序中使用内部函数的规则:,1)内部函数必须放在表中第一个元素的位置,且所有括号都必须左右配对;2)函数与参数之间至少用一个空格来分开,多个空格和一个空格作用相同;3)一个表可分成多行书写,一行也可以书写多个表;4)字符不分大小写,分号后的字符为注释。,2.3程序结构,函数的定义: (defu
5、n () )说明: 1). Defun是AutoLISP的一个特殊函数,由它定义的函数是构成程序的主体,在程序中定义的函数可以用函数名来调用;,2.3程序结构,2). 必须为符号原子,在程序调入内存产生了一个 函数定义之后,将被放到原子表ATOMLIST中。3). 有如下几种格式:( / )( )(/ )() ;即不带任何参数的空表。(注:形参在函数调用时必须用实参取代,“/”前后须有空格。)4). 是任意的表达式,它们可以是所定义函数的的调用,以形成函数的递归定义。这些表达式是函数的定义体,它们在函数调用时将依次求值,用于完成所需的功能。,2.3程序结构,AutoLISP程序结构实例:,;*
6、;* 这个程序计算 a 和 b 平方和的平方根 *;* 用法:交互输入两个实型数 a ,b的值 *;* 该程序计算并输出结果在屏幕上。 *;*(defun sqtab (/ a b) ;定义函数(setq a (getreal “n a=:”) ;等待输入a的值(setq b (getreal “n b=:”) ;等待输入b的值(setq c (sqrt (+ (* a a) (* b b) ;计算平方根(print “c=“) (princ c)(princ) );end,2.3程序结构,2.4 AutoLISP基本函数(六类)(一)数学运算函数(17种)+、-、*、/、1-、1+、abs、
7、sin、cos、atan、sqrt、min、max、expt、log、gcd、rem1) (+ 数数 )功能 : 求表中所有整数或实数的和。例如 :Command:(+ 1.2 3.1 3.8) 返回:8.12)(- 数数 )功能 :求表中第1个数减去后面所有数的差 ,例如 :Command:(- 8.1 5) 返回:3.1,2.4基本函数,3)( *数数 )功能 : 求表中所有数的积 , 例如 :Command:( * 2 5) 返回:10 4)(/ 数数 )功能 : 求表中第1个数除以后面所有数的商。例如 :cmnmand:(/ 10 5 2.0) 返回值:1.0注意:(/ 10 5 5)
8、 返回值:05)(1+ 数 )功能 : 求一个整数或实数加 1 的和。例如 :Command:(1+ 2.7) 返回值:3.76)(1- 数 )功能 : 求一个整数或实数减 1 的差。例如 :Command:(1- 2.7) 返回值:1.7,2.4 基本函数,7)(abs 数 )功能 : 求一个整数或实数的绝对值。例如 :Command:(abs -3.14) 返回:3.148)(sin 弧度 )功能 : 求一个以弧度为参数的正弦值。例如 :Command:(sin (* 0.5 pi)) 返回:1.09)(cos 弧度 )功能 : 求一个以弧度为参数的余弦值。例如 : Command:(co
9、s (* 0.0174533 30) 返回:0.866,2.4 基本函数,10)(atan 数 1 数 2 )功能 : 求数 1/ 数 2 或数 1 的反正切值。例如 : Commad:(atan 0.707 0.707) 返回: 0.7854注意:返回的为弧度值。Command:(atan 1.0) 返回: 0.785411)( sqrt 数 )功能 : 求一个整数或实数的平方根。例如 : Command: (sqrt 256) 返回:16.012)(min 数 1 数 2 )功能 : 求表中所有整数或实数的最小值。例如 : Command:(min 1.44 -2.1 -3.6) 返回:-
10、3.6 13)(max数 1 数 2 )功能 : 求表中所有整数或实数的最大值。例如 : Command:(max -2.5 2.1 7.2 3.4 5.8) 返回:7.2,2.4 基本函数,14)(expt 底数幂 )功能 : 求底数的幂次方。例如 : Command:(expt 2.0 3) 返回:8.015) (log 数 )功能 : 求一个数的自然对数。例如 : Command:(log 2) 返回:0.693147 16) (gcd 数 1 数 2 )功能 : 求数 1 和数 2 两个整数的最大公约数。例如 : Command:(gcd 144 16) 返回:1617) (rem 数
11、 1 数 2 )功能:求数1除以数2的余数。例如:Command:(rem 162 38) 返回:10,2.4 基本函数,例1.编程计算普通松联接螺栓的最小直径已知计算公式为 :,2.4 基本函数,编程如下: (defun bolt (F b) (setq d1min (sqrt (/ (* 4 f) (* pi b) (princ “n松螺栓最小直径d1=”) (princ d1min) (princ) );end Command:(bolt 5800 180) 返回:松螺栓最小直径d1=6.4052,(二) 赋值与求值函数,2.4 基本函数,赋值与求值函数举例:,(setq x1 2.5
12、y1 (+ x1 3.2) 返回:5.700(setq x 2 y 4.0 pt (list x y) 返回:(2 4.000)(setq d c) 返回:C 表明变量d的值为变量C(set d 2) 返回:2 表明变量C的值为2(eval d) 返回:2(eval “(+ 3 4)”) 返回:“(+ 3 4)”(eval (+ 3 4) 返回:7,2.4 基本函数,1)(type项)功能:判断所列的数据类型,其值为下列类型之一:INT(整型数),REAL(实型数),SYM(符号),STR(字符串),LIST(表),SUBR(内部函数),FILE(文件描述符)。例如:Command:(type
13、 (setq a 25) 返回:LISTCommand:(type *) 返回:SUBRCommand:(type(setq f (open jq.txt r)返回:FILE 2)(fix数)功能:将实型数去掉小数部分化为整型数。例如:Command:(fix 2.13) 返回:2,(三)数据类型转换函数( 10种),2.4 基本函数,3)(flaot数)功能:将整型数化为实型数。例如:Command:(flaot 2) 返回:2.0 4)(itoa整型数)功能:将整型数化为字符串。例如:Command:(itoa 28) 返回:28 5)(atoi字符串)功能:将字符串化为整型数。例如:Co
14、mmand:(atoi 415) 返回:4156)(atof字符串)功能:将字符串化为实型数。例如:Command:(atof 5) 返回:5.0,2.4 基本函数,7)(rtos数)功能:按AutoCAD系统变量LUNITS和LUPREC定义的 记数方式和精度将数转化为字符串。例如:设 LUNITS=2(十进制),LUPREC=4(精度)Command:(rtos 3.7) 或(rtos 3.7 2 4)返回:3.7000 8)(angtos角度)功能:按AutoCAD系统变量LUNITS和LUPREC定义的记数方式和精度将弧度数转化为字符串。例如:设LUNITS=0(度),LUPREC=4
15、 Command:(angtos 3.14)返回:“180.0000,2.4 基本函数,9)(ascii字符串)功能:求出字符串第一个字符的ASCII值。例如:Command:(ascii Access)返回:65Command:(ascii “Bolt)返回:6610)(chr数)功能:求出整型数所代表的ASCII字符。例如:Comanand:(chr 65)返回:A,2.4 基本函数,1)(strcat字符串2字符串3)功能:将所列的字符串合并为一个字符串。例如:Command:(strcat C A D)返回:CAD2)(strlen字符串)功能:求出字符串的长度。例如:Command:
16、(strlen AutoCAD)返回:73)(substr字符串起始位 (长度)功能:按要求求出字符串的一个子串。例如:Command:(substr “210311198111020013 7 8)返回:“19811102,(四)字符串处理函数(3种),2.4 基本函数,1)(list表达式)功能:用所列表达式组成一个表。例如:Command:(list C A D) 返回:(C A D)Command:(list 1.2 2.3) 返回:(1.20 2.30)2)(append表1表2)功能:将所列的(表)合并成一个新表。例如:Command:(append (C) (A) (D) 返回:
17、(C A D),(五)表处理函数(13种),2.4 基本函数,3) (cons新元素表)功能:将新元素加到表的开头,形成一个新表。例如:Command:(cons C (A D)返回:(C A D)Command:(cons (A C) (A D)返回:(A C)A D) 4)(subst新元素旧元素表)功能:用新元素替换表中的旧元素。例如:Command:(subst M D (C A D)返回:(C A M),2.4 基本函数,5)(assoc 关键字关联表)功能:在关联表中求出指定关键字的子表。例如:Command:(setq alst (L 15)(W 12)(H 8)Command:
18、(assoc W alst) 返回:(W 12)6)(last 表)功能:求出表的最后一个元素。例如:Command:(last (24 56 38) 返回:387)(car 表)功能:求出表的第一个元素。例如:Command:(car (24 56 38) 返回:248)(cadr 表)功能:求出表的第二个元素。例如:Command:(cadr (24 56 38) 返回:56,2.4 基本函数,9)(nthn表)功能:求出表中第n个元素(表的第1个元素的序号为0)。例如:Command:(nth 2 (12 16 25 28 32 40) 返回:2510)(reverse表)功能:求出表的
19、倒置表。例如:Command:(reverse (A B C D) 返回:(D C B A)11)(length表)功能:求出表中元素的个数。例如:Command:(1ength (12 16 25 28 32 40) 返回:6,2.4 基本函数,12)(apply函数表)功能:按指定函数对表进行处理。例如:Command:(apply + (1 2 3)返回:613)(quote 表达式)或(表达式)功能:给出没有计算的表达式,也称为禁止求值函数。例如:Command:(quote a) 返回:a与a相同。Command: (setq a 1)返回:(setq a 1),2.4 基本函数,(
20、六)逻辑运算函数(19种)1) (= 符号 符号)功能:判断是否相等,相等为T,否则为nil。例如: Command:(= 28 28.0) 返回:T 2) (=符号符号)功能:判断各符号是否不等,不等为T,否则为nil。例如:Command:(= Aprit May) 返回:TCommand:(= 20 20) 返回:nil,2.4 基本函数,3) ( 符号符号)功能:判断左边的符号是否依次大于右边的符号,大于则为T,否则为nil。例如:Command:( 7 2 1) 返回:TCommand:( 2 6 0) 返回:nil4) (符号符号)功能:判断左边的符号是否依次小于右边的符号,小于则
21、为T,否则为nil。例如:Command:( 1 1 2) 返回:nilCommand:( 1 2 7) 返回:T5) (= 符号 符号)功能:判断左边的符号是否依次大于或等于右边的符号,大于或等于则为T,否则为nil。例如:Command:(= 2 1 1) 返回:TCommand:(= 2 1 3) 返回:nil,2.4 基本函数,6) (= 符号 符号)功能:判断左边的符号是否依次小于或等于右边的符号,小于或等于则为T,否则为例如:Command:(= 7 8 8) 返回:T7)(and表达式)功能:对所列的表达式进行逻辑“与”运算,有一个表达式结果为(nil)即为nil,否则为T。例如
22、:Command:(and (/= 4 3) ( 6 2) 返回:T8)(or 表达式 )功能:对所列的表达式进行逻辑“或”运算,当所有表达式都为“nil”时为nil,否则为T。例如:Command:(or 2 nil (setq a 6.0) 返回:T9)(not 项)功能:对所列项求反,即返回的逻辑“非”,当该项值为nil时则为T,否则为nil。例如:Command:(not (+ 4 3) 返回:nil,2.4 基本函数,10)(atom 项)功能:判断所列项是否为符号,当该项为表时则为nil,否则为T。例如:Command:(atom c) 返回:T11)(boundp 符号)功能:判
23、断所列的符号是否有非nil值,若有则为T,否则为nil。例如:Command:(boundp c) 返回:T12)(listp 项)功能:判断所列项是否为一个表,是则为T,否则为nil。例如:Command:(listp (a b c) 返回:T13)(minusp项)功能:判断所列项是否为负数,是则为T,否则为nil。例如:Command:(minusp -3.2) 返回:TCommand:(minusp 8.32) 返回:nil,2.4 基本函数,14)(numberp项)功能:判断所列项是否为整型或实型数,是则为T,否则为nil。例如:Command:(numberp -3.26) 返回
24、:TCommand:(numberp Endpoint) 返回:nil 15)(null项)功能:判断所列项的值是否为nil,是则为T,否则为nil。例如:Command:(null ( 2 5) 返回:T16)(member表达式 表)功能:在表中求得从(表达式)出现位置开始的内容,若不含有(表达式)的内容,则为nil。例如:Command:(member a (d b a c e)返回:(a c e)Command:(member ac ( d b a c e)返回:nil,2.4 基本函数,17)(zerop项)功能:判断所列项的内容是否为零,是则为T,否则为nil。例如:Command
25、:(zerop 0) 返回:TCommand:(setq a 1)Command:(zerop a) 返回:nil18)(eq 表达式1表达式2)功能:判断表达式1和表达式2是否完全相同,是则为T, 否则为nil。例如:Command:(setq c a)Command:(eq c a) 返回:TCommand:(eq (setq a (1 2) (setq b (1 2)返回:nil19)(equal 表达式1表达式2)功能:判断两表达式的值是否相等,是则为T,否则为nil。例如:Command:(equal (setq a (1 2) (setq b (1 2)返回:T,2.4 基本函数,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二 AutoLISP 语言 基础 课件
链接地址:https://www.31ppt.com/p-1855336.html