VisualLISP程序设计.ppt
《VisualLISP程序设计.ppt》由会员分享,可在线阅读,更多相关《VisualLISP程序设计.ppt(84页珍藏版)》请在三一办公上搜索。
1、第5章 Visual LISP程序设计,CAD二次开发技术及其工程应用,多媒体课件,本章内容:,5.1 Visual LISP概述 5.2 AutoLISP基础 5.3 AutoLISP内部函数 5.4 AutoLISP应用程序开发实例,5.1 Visual LISP概述,5.1.1 AutoLISP和Visual LISP的关系,1 AutoLISP和Visual LISP的关系 AutoLISP是解释性语言,Visual LISP 可以编译成二进制文件;Visual LISP(VLISP)是为加速 AutoLISP 程序开发而设计的软件工具;VLISP 还提供了工具,用于发布用 AutoL
2、ISP 编写的独立应用程序。,2 Visual LISP具有以下主要新的功能(1)强大语法检查功能,识别AutoLISP的语法错误和函数 的非法参数输入。(2)强有力的符号名查找和自动匹配功能。(3)具有功能完善源程序调试器,提高程序调试灵活性。(4)具有语言格式化器,规范程序结构提高程序可读性。(5)支持LISP和DCL语言文本格式的彩色代码显示功能,提高程序的清晰度。(6)具有综合检验器和监视跟踪功能(7)完整的文件编译器,改善程序的运行速度和安全性。(8)具有项目管理系统,方便地维护多文件的应用程序。(9)可以进行编译文件的打包,形成一个ARX和VLX模块。,5.1.2 Visual L
3、ISP 的启动,启动VLISP集成开发环境有两种方法:(1)利用菜单启动 使用下拉菜单启动VLISP 打开“工具”下拉菜单,选择“AutoLISP”菜单项。选择“VLISP编辑器”菜单项,弹出用户界面。,(2)使用命令关键字:在命令提示处输入如下命令:命令:Vlisp(回车),(2)使用命令关键字:命令:vlisp(回车)菜单 如果点亮菜单上的某一个菜单项,屏幕底部的 状态栏上将显示相关命令功能的简介。工具栏 可快速发出 VLISP 命令。,控制台窗口 控制台窗口是 VLISP 主窗口中的一个独立的可滚动窗口。状态栏 状态栏中将显示的动态信息。,5.1.3 Visual LISP集成化环境,1
4、 Visual LISP 菜单项,(1)文件菜单项:创建新的 AutoLISP 程序文件以供编辑;(2)编辑菜单项:复制和粘贴文本等编辑操作;(3)搜索菜单项:查找和替换文本字符串,设置书签等;(4)视图菜单项:查找和显示AutoLISP代码变量和符号值;(5)工程菜单项:使用工程和生成程序;(6)调试菜单项:设置和删除程序断点,检查变量状态等;(7)工具菜单项:设置VLISP文本格式化和环境选项等;(8)窗口菜单项:组织当前VLISP对话中显示的窗口等;。(9)帮助菜单项:显示在线帮助。,2 工具栏 VLISP提供了五个工具栏:标准、视图、搜索、工具和调试,各自代表不同功能的VLISP命令组
5、。通过点击工具栏上图标按钮可执行对应的VLISP命令。如果将鼠标指针指到工具栏某按钮上并停留几秒钟,VLISP 将显示工具提示信息,以说明该按钮的功能,同时在屏幕底部的状态栏上显示更详细的描述。,3 控制台窗口 主要功能:(1)对 AutoLISP 表达式进行求值,并显示表达式的返回值;(2)将 AutoLISP 表达式分多行输入;(3)同时对多个表达式求值;(4)在控制台和文本编辑窗口之间复制和传递文本;(5)在控制台中按 TAB 键可以回溯到以前输入的命令;(6)在控制台中按 TAB 键实现对输入历史的关联搜索;(7)按 ESC 键清除控制台提示符后的文字;(8)设置控制台提示符的显示方式
6、;(9)设置控制台中VLISP命令和选项的显示方式。,4 文本编辑器(1)文件语法着色:可把程序不同部分指定各自的颜色;(2)设置文本格式:设置程序代码格式使代码易读;(3)括号匹配:帮助用户检测括号匹配错误;(4)执行AutoLISP表达式:在不离开文本编辑器的环境 下,测试表达式或几行程序代码的运行结果。(5)多文件查找:用单个命令就可以在多个文件中查找某 个词或表达式。(6)AutoLISP代码语法检查:可对AutoLISP代码进行求值 并亮显其语法错误。,5 加载和运行AutoLISP应用程序(1)首先确认包含程序的文本编辑窗口是活动窗口。如果不能肯定 该窗口是否是活动的,可以在窗口的
7、任何地方单击它,使它成 为活动窗口;(2)从“工具”工具栏中选择 按钮,或从“工具”下拉菜单 中选择“加载编辑器中的文字”菜单项;(3)在控制台提示下输入括号和函数名并按回车键;(4)在图形窗口或命令行中指定点以响应提示。当用户 响应提示后,重返回到 VLISP窗口;(5)CAD和VLISP的转换可使用“激活 AutoCAD”菜单项或按 按钮。,6 退出Visual LISP环境 选择“文件”下拉菜单的“退出”菜单项 或单击 Windows 的“关闭”按钮来关闭程序。AutoCAD并没有完全卸载VLISP,只把所有的VLISP 窗口关闭。如果用户修改某个VLISP 文本编辑窗口中的代码而没有保
8、存这些修改,在退出系统时,自动询问是否想保存这些修改。如果想保存所有的修改,请选择“是”,若选择“否”将不保存任何修改。VLISP 保存退出时的状态。在下一次启动时,将自动打开上次退出时打开的文件和窗口。,5.2 AutoLISP基础,5.2.1 AutoLISP语言的特点,1.特点 AutoLISP语言是一个嵌入在AutoCAD内部的LISP编程语言,是LISP语言和AutoCAD的有机结合的产物。语言既具备一般高级语言的基本结构和功能,又具有一般高级语言所没有的强大的图形功能,是一种比较流行的CAD二次开发语言工具。AutoLISP语言是AutoCAD系统提供给用户的第一代开发工具,利用A
9、utoLISP语言可直接实现增加和修改AutoCAD命令,扩大图形的编辑功能,直接访问和处理AutoCAD的图形数据库,开发CAD的应用软件系统。每个LISP程序的核心是一个求值器,当该求值器读入用户输入的程序行(一个表达式),对其进行计算,然后返回计算结果。,2.AutoLISP的求值过程 简单的数据,如整数、实数等把它的自身值作为求值结果。符号和变量,把它的约束值作为求值结果。用运算符和数据组成表达式,根据第一个元素的类型进行。3.AutoLISP编程语言程序特点 变量没有明确的类型说明,而是动态确定类型;AutoLISP数据的存放和处理全部使用表结构;AutoLISP语言的程序没有程序语
10、句、关键字和运算符;程序的层次结构完全用“()”分割符来完成,AutoLISP语言是解释性语言,采用ASCII文件格式,不编译。,5.2.2 AutoLISP的数据类型,1 整型数(INT)整形数是由09数字、+、-字符组成,不允许出现其它字符。“”号可以省略,“-”必不可少。例如:+123,435,-190,0都是有效整数。2 实型数(REAL)实型数是带有小数点的数,用双精度的浮点数表示,并且至少有14位的有效精度。实型数两种表示方法,即十进制表示法和科学记数法表示法。当实数绝对值小于时,必须加前导0,不能以小数点开头,否则计算机认为点对出错。例如:有效实数:0.456,-12.4567,
11、+12.567,-0.12364E3等 无效实数:.456,-112.361E2。,3 字符串(STRING)字符串是由一对双引号()引起来的字符序列组成的。双引号是字符串的定界符,不是字符串的内容。字符串中的大小写字母和空格字符都是有意义的。字符串最大长度为132个字符,若超过132个,则后面无效。如果字符串中没有任何字符,则称为空串,空串长度为0。字符串可以包含ASCII码表中的任何字符,也可采用汉字。控制字符的特定表示形式:e 表示escape(ESC)码并等价于033 n 表示换行LF码并等价于012 r 表示回车CR码并等价于015 t 表示回车tab 其中e,n,r,t字符必须是小
12、写。例如:“adfA12”,“c:fff.lsp”都是有效字符串。,4 表型数据(LIST)表是放在括号内的一个或多个数据元素的有序组合,数据元素由任意数量的整数、实数、字符串,甚至其它表组成。例:(12 25 10),(10“a”12.2)、(12“er”12.3(23 23 14)表提供了在一个符号中存储大量相关数值的有效方法,是AutoLISP的基本数据结构。表有两种类型:一种是供求值用,表中第一个元素是函数关键字或运算符。例如:求值表达式:(+12 45)。另一种是作为数据的容器,表中的第一个元素不是函数关键字或运算符。例如:表示一个空间点坐标的点表(12.3 34.5 25)。此外,
13、还有一种特殊的表,该表中没有元素,称之为空表。,5 符号原子(SYMBOL)符号原子(简称符号)用于存储数据,符号名可以包含除下列字符以外的任何可以打印的字符:“(”和“)”括号用作表的定义。“.”该字符用作点对结构。“”该字符用于求值,是函数QUOTE的简写。“;”分号字符用作程序行的注释标志。“”字符串的分界符。例如:C24,C!23,67tf 正确;B.C,(NBA),N;45 错误。在程序中符号名不区分大小写,其长度不受限制。符号存储采用结点方式,一个结点只保存位的符号原子,若超过,将开辟新存储区,原结点则包含指向该存储区的指针,定义符号长度不超过位。两个特殊的字符,即T和Nil,其值
14、由系统预先设定,T 的值为真,而Nil的值为空或不存在。,6 文件描述符(FILE)文件描述符是AutoLISP赋予其打开文件的字符系列标号,它的值由系统自动确定,当AutoLISP需要访问一个文件时(读或写),该文件的标号首先被引用,然后才能进行文件的读写操作。5 内部函数(SUB)AutoLISP一般通过定义内部函数来实现具体的操作功能,或者为AutoCAD增加命令,内部函数的定义是靠AutoLISP提供的函数“Defun”来定义的。8 实体名(ENAME)实体名是AutoLISP赋予绘图中实体的符号识别标号。实际上它是AutoCAD数据库文件内部的一个指针。9 选择集(PICKSET)选
15、择集是一个或多个实体的集合。,5.2.3 AutoLISP变量,1 变量的名称 除系统的保留字、函数符号和产生歧意的字符之外的所有字符。系统约定变量名的第一个字符是字母。保留字:内部函数名、专用字符和AutoCAD 已定义的变量。专用字符:如小圆点(.)、双引号(“”)、单引号()、圆括号()、空格,函数符号有、*、等,产生歧意的字符:如显示操作符(?)、控制符号()等。,2 类型说明 变量没有类型说明函数,值类型取决于赋值函数或表达式的返回值类型。在程序设计时,对于同一个变量可以设定为不同类型的数据类型,变量的类型根据所赋值的类型自动确定。例如:(setq num 123);变量num的类型
16、是整型(setq num“aaa”);变量num的类型是字符串(setq num(12 23 14 0);变量num的类型是表 变量可在系统命令行显示,在变量名前加上字符“!”即可。例如:!num 显示:(12 23 14 0),3 常用变量 AutoCAD已经定义了四个常用变量,用户可以直接调用,也可以用“setq”函数改变其值(建议不要改变)。四个常用变量如下:(1)PAUSE变量 带有反斜杠()的字符串,用于在命令函数中等待用户输入。(2)PI变量 常数的值,该值为3.1415926。(3)Nil变量 表示该变量的值不存在。(4)T变量 常量,用作一个非空值(not nil)。,4.变量
17、的值域 AutoLISP的变量分为全局变量和局部变量。局部变量:是指用户在某一个函数中定义的变量,变量在函数执行时,值将被保存;函数结束后,变量从内存中自动消失。局部变量由AutoLISP函数“defun”来定义。全局变量:用“setq”函数赋值的变量均为全局变量,其值永久被保存,直到用户退出AutoCAD状态为止。变量存储:在AutoLISP中,每一个变量将作为一个节点(或结点)来保存,一个节点使用个字节以上的内存。变量清除:为了节约内存,当全局变量不使用时,及时清除以释放内存。清除变量的方法是把它们的值设定为Nil。例如:(setq num nil);nil表示清空。,5.2.4 Auto
18、LISP表达式,表达式的形式为一个表型数据,即求值型表数据。1 表达式格式 表达式是包含有函数关键字,按照AutoLISP规则的字符串。格式为:(函数名 参数.)用户在编辑表达式时应注意以下几点:每一个表达式均由一个左括号开始,对应的右括号结束。内容包括一个函数名和一个函数的参数表,函数名在左,参数表在右,分隔符是空格。例如:(+2 3),“”是运算符或内部函数,表示2+3。表达式可嵌套表达式,不论嵌套几层,左右括号总配对。例如(/(+(-21 9)(-12 8)2),2 返回值 表达式返回一个值,该值返回到命令行命令提示处。AutoCAD命令行的命令提示信息的格式,英文版的命令提示符为“Co
19、mmand:”,而中文版的命令提示符为“命令:”。例如:命令:(*2 40)返回:80 AutoLISP是解释性语言,在命令行中直接输入。例如:命令:(*2 40)返回:80 命令:(+5(*2 40)返回:85,3 错误信息 如果用户输入的右括号不配对,则显示下面的提示:n).表示表达式中缺少个右括号。例如:命令:(*2(-45 5 命令:2)命令:80,5.3 AutoLISP内部函数,基本函数 基本函数分为:数学函数、关系函数、逻辑函数、表处理函数、字符串处理函数和转换函数等。实用函数 实用函数分分为几何求值、交互操作、流程控制和文件处理等五类。实体操作函数 实体操作函数分为实体名操作和
20、选择及操作函数两类。其它操作函数 在这类函数中,主要包含系统环境相关、显示控制和内存管理函数,共列14个函数。,基本函数,1 数学函数 分为基本运算、三角函数等,共列18个函数。,加运算(+num1 num2)函数返回所有num的总和,num可为整数也可为实数,若其中一个为实数,结果为实数。例如:(+2 4 6)返回12(+12.5 2)返回14.5,减运算(-num1 num2)函数返回num1减去num2、num3、所得的差。例如:(-55 40)返回10(-60 40.0)返回20.0(-8)返回8,乘运算(*num1 num2)函数返回所有num的乘积。例如:(*3 7)返回21(*3
21、(+2 0.5)返回5.5 除运算(/num1 num2)函数以num1除以num2、num3、.,所得的商返回。例如:(/9 2)返回4(/9.0 2)返回4.5 增量计算(1+num)函数返回num+1的值。返回值取决num的类型。例如:(1+8)返回9(1+3.5)返回4.5 减量计算(1-num)此函数返回num-1的值。例如:(1-8)返回7(1-5.5)返回4.5,求绝对值(abs number)函数返回number的绝对值,其中number可为整数或实数。例如:(abs 18)返回18(abs 12.5)返回12.500000(abs 2)返回2 求余弦(cos angle)函数
22、返回angle的余弦值(实数),其中angle的单位为弧度。例如:(cos 0.0)返回1.00000(cos Pi)返回 1.00000 求正弦(sin angle)函数返回angle的正弦值。例如:(sin 2)返回0.90929(cos 2.0)返回0.90929,求反正切(atan num1 num2)函数返回num1/num2的反正切值。其范围在-之间。如果没有提供num2,函数返回num1的反正切值。如果num2为零,则返回的符号与num1相同,其值为1.570796,即值为90。例如:(atan 2.0 30)返回0.588002(atan 1.0)返回0.785398(atan
23、 2.0 0)返回1.570796 求余数函数(rem num1 num2)函数返回num1/num2的余数。例如:(rem 20 4)返回0(rem 42 12)返回6 求最大公约数(gcd num1 num2)函数返回num1、num2的最大公约数,其参数必须为正整数。例如:(gcd 81 57)返回3(gcd 17 31)返回1,求最大值函数(max num1 num2)函数返回所给数的最大值。例如:(max 12 12.3 4)返回12.30000 求最小值函数(min num1 num2)函数返回所给数的最小值。例如:(min 14 11.3 4-2)返回-2 乘方计算函数(expt
24、 num power)函数返回num的power次方值,其中num为底数,为power幂,如果num和power为整数,返回值也为整数,否则返回实数。例如:(expt 3 3)返回27(expt 3 2)返回0(expt 3.0 2)返回0.11111,求e的任意次方函数(exp num)函数返回e的num次方值,返回值为实数。例如:(exp 1.0)返回2.718282(即e1)求对数函数(log num)函数返回num的自然对数,返回值为实数。例如:(log 3)返回1.098160求平方根函数(sqrt num)函数返回num的平方根,返回值为实数。例如:(sqrt 25)返回5.000
25、0(sqrt 25.0)返回5.0000,2 关系函数 关系函数主要用于比较表达式之间的关系,共列6个函数。该类函数有六个,函数名分别为=、/=、和=。在这些函数中nstr可以为整数,可以为实数,也可以为字符串。当nstr为字符串时,则按ASCII码的大小进行比较。,等于函数(=nstr1 nstr2)所有的nstr均相等时,返回,否则返回Nil。不等于函数(/=nstr1 nstr2)若nstr1不等于nstr2,返回,否则返回Nil。小于函数(nstr1 nstr2)若nstr1小于nstr2,返回,否则返回Nil。,小于等于函数(nstr1 nstr2)若nstr1大于nstr2时,返回
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VisualLISP 程序设计
链接地址:https://www.31ppt.com/p-6523153.html