《AutoCAD高级培训第五讲之二》由会员分享,可在线阅读,更多相关《AutoCAD高级培训第五讲之二(13页珍藏版)》请在金锄头文库上搜索。
1、AutoCAD高级培训 第五讲之二AutoCAD二次开发(Visual LISP集成开发环境简介)一、 Visual LISP概述Visual LISP简称VLISP,是为加速AutoLISP程序开发而设计的软件工具,它提供了一个完整的集成开发环境,包括编译器、调试器和其他工具,它可以显著地提高自定义AutoCAD的效率。VLISP提供的主要工具有:文本编辑器、格式编排器、语法检查器、源代码调试器、检验和监视工具、文件编译器、工程管理系统、上下文相关帮助与自动匹配功能和智能化控制台等。二、 启动和退出Visual LISP集成开发环境1. 启动步骤:(菜单方式)(1) 启动AutoCAD(2)
2、 工具AutoLispVisual LISP编辑器若使用键盘命令,则:命令:vlisp或vlide2退出: 文件退出三、 Visual LISP 集成开发环境介绍包含以下几个部分:1. 菜单栏2. 工具栏:标准、调试、工具、搜索、视图 (共5个)3. 控制台窗口可输入AutoLisp命令,代替菜单和工具栏命令4. 状态栏屏幕底部显示Visual LISP的状态信息5. 跟踪窗口启动时包含:关于Visual LISP当前版本的信息、启动Visual LISP遇到错误时的一些信息。6. 文本编辑器打开或新建一个Visual LISP源程序,就可以看到文本编辑器的全貌。7. 其他Visual LIS
3、P窗口(必要时才打开)(一)Visual LISP菜单介绍菜单的内容:随着激活窗口的不同菜单内容将会不同。1. 文件:打开、新建、保存2. 编辑:复制、粘贴、括号匹配3. 搜索:查找、替换文本、设置书签4. 视图:查找、替换变量及符号值等5. 工程:应用程序的工程功能管理项目、编译程序等6. 调试:提供程序调试功能设置和删除断点、单步执行、检查变量状态、检查表达式结果等7. 工具:设置Visual LISP选项文本格式、环境选项变量,如窗口和工具栏的位置8. 窗口:提供窗口管理功能9. 帮助:提供帮助功能,包括显示在线帮助(二)工具栏介绍工具栏包括一系列功能的Vlisp命令组1. 标准:新建、
4、打开、保存、打印输出、剪切、复制、粘贴、取消、恢复、完成词语功能2. 工具:加载整个活动窗口代码、加载指定部分代码、语法检查(全部、指定部分)、对窗口代码格式化(整个活动窗口、指定代码)、设置注释代码、取消整块注释块、在线帮助3. 搜索:查找、替换、查找并替换、设置或取消书签、下一个书签、上一个书签4. 视图:切换到AutoCAD窗口、选择窗口、Visual LISP控制台、打开检验窗口、堆栈跟踪、符号服务、自动匹配、显示监视窗口5. 调试:下一层嵌套表达式、下一个表达式、跳出表达式、继续执行、退出、重置、设置或取消断点切换、添加监视、显示上一个断点(三)控制台操作1. 控制台的功能这里是用命
5、令操作的地方(Visual LISP命令、AutoLISP命令),并能看到结果,类似于AutoCAD的命令行窗口如:(setq a “hello,The world!”)查看a的值时在控制台窗口用:a(表示回车)AutoCAD命令:!a2. Visual LISP控制台窗口中的独特特性可以在新的一行上输入上一行没有完成的AutoLISP表达式可在前输入多个表达式,并在Visual LISP给控制台返回一个值之前将为每一个表达式求值光标在任意位置均可用移至提示符所在行上,如果选中的有文本,则同时移至提示符所在行(此功能可以复制)使用Tab键可获得以前输入的文本,每按一次即可将上一次的文本显示,循
6、环执行。Shift+Tab与Tab类似,只是方向相反使用Tab键可以实现关联查找,如输入“(+Tab”会在以前输入的文本中查找以“(+”开头的文本Esc键清除提示符下的所有字符,shift+Esc则离开当前行上的文本,并在新的提示符下准备接受用户的输入3. 系统控制台的快捷菜单单击右键*小技巧:可在控制台窗口与AutoCAD命令行窗口之间复制和粘贴文本。(四)文本编辑器概述主要功能:1. 彩色代码显示2. 文本格式化3. 括号匹配4. 执行AutoLISP表达式(不离开文本编辑器)5. 在多文件间进行查找6. 语法检查(五)加载和运行AutoLISP程序1. 在AutoCAD窗口操作(略)2.
7、 在VLISP环境下操作可加载完整的和部分的AutoLISP程序文件加载完整的AutoLISP程序:文件打开文件选择文件内容工具加载编辑器中的文字加载部分的AutoLISP程序:选择部分文件内容工具加载选定代码四、 文本编辑器主要功能及其实现1. 文件/编辑/保存操作有关操作与Windows环境下的应用软件(如Word等)类似,这里从略。2. 代码分色器和在控制台窗口中相同,一旦在文本编辑器中输入文本后,Visual LISP会判断所输入的文本是否是一个AutoLISP内部函数、数字、字符串或者其它的已知元素,并用每一种元素自己的颜色显示这些文本。默认的AutoLISP语言代码配色方案Auto
8、LISP元素颜色内部函数和被保护的符号蓝色字符串粉色整数绿色实数浅蓝色注释粉色,背景为灰色括号红色其他(如用户变量名等)黑色Visual LISP可以按照一些语言的种类确定代码颜色,方法是:工具窗口属性按语法着色用户可以自定义颜色配置,方法是:工具窗口属性配置当前窗口打开“窗口属性”对话框进行配置3. 文本格式化(1)设置AutoLISP代码格式的对话框工具环境选项Visual LISP格式选项(2)AutoLISP代码格式的总体式样有普通、宽行、窄行和分栏四种式样。4. 语法检查(1) 括号匹配向前匹配将插入点(光标位置)移到和开括号相匹配的闭括号之后向后匹配将插入点(光标位置)移到和闭括号
9、相匹配的开括号之前向前选择插入点的移动和“向前匹配”相同,同时选中文本向后选择插入点的移动和“向后匹配”相同,同时选中文本(2) 检查语法错误应用彩色代码功能检查语法错误用语法检查功能检查语法错误主要检查的语法错误为:圆括号不匹配函数的参数数目不正确函数的参数类型不正确某些特殊函数的语法不正确方法:工具“检测编辑器中的文字”如果检测到错误,就会在“编译输出”窗口看到错误信息。五、 调试程序VLISP提供的调试程序工具有:监视窗口:在程序执行过程中查看变量的值检验窗口:在“检验”对话框中显示指定对象的详细信息“符号服务”对话框:符号可以是变量或函数名。通过符号服务对话框可以查看变量的当前值、函数
10、的定义和设置变量及函数的一些特性断点循环模式:在程序内部设置断点,中断程序的执行,并允许用户在中断时查看和修改对象值六、 编辑和调试程序时的常见问题及排除方法序号问题类型原因排除方法1内部函数名输入错误源程序代码编辑不仔细根据“代码分色”进行判断、修改2语法检查时提示:输入的列表有缺陷括号不匹配用“代码格式化”或“括号匹配”检查、修改3语法检查时提示:XXXX中参数太少,(XXXX XX XX 。)引用内部函数时参数数量不足双击该错误提示,回到文本编辑器进行检查、修改4程序运行时提示:no function definition:XXXXXXX(没有函数定义)内部函数名错;没有定义外部函数;元
11、素间缺少空格等检查“XXXXXXX”,分析原因、加以修改5程序运行时提示:参数类型错误:numberp:nil(参数类型为空)变量没有赋值;变量名错误设置断点、监视变量、单步执行,直到执行中断,在中断处分析错误6程序运行时提示:参数类型错误:symbolp nil(符号为空)变量(符号)没有赋值,或变量(符号)名写错设置断点、监视变量、单步执行,直到执行中断,在中断处分析错误7程序运行时提示:进入无限循环(出现死循环)循环结构中循环条件表达式错误分析循环结构,加以修改8执行结果不正确算法错误(各种各样)设置断点、监视变量、单步执行,分析错误加以修改9下达命令后似乎没反应“Defun”函数的“变
12、量表”格式错误检查“Defun”函数的“变量表”中“/”的前后是否都有空格常见错误:缺少闭括号,变量名、函数名输入错误,表中元素间缺少空格(至少有一个),输入程序代码有遗漏(整行或错行)另外,还需注意,在出现死循环或进入无限循环而强制中断执行后,往往出现无法操作AutoCAD的现象。此时,需要使用“窗口”菜单或者“视图”工具栏中的“激活AutoCAD”命令激活AutoCAD,才能继续对AutoCAD进行操作。下面再看几个用AutoLISP语言编程画图的例子:1. 绘制太极图案程序源代码:(defun yinyang(/ origin radius i-radius half-r origin-
13、x origin-y os) ;参见辅导材料P43-44 (setq os (getvar OSMODE) ;参见辅导材料P51 (setvar OSMODE 0) ;参见辅导材料P51 (setq origin (getpoint n图案的中心:) (setq radius (getdist n图案的半径: origin) (setq i-radius (getdist n内部圆的半径: origin) (if ( i-radius radius) (setq i-radius (/ radius 4) ;参见辅导材料P41 (setq half-r (/ radius 2) (setq o
14、rigin-x (car origin) (setq origin-y (cadr origin) (command CIRCLE origin radius) (command ARC C (list origin-x (+ origin-y half-r) (list origin-x (+ origin-y radius) origin ) (command ARC C (list origin-x (- origin-y half-r) (list origin-x (- origin-y radius) origin ) (command CIRCLE (list origin-x (+ origin-y half-r) i-radius ) (command CIRCLE (list origin-x (- origin-y half-r) i-radius )(setvar OSMODE os)