资源预览内容
第1页 / 共153页
第2页 / 共153页
第3页 / 共153页
第4页 / 共153页
第5页 / 共153页
第6页 / 共153页
第7页 / 共153页
第8页 / 共153页
第9页 / 共153页
第10页 / 共153页
亲,该文档总共153页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
AutoLISP语言,LISP(List Processing,表处理解释语言)诞生于20世纪50年代末期,是人工智能学科领域广泛应用的程序设计语言。 AutoLISP语言是Autodesk公司为用户提供的在AutoCAD平台上进行二次开发的早期语言。 AutoLISP不仅具备一般高级基本结构与功能,而且还具有强大的图形处理功能。由于AutoLISP易于掌握,因此,是AutoCAD用户使用较为广泛的编程语言之一 Visual LISP,对AutoLISP是一次重大改进,增强了AutoCAD的二次开发能力。可使用户方便地用AutoLISP语言进行程序开发中的编写程序代码、调试程序等操作。,AutoLISP数据类型,1.整型数 2.实型数 3.字符串 4.符号(或变量) 5.表 6.文件描述符 7.AutoCAD选择集 8.AutoCAD图元名,1.整型数(INT) 整型数是由0,1,2,9,+或-这12个字符组成的数字。 例如:+230、450、-180等均为整型数。AutoLISP的整型数是16位,其取值范围为: -32768+32767。,2.实型数(REAL) 实型数是带有小数点的数,它以双精度浮点数格式保存,提供了至少14位的精度。实型数既可以用十进制方法表示,也可以用科学计数法表示。例如:13.2、0.045、4.5e-2均为有效的AutoLISP实型数。,3.字符串(STR) 字符串是由一对双引号(”)括起来的字符序列。通常又把构成字符串的双引号对称为字符串界定符。 AutoLISP对字符串有如下约定: 字符串中,同一字母的大小写认为是不同的字体,空格也是一个有意义的字符。 字符串的长度指位于双引号之间的字符个数(不包括双引号对)。 如果在字符串的定界符之间无任何字符,称其为空串,它的长度为零。,字符串中可以包含ASCII码中任一字符,通用的表示形式为“nnn”,其中nnn为八进制形式的ASCII码。例如“101102103”表示”ABC”,二者的作用完全相同。 由于反斜杠“”已作为字符串中的前导转义符,因而当字符串中要使用反斜线时,必须加转义符,即用双反斜线“”表示字符串中一个反斜线“”。,字符代码表,4.符号(或变量)(SYS) AutoLISP用符号存储数据,因此,符号又称为变量。 符号名与大小写没关系,它可以是除下列6个字符之外的其他可打印字母和符号的组合: ( (左括号) ) (右括号) (句号) (撇号) (双引号) ;(分号) 符号名的第一个字符一般采用字母或下划线。,5.表(LIST) AutoLISP的表指包含在一对相匹配的左、右圆括号之间的相关数据的集合。表中的每一项称为表的元素,这些元素可以是整型数、实型数、字符串、符号,也可以是另一个表,且各元素间要用空格隔开。表提供了保存各种数据的有效方法。,6.文件描述符(FILE) 当AutoLISP打开一个文件时,系统将给该文件赋一个数字标号,当AutoLISP函数访问该文件时(如读文件或写该文件),应通过该文件的描述符对此文件进行操作。 (SETQ fp (open “c:/cadtest.txt” “r”)),7.AutoCAD选择集(Selection Sets ) 选择集是一个或多个对象的集合。类似于AutoCAD中的对象选择过程。在AutoLISP程序中,用AutoLISP函数可以构造选择集,并把它赋给一个符号,以供其他函数使用。,8.AutoCAD图元名(Entity Names ) 图元名是AutoCAD系统在绘图过程中赋予所绘对象的一个数字标号。确切地说,它是指向一个AutoCAD系统内部数据文件的指针。利用图元名,AutoLISP可以查找到图形对象的数据库记录,并对其进行各种方式的处理。,AutoLISP基本函数,循环函数 文件处理函数 关系运算函数 逻辑运算函数 图形处理函数 赋值函数 defun自定义函数 command函数,计算函数 表处理函数 交互输入 输出函数 字符串处理函数 转换运算函数 条件分支函数,计算函数,(+ ) 返回所有的和。其中, 可以是整型数,也可以是实型数。 (- )返回第一个与后面所有数的差。 (* ) 返回所有的乘积。 (/ )返回除以后的商。 (1+ ) 返回加1后的值。 (注意:1与+号之间不能有空格) (1- ) 返回减1后的值。 (注意:1与-号之间不能有空格) (abs ) 返回的绝对值。 (sin ) 返回的正弦值,单位为弧度,(cos ) 返回的余弦值,单位为弧度 (atan ) 如果没有,返回的反正切,单位为弧度,范围从。如果有 ,返回/后的反正切。 (max )返回中的最大值。 (min )返回中的最小值。 (exp ) 返回e的次幂的值。 (expt )返回的次方的值。 (log ) 是exp函数的反函数。返回值为的自然对数值,其数据类型为实型数。,表处理函数,(car ) 返回中的第一个元素。如果是 空的,返回nil。 (cdr ) 返回除中第一个元素以外的所有元素组成的表。 (last ) 返回中顶层的最后一个元素。 (nth ) 返回中的第n个元素,其中是返回元素的序号(第一个元素的序号为0)。如果n大于的最高元素序号,返回nil。 (list ) 将任意数量的表达式串联在一起,返回他们组成的表。 (cons ) 将加到的开头,返回得到的新表。 (reverse ) 返回将中元素倒排后得到的表。 (length) 返回表的长度,交互输入函数,(getint) 从命令窗口根据输入一个整型数。以整型数形式返回输入数。 (getreal) 从命令窗口根据输入一个整型或实型数。以实型数形式返回输入数 。 (getstring) 从命令窗口根据输入一个字符串。返回该字符串 。 (getpoint) 从命令窗口根据输入一个点的坐标,或从屏幕上拾取一点。返回该点坐标 。 (getcorner)根据及已有角点确定矩形窗口的另一角点,可以从命令窗口输入点的坐标,也可以在屏幕上拾取。返回另一角点的坐标 。 (getangle ) 从命令窗口根据输入角度值,或基于在屏幕上拾取的点决定角度值。返回该角度值。,补充,取得xyz分量 Getpoint和getcorner函数返回坐标,是一个有三个实数组成的序列(x y z)。若要取得其中xyz坐标的分量,可以使用car、cadr、caddr函数,其语法格式为: (car list) (cadr list) (caddr list),还可以自组坐标序列,(setq p1 (list x y z),输出函数,(print ) 该函数换行输出表达式的值,并返回该值 (prin1 ) 该函数不换行输出表达式的值,并返回该值 (write-line ) 该函数输出字符串,并返回带双引号的字符串,字符串处理函数,(strcat ) 将、按顺序连结成一个新字符串,返回该新字符串。 (substr ) 将从位置截取长为值的字符串,返回字符串。 (strcase )根据将全部转换成大写或小写,返回转换后的字符串。为任意表达式,若省略或其值为nil,字符串各字符全部转换成大写,若值为非nil,字符串各字符全部转换成小写。 (strlen ) 求字符号串中的字符个数(包括空格), 返回数值。,转换运算函数,(itoa ) 将整型数转换为由该整型数构成的字符串,返回字符串。 (atoi ) 将字符串转换为整数,返回整型数 (atof )将字符串转换为实型数,返回实型数 (fix ) 将转换为整型数,返回该整型数。如果为实型数,舍去小数部分。 (float ) 将转换为实型数。 (ascii ) 将字符串中的第一个字符转换成ASCII码,返回该ASCII码的整型数值。 (chr ) 将代表ASCII码的整型数转换成只有一个字符的字符串,返回该字符串。,条件分支函数,(if) 根据条件计算表达式。如果不为nil,计算,并返回计算结果;否则计算 ,返回计算结果。 (cond ( ) ( ) (T ) 从上往下判断,一旦发现条件满足,计算与该条件对应的表达式并返回计算结果,不再继续判断条件。,循环函数,(while ) 如果成立,执行各,执行后再判断是否成立。如果成立,继续执行各,如此循环反复,直到条件不成立,并返回最后得到的计算结果。 (repeat ) 重复计算,计算次数由确定,返回最后的计算结果。,文件处理函数,(open ) 打开一个文件,以供其他AutoLISP I/O函数访问。为字符串,由文件名和扩展名组成,可以包含目录,用“/”来表示目录路径。 (close ) 关闭打开的文件,并返回nil。例如,(close a)a为一个文件描述符)。用open函数打开文件后,应及时将其关闭,以免数据丢失。,(read-line ) 该函数从打开的文件中的当前指针位置处读入一行字符,并返回由这些字符构成的字符串,然后把文件指针移到下一行的首部。 (write-line ) 该函数将字符串写入打开的文件中,并返回一个字符串。,关系运算函数,(= ) 如果所有在数值上相等,返回T,否则返回nil。 (/= ) 如果所有在数值上均不相等,返回T,否则返回nil。 ( ) 第一个小于后面的原子,返回T,否则返回nil。 ( ) 第一个大于后面的原子,返回T,否则返回nil。 (= ) 第一个大于或等于第二个原子,返回T,否则返回nil。 ( ) 第一个小于或等于第二个原子,返回T,否则返回nil。,逻辑运算函数,(and )返回所有的与逻辑:只要有一个的结果为nil,返回nil,否则返回T (or ) 返回所有的或逻辑:如果所有的结果为 nil,返回nil (not )返回的非逻辑:如果的结果为nil,返回T,否则返回nil,图形处理函数,(distance ) 返回两点之间的距离。 (polar ) 返回一个点的坐标,该点距 的距离为,与X轴正方向的夹角为,其中,角度的单位是弧度。 (angle)返回由、两点确定的直线与X轴正向的夹角。,赋值函数,赋值函数是AutoLISP程序中最常用的函数之一。较为常用的赋值函数是setq,其使用格式为: (setq 符号2 表达式2) 功能:依次将各表达式的值赋给对应的符号。 例(setq x 30 y 20 r 50),禁止求值函数,AutoLISP提供有值函数quote,其使用格式为: (quote),或简写为() 功能:不求值,返回本身。 quote函数的简写形式只能在程序中使用。 例(setq pt (20 30) r 50),SET SETQ QUOTE,实际上setq就是将set和quote函数合并使用,所以,要设定变量的值,可以使用下面三种写法: (setq b1 10) (set b1 10) (set (quote b1) 10) 如果要指定一个字符串序列或者数值序列给变量,可以使用list或者quote函数 (setq p3 (list 150 203 380) (setq p4 (150 203 380) (setq p5 (quote(150 203 380),command函数,Command函数的调用格式如下: (command ) 为调用AutoCAD命令所需要的全部数据,它们的格式取决于AutoCAD命令时实际需要的数据。 Command命令有以下约定: (1)作为参数的AutoCAD命令,相应的选项均应以不含空格的字符串表示,大小写均可。 (2)调用l
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号