260 likes | 533 Views
第 17 章 AutoLISP 与 Visual LISP. 第一节 LISP 、 AutoLISP 、 Visual LISP. 第二节 Visual LISP 集成开发环境 VLISP 命令 工具→ AutoLISP→Visual LISP 编辑器 2 . 1 菜单栏、工具栏、状态栏 1 、 菜单栏:文件、编辑、搜索、视图、工程、调试、工具、窗口、帮助。 2 、 工具栏:标准、搜索、调试、视图、工具。 3 、 状态栏:显示与当前操作所对应的信息。. 2 . 2 文本编辑器
E N D
第17章 AutoLISP与Visual LISP 第一节 LISP、AutoLISP、Visual LISP 第二节 Visual LISP集成开发环境 VLISP命令 工具→AutoLISP→Visual LISP编辑器 2.1 菜单栏、工具栏、状态栏 1、 菜单栏:文件、编辑、搜索、视图、工程、调试、工具、窗口、帮助。 2、 工具栏:标准、搜索、调试、视图、工具。 3、 状态栏:显示与当前操作所对应的信息。
2.2 文本编辑器 1、 程序代码以不同的颜色显示:Visual LISP默认颜色设置如下表所示。
2、 文本格式化: ⑴ 设置代码格式的样式 工具→环境选项→Visual格式选项 ⑵ 使程序代码按当前样式显示 工具→设置编辑器中代码的格式 工具→设置选定代码的格式 3、 括号匹配:编辑→括号匹配 4、 执行AutoLISP表达式: 5、 在多文件之间进行查找: 6、 语法检查: 2.3 控制台窗口 2.4 跟踪窗口
第三节加载、执行AutoLISP程序 3.1 在Visual LISP集成开发环境中加载、运行AutoLISP程序 1、加载AutoLISP程序 ⑴启动Visual LISP集成开发环境:工具→AutoLISP→Visual LISP编辑器 ⑵编写新程序或打开已有的AutoLISP程序: ⑶加载AutoLISP程序:工具→加载编辑器中的文字 2、运行AutoLISP程序
3.2 在AutoCAD环境中加载、运行AutoLISP程序 1、在AutoCAD环境中加载AutoLISP程序 工具→AutoLISP→加载 即执行APPLOAD命令。 2、在AutoCAD环境中运行AutoLISP函数 用“c:defun<函数名>”格式定义和用“defun<函数名>” 格式定义有区别。
第四节AutoLISP编程 4.1 AutoLISP程序文件及其结构 1、AutoLISP程序文件:以ASCII码文本格式保存,其扩展名通常为.LSP。 2、AutoLISP程序结构:AutoLISP程序由注释和表达式组成。注释以分号“;”开头,可单独位于一行,也可位于某一程序语句的后面。表达式是AutoLISP的基本语句,所有表达式都具有以下形式:(函数名[变元表]……)
例如,(setq z 78.0)和(setq a(setq c 78.0)) 可见,AutoLISP语言的结构与常用高级语言的结构有所区别。不是“中缀表示法”如z=78.0 即赋值运算符“=”位于中间。AutoLISP采用“前缀表示法”,把运算符放在表的第一个元素的位置,后面为其他参数,如(setq z 78.0) 又如表达式X=(A+B)*C在AutoLISP中表示为(setq X (*(+ A B) C) 在AutoLISP表达式中,函数变元表对表达式的执行过程中是从最内层表开始逐步到最外层表。
4.2 AutoLISP数据类型 1、整型数:由0,1,2,3,4,5,6,7,8,9,+和-这12个字符组成的数字。如+230,450,-180等。取值范围-2147483647~+2147483648。 2、实型数:带小数点的数。如13.2,0.045,4.5e-2等。 3、字符串:由一对双引号括起来的字符序列。双引号称字符串定界符。 “\nnn”如“\101\102\103”与“ABC”即反斜杠“\”以作为字符串中的前导转义符。
下表列出了常用控制字符的ASCII码。 表中e、n、r、t必须为小写字母。例如(prompt “\nEnter Passwords:”)和(prompt “\012Enter Passwords:”)二者功能相同。
4、符号(或变量):用于存储数据。以下六个字符不可用:左括号( 右括号) 句号. 撇号’ 双引号” 分号; 不允许数字作为符号名的第一个字符。在AutoLISP程序中,通常应给各符号赋值。如(setq s “Enter your password!”) 5、表:AutoLISP的表指包含在一对相匹配的左、右圆括号之间的相关数据的集合。表中每一项称为表的元素,各元素间用空格隔开。如(0.54 0.47) (7.89 9.32 6.78) (setq a 6.1) (“Hello” “everyone”)等。
6、文件描述符:当AutoLISP打开一个文件时,系统将给该文件赋一个数字标号,当AutoLISP函数要访问该文件时(读或写),应通过该文件的描述符对此文件进行操作。如6、文件描述符:当AutoLISP打开一个文件时,系统将给该文件赋一个数字标号,当AutoLISP函数要访问该文件时(读或写),应通过该文件的描述符对此文件进行操作。如 (setq data (open “mydata.dat” “w”)) (print “This is an Example.” data) 7、AutoCAD选择集:如(setq ss (ssget “p”)) 8、AutoCAD实体名:如 (setq olast (entlast)) 9、VLA对象:图形中的对象同时可被描述成VLA对象,当通过Active X函数编程时,必须引入VLA对象。 10、内部函数、外部函数:
4.3 AutoLISP函数 1、计算函数:
2、关系运算函数: 3、逻辑运算函数:
4、赋值函数: (setq <符号1> <表达式> [符号2][表达式2]……) 函数的功能为:依次将<表达式>的值赋给对应的符号。如(setq a (/ 12 3))返回4。 (setq a 34 c 45 d 56)返回56 5、禁止求值函数: (quote <表达式>)或简写为('<表达式>) 函数的功能为:禁止对<表达式>求值,返回<表达式>本身。如('abc) 返回ABC。 6、转换函数:
8、command函数: 利用command函数,AutoLISP几乎可以调用的全部命令,从而能够利用AutoLISP程序完成各种绘图工作。函数的格式:(command <参数>…) 其中 <参数>为调用AutoCAD命令所需要的全部数据,它们的格式取决于执行AutoCAD命令时实际需要的数据。例如:在AutoCAD环境中,从点(100,120)向点(23,116)画线的操作格式为: 命令:line/ 指定第一点:100,120/ 指定下一点或[放弃(U)]:23,116/ 指定下一点或[放弃(U)]:/ 在AutoLISP程序中,利用command函数实现此画线操作的程序代码如下: (command “line” “100,120” “23,116” “”) 或 (command “line”`(100 120)`(23 116) “”)
command命令有以下约定: ⑴作为参数的AutoCAD命令、相应的选项均应以不含空格的字符串表示,大小写均可。 ⑵调用line、pline,Iayer等命令时,最后以“”结尾,等效于在键盘上按一次空格键,以 终止该命令的执行。 ⑶画圆时最后不需要加“”。例如, (command “circle” “100,80” 30) ⑷用command命令可执行多条AutoCAD命令。例如, (command “line” “100,50” “45,68” “67,90” “” “circle” “100,50” 60) 9、求值函数:
11、交互式输入函数: 12、条件函数:
13、循环函数: 14、文件处理函数:
15、显示控制、输入输出函数: 16、函数处理函数: defun函数用来定义用户的函数,该函数的使用格式如下所示: (defun <函数名> <形参表> <表达式>…) 其中<函数名>是所定义函数的名字;<形参表>是该函数的变量列表,可以为空;<表达式>用于函数执行时的计算。将含有用户定义函数的AutoLISP程序加载到AutoCAD环境后就可以直接调用该函数。调用已定义函数的格式为: 命令:(<函数名> <实参表>)
例:定义一个将度转换成弧度的函数dtor。 己知将度转换成弧度的计算公式为:dtor(a)=a*π/180 相应的程序代码可以为如下所示形式: (defun dtor(a) (* a (/pi 180.0)) ) 在此程序中,dtor为函数名,a为形式参数。在AutoCAD环境中加载该程序后,可按以下格式调用dtor函数: 命令:(dtor 45) ↙ 执行结果为0.785398。 在此调用中,dtor是函数名,45是实际参数。
可以看出,当调用由defun定义的函数时,应采用(<函数名> <实参表>)格式。如果希望定义的函数成为AutoCAD的一个命令,应采用如下定义格式: (defun c:<函数名> <形参表> <表达式>…) 注意这里的c:并不表示硬盘驱动器,而是函数名前缀。按这样的格式定义函数,当与其对应的AutoLISP程序被加载到AutoCAD环境后,直接在“命令:”提示下输入函数的名称,即可执行相应的功能。在VisualLISP集成开发环境中运行按“c:<函数名>”格式定义的函数时,当加载对应程序后,应在控制台窗口的$提示符后输入(c:<函数名>)后回车来执行该函数。
第五节 在VisualLISP集成开发环境中调试程序 编写程序,特别是编写大型程序时,很难保证程序一次就能运行成功。即使程序能够执行,也有可能存在各种缺陷,如不能完成全部功能、语法错误、括号不配对等。利用VisualLISP集成开发环境提供的调试工具,可以方便地调试程序、查找错误。
本节以下面所示程序为例说明程序的调试过程。本节以下面所示程序为例说明程序的调试过程。 ;;;本程序将根据输入的三个点绘制圆和三角形 (defun Mydraw() (setq pl (getpoint “\n输入第一点”)) (setq p2 (getpoint “\n输入第二点”)) (setq p3 (getpoint “\n输入第三点”)) (command “circle” “3p” pl p2 p3) ;通过三点绘制圆 (command “line” pl p2 p3 “c”) ;通过三点绘制三角形 ) 执行Mydraw函数后,依次提示用户输入三个点的位置,此时可以用点的坐标响应,也可以直接在绘图屏幕上拾取点。确定这三个点后,以这三点绘圆和三角形。
1.启动VisualLISP 在AutoCAD环境中,选择“工具”→“AutoLISP” →“Visual LISP编辑器”下拉菜单项,即执行VLISP命令,AutoCAD切换到VisualLISP集成开发环境。 2.输入程序代码并设置其格式 通过VisualLISP集成开发环境中的新建文件按钮新建一文件;在文本编辑器中输入上述程序代码;选择“工具” →“设置编辑器中代码的格式”下拉菜单项,或单击“工具”工具栏上的(设置编辑窗口格式)按钮,按VisualLISP的默认设置给输入的程序代码设置格式。在执行设置格式操作之前,可以通过 “格式选项”对话框定义格式的样式。 3.保存程序 输入程序代码后,单击“标准”工具栏上的按钮(保存文件),从弹出的对话框中以文件名MyLisp来保存输入的程序。