《第6章 调试程序清华CAD二次开发 LISP[详版课资]》由会员分享,可在线阅读,更多相关《第6章 调试程序清华CAD二次开发 LISP[详版课资](72页珍藏版)》请在金锄头文库上搜索。
1、第第 6 章章 调试程序调试程序 1课堂优质6.1 6.1 概述概述 语语法法正正确确的的程程序序并并不不能能保保证证正正常常运运行行,在在运运行行时时可可能能会会产产生生错错误误的的结结果果或者发生崩溃现象,这就需要调试。或者发生崩溃现象,这就需要调试。调试程序的步骤是:调试程序的步骤是: 控制程序在指定的位置暂停;控制程序在指定的位置暂停; 查看、分析有关变量的值;查看、分析有关变量的值; 修改程序的源代码;修改程序的源代码; 继续或重新运行程序;继续或重新运行程序; 如果程序不能正常运行,继续调试程序,直至程序正常运行。如果程序不能正常运行,继续调试程序,直至程序正常运行。 为为了了便便
2、于于调调试试程程序序,Visual Visual LISPLISP提提供供了了一一些些调调试试程程序序的的工工具具,帮帮助助用用户户迅速查找并改正程序中的错误。迅速查找并改正程序中的错误。 VisualLISPVisualLISP提提供供了了监监视视窗窗口口、检检验验窗窗口口、符符号号服服务务对对话话框框、中中断断和和继继续续执行程序的模式、命令跟踪、跟踪堆栈、跟踪窗口等调试程序的工具。执行程序的模式、命令跟踪、跟踪堆栈、跟踪窗口等调试程序的工具。2课堂优质 通通过过图图6-16-1示示ViewView下下拉拉菜菜单单和和ViewView工工具具栏栏可可以以调调用用监监视视窗窗口口、检检验验窗
3、窗口口等等调试工具。调试工具。检验窗口检验窗口跟踪堆栈跟踪堆栈出错跟踪出错跟踪符号服务符号服务监视窗口监视窗口自动匹配窗口自动匹配窗口断点窗口断点窗口编译输出窗口编译输出窗口VisualLISPVisualLISP控制台控制台浏览图形数据库浏览图形数据库选择工具栏选择工具栏图图6-1 View6-1 View下拉菜单下拉菜单打打开开监监视视窗窗口口匹匹配配符符号号服服务务堆堆栈栈跟跟踪踪功功能能打打开开检检测测窗窗口口激激活活控控制制台台窗窗口口确确定定活活动动窗窗口口切切换换到到AutoCAD图图形形窗窗口口 3课堂优质 通通过过图图6-26-2所所示示DebugDebug下下拉拉菜菜单单和
4、和DebugDebug工工具具栏栏的的选选项项可可以以设设置置程程序序暂暂停停的模式和继续程序运行的方式。的模式和继续程序运行的方式。只执行一步表达式求值。只执行一步表达式求值。执行到下一个断点,如无断点,则执行一个完整的表达式求值。执行到下一个断点,如无断点,则执行一个完整的表达式求值。执行到下一个断点,如无断点,则执行一个最外层的表达式求值。执行到下一个断点,如无断点,则执行一个最外层的表达式求值。继续执行程序继续执行程序结束当前程序。返回到控制台的上一层中断顶层读算写循环。结束当前程序。返回到控制台的上一层中断顶层读算写循环。结束所有当前活动的断点循环并返回到控制台的顶层读算写循环。结束
5、所有当前活动的断点循环并返回到控制台的顶层读算写循环。添加监视添加监视回到最近一次监视窗口的环境回到最近一次监视窗口的环境设置设置/ /删除断点删除断点清除所有的断点清除所有的断点回到源程序上的最近一次的断点回到源程序上的最近一次的断点跟踪命令跟踪命令立即暂停立即暂停出错断开出错断开自动运行自动运行终止求值终止求值图图6-2 Debug6-2 Debug下拉菜单下拉菜单4课堂优质调试指示器按钮显示上一个断点添加监视设置或取消断点切换重置为顶层退出当前层继续执行跳出表达式下一个表达式下一层嵌套表达式Debug工具栏工具栏 5课堂优质6.2 6.2 监视窗口监视窗口 监视窗口用于监视变量、函数在程
6、序运行过程中的结果。选择菜单监视窗口用于监视变量、函数在程序运行过程中的结果。选择菜单D DebugebugWWatch Last Evaluationatch Last Evaluation。将弹出图。将弹出图6-36-3所示的所示的监视监视窗口。窗口。 图图6-3 6-3 监视窗口监视窗口 6课堂优质1. 1. 监视窗口的工具栏监视窗口的工具栏 监视窗口的工具栏有四个图像按钮,从左至右依次是:监视窗口的工具栏有四个图像按钮,从左至右依次是:添加监视:将新的变量加入到监视窗口。添加监视:将新的变量加入到监视窗口。 清除变量:清除监视窗口内的所有的变量。清除变量:清除监视窗口内的所有的变量。排
7、序:将监视窗口内的变量名按字母顺序排序。排序:将监视窗口内的变量名按字母顺序排序。复制到跟踪复制到跟踪/ /日志:将监视窗口的内容复制到跟踪窗口。日志:将监视窗口的内容复制到跟踪窗口。如果打开了日志选项,监视窗口中的这些内容也将被复制到跟踪日志文件。如果打开了日志选项,监视窗口中的这些内容也将被复制到跟踪日志文件。7课堂优质2. 2. 监视窗口的快捷菜单监视窗口的快捷菜单 选选择择监监视视列列表表中中的的某某一一项项并并单单击击鼠鼠标标右右键键,可可显显示示图图6-46-4所所示示监监视视窗窗口口的快捷菜单。的快捷菜单。调用检验功能,查看所选值。调用检验功能,查看所选值。将所选变量的值复制到系
8、统变量将所选变量的值复制到系统变量 * *obj* obj* 中。中。将所选变量值加上一个单引号前缀将所选变量值加上一个单引号前缀 ,打印到控制台窗口。,打印到控制台窗口。对所选变量调用符号服务对话框。对所选变量调用符号服务对话框。调用自动匹配选项对话框,用所选变量名作自动匹配参数。调用自动匹配选项对话框,用所选变量名作自动匹配参数。从监视窗口中删除所选变量。从监视窗口中删除所选变量。图图6-46-4监视窗口的快捷菜单监视窗口的快捷菜单 3. 3. 将变量加入到监视窗口将变量加入到监视窗口有三种途径可以将新的变量加入到监视窗口。有三种途径可以将新的变量加入到监视窗口。 8课堂优质(1 1) 点
9、取工具栏上的添加监视按钮点取工具栏上的添加监视按钮 ,在随后弹出的图,在随后弹出的图6-56-5所示的所示的添加添加监视监视窗口内填入变量名,然后单击窗口内填入变量名,然后单击OKOK按钮。按钮。 图图6-56-5添加监视窗口添加监视窗口 (2 2)亮亮显显要要添添加加的的变变量量名名,然然后后点点取取工工具具栏栏上上的的添添加加监监视视按按钮钮 ,随随后后弹弹出出的的图图6-66-6所所示示的的已已填填写写了了该该变变量量名名的的添添加加监监视视窗窗口口,然然后后单单击击OKOK按按钮。钮。(3 3)将光标移至将要添加的变量名,单击鼠标右键,在随后弹出的快捷)将光标移至将要添加的变量名,单击
10、鼠标右键,在随后弹出的快捷菜单上选取菜单上选取Add WatchAdd Watch菜单项,将弹出已填写了该变量名的添加监视窗口,菜单项,将弹出已填写了该变量名的添加监视窗口,然后单击然后单击OKOK按钮。按钮。 9课堂优质4. 4. 监视变量的值监视变量的值 监监视视列列表表的的每每一一行行的的格格式式是是 变变量量名名= =变变量量值值 ,例例如如:A A = = 1 1。如如果果程程序序尚尚未未运运行行,变变量量的的值值是是空空的的;随随着着程程序序的的运运行行,在在监监视视窗窗口口可可以以看看到到变变量量的的值也在不断变化。值也在不断变化。5. 5. 利用断点和监视窗口调试程序利用断点和
11、监视窗口调试程序 假假定定在在编编辑辑器器窗窗口口已已键键入入了了图图6-66-6所所示示的的源源程程序序。该该程程序序的的功功能能是是根根据据用用户输户输入的两个入的两个对对角点角点绘绘制矩形。制矩形。 首首先先检检查查该该程程序序是是否否存存在在语语法法错错误误。选选择择菜菜单单T ToolsoolsText Text in in EditorEditor或或单单击击按按钮钮,在在Build Build OutputOutput(输输出出)窗窗口口显显示示; ; Check Check done.done.。说说明明该该程程序序没有没有语语法法错误错误。 选选择择菜菜单单T Toolsoo
12、lsLoad Load Text Text in in EditorEditor或或单单击击按按钮钮 ,VisualLISPVisualLISP自自动动将将控控制制切切换换到到AutoCADAutoCAD界界面面。当当出出现现 输输入入矩矩形形的的一一个个角角点点: 的的提提示示时时,输输入入(0,0)(0,0)点点,该该点点是是p1p1点点的的坐坐标标;当当出出现现 输输入入矩矩形形的的对对角角点点: 的的提提示示时时,输输入入(100,100)(100,100)点点,该该点点是是p2p2点点的的坐坐标标。程程序序运运行行结结束束,只只得得到到了了矩矩形形的的两两条条边边,显显然,然,这这不
13、是不是预预期的运行期的运行结结果。果。10课堂优质 下面演示如何利用下面演示如何利用监视监视窗口窗口调试调试程序。程序。调试调试程序的步程序的步骤骤如下:如下:(1 1)确确定定要要监监视视的的变变量量。选选择择菜菜单单D DebugebugA Add dd WatchWatch或或单单击击工工具具栏栏上上的的添添加加监监视视按按钮钮 ,在在随随后后弹弹出出的的添添加加监监视视窗窗口口内内填填入入变变量量名名p1p1,然然后后单单击击OKOK按按钮钮。用同。用同样样的操作的操作监视变监视变量量P2P2、P3P3、P4P4。图图6-66-6监视监视P1P1、P2P2、P3P3、P4P4点的值点的
14、值11课堂优质(2 2)从从图图6-76-7所所示示监监视视窗窗口口可可以以看看到到:P1 P1 = = 0.0 0.0 0.0 0.0 0.00.0、p2 p2 = = 100.0 100.0 0.00.0、p3 p3 = = 100.0 100.0 100.0 100.0 0.00.0、P4 P4 = = nil nil 100.0100.0。说说明明P4P4点点的的X X坐坐标标是是无无定定义义的的,而而X X坐坐标标是是(car (car pl)pl)的的返返回回值值,检检查查(car (car pl)pl),carcar是是正正确确的的,亮亮显显plpl,单单击击添添加加监监视视按按
15、钮钮 ,监监视视窗窗口口内内出出现现PL PL = = nilnil,PLPL本本不不是是该该程程序序的的变变量量,是是p1p1的误写。的误写。(3 3)修修改改源源程程序序代代码码,将将plpl改改写写为为p1p1;重重新新加加载载、运运行行该该程程序;直到该程序可以正常运行,调试结束。序;直到该程序可以正常运行,调试结束。12课堂优质6.3 6.3 在不设置断点的情况下分步调试程序在不设置断点的情况下分步调试程序 分分步步调调试试就就是是将将一一个个完完整整的的程程序序分分为为若若干干步步,逐逐步步调调试试。每每步步可可以以是是最最内内层层的的一一个个表表达达式式,也也可可以以是是一一个个
16、复复杂杂的的表表达达式式,还还可可以以是是多多个个表表达达式式。可可以以通通过过设设置置断断点点将将程程序序分分为为若若干干段段,也也可可以以不不用用断断点点而而是是通通过过步步长长将将程程序分为若干步。序分为若干步。 结合下例程序介绍几种调试程序的方法。结合下例程序介绍几种调试程序的方法。【例例6-16-1】 定定义义绘绘制制矩矩形形的的命命令令,矩矩形形的的一一个个角角点点、宽宽、高高和和旋旋转转角角为为交交互输入的参数。互输入的参数。程序的源代码如下:程序的源代码如下:(defun c:rectr(/ w h alf p1 p2 p3 p4)(defun c:rectr(/ w h al
17、f p1 p2 p3 p4) (setq p1(getpoint (setq p1(getpoint 输入矩形的一个角点:输入矩形的一个角点:) w (getdist p1 w (getdist p1 输入矩形的宽:输入矩形的宽:) h (getdist p1 h (getdist p1 输入矩形的高输入矩形的高: ): ) alf (getangle p1 alf (getangle p1 输入矩形的旋转角输入矩形的旋转角: ): ) ) )Walfhp1p2p3p413课堂优质 (setq p2(polar p1 alf w) (setq p2(polar p1 alf w) (setq
18、p3(polar p2 (+ alf (* 0.5 pi) h) (setq p3(polar p2 (+ alf (* 0.5 pi) h) (setq p4(polar p3 (+ alf pi) w) (setq p4(polar p3 (+ alf pi) w) (command pline p1 p2 p3 p4 c) (command pline p1 p2 p3 p4 c) (princ) (princ) )1. 1. 从第一个表达式开始,逐步调试程序从第一个表达式开始,逐步调试程序(1 1)选选择择菜菜单单F FileileO Open pen FileFile或或单单击击按按
19、钮钮 ,将将 例例6-16-1所所示示源源代代码码录录入入文文本本编编辑辑窗窗口口。选选择择菜菜单单D DebugebugA Add dd WatchWatch或或单单击击按按钮钮 ,监监视视变变量量w w、h h、alfalf、p1p1、p2p2、p3p3、p4p4。选选择择菜菜单单T ToolsoolsLoad Load Text Text in in E Editorditor或或单单击击按按钮钮 ,加载该程序。,加载该程序。(2 2)通过菜单)通过菜单D DebugebugStop OStop On ncece,使之处于打开的状态。,使之处于打开的状态。(3 3)单单击击按按钮钮 ,切
20、切换换到到AutoCADAutoCAD窗窗口口,在在AutoCADAutoCAD的的CommandCommand:提提示示下下,键入键入rect3rect3命令。命令。Walfhp1p2p3p414课堂优质 控控制制自自动动切切换换到到VisualLISPVisualLISP文文本本编编辑辑窗窗口口,监监视视窗窗口口内内的的变变量量值值均均为为nilnil。此此时时光光标标停停在在(defun(defun之之前前,整整个个程程序序被被加加亮亮显显示示。选选取取下下拉拉菜菜单单D Debugebug的的Step Step I Intonto项项、F8F8功功能能键键或或单单击击按按钮钮 ,光光标
21、标停停在在(setq (setq p1p1之之前前,与与之之匹匹配配的的右右括括号号之之间间被被加加亮亮显显示示。单单击击按按钮钮 ,光光标标停停在在(getpoint (getpoint 输输入入矩矩形形的的一一个个角角点点:)之之前,并亮显该表达式。注意,指示按钮内的前,并亮显该表达式。注意,指示按钮内的II在在 ()() 之前。之前。 单单击击按按钮钮 ,程程序序切切换换到到AutoCADAutoCAD窗窗口口,出出现现 输输入入矩矩形形的的一一个个角角点点: 的的提提示示,输输入入(100,80)(100,80),程程序序切切换换到到VisualLISPVisualLISP的的文文本本
22、编编辑辑窗窗口口。光光标标停停在在(getpoint (getpoint 输输入入矩矩形形的的一一个个角角点点:)之之后后,仍仍然然亮亮显显该该表表达达式式。注注意意,指指示示按按钮钮内内的的 I I 在在 () 之后。之后。15课堂优质 单单击击按按钮钮 ,光光标标停停在在(getdist (getdist p1 p1 输输入入矩矩形形的的宽宽:)之之前前,并并亮亮显显该该表表达达式式。注注意意,指指示示按按钮钮内内的的II回回到到 () 之之前前。监监视视窗窗口口内内的的变变量量p1=100.0 p1=100.0 80.0 80.0 0.00.0。重重复复类类似似的的操操作作,在在Auto
23、CADAutoCAD窗窗口口输输入入矩矩形形的的宽宽度度为为200200、高高度度为为150150,旋旋转转角角为为3030。在在操操作作过过程程中中指指示示按按钮钮随随时时显显示示着着光光标标相相对对于于表表达达式式的的位位置置,监监视视窗窗口口显显示示着着这这些些变变量量的的当当前前值值(注注意意,alfalf的的单单位位为为弧弧度度)。也说明单击按钮也说明单击按钮 只执行了一步表达式求值。只执行了一步表达式求值。 当当光光标标停停在在(setq (setq p3(polar p3(polar p2 p2 (+ (+ alf alf (* (* 0.5 0.5 pi) pi) h)h)之之
24、前前时时,单单击击按按钮钮 ,整整个个程程序序被被加加亮亮显显示示,光光标标停停在在整整个个程程序序的的结尾,再单击以上任一按钮,程序运行结束。结尾,再单击以上任一按钮,程序运行结束。 切换到切换到AutoCADAutoCAD窗口,显示着刚才绘制的矩形。窗口,显示着刚才绘制的矩形。16课堂优质 假假定定程程序序的的第第5 5行行误误写写为为 (getangl (getangl p1 p1 输输入入矩矩形形的的旋旋转转角角: : ),仍仍旧旧用用上上述述的的方方法法调调试试该该程程序序,当当执执行行到到 输输入入矩矩形形的的旋旋转转角角: : 时时,将将出出现现提提示示 ; ; error: e
25、rror: no no function function definition: definition: GETANGLGETANGL(没没有有GETANGLGETANGL这这个个函函数数定定义义) 。点点取取查查找找按按钮钮 ,在在随随后后弹弹出出的的 FIND FIND 对对话话框框的的FiFin ndWhatdWhat编编辑辑框框输输入入查查找找内内容容为为 GETANGLGETANGL ,单击,单击 F Findind按钮,找到按钮,找到getanglgetangl并改正为并改正为getanglegetangle。 重新调试程序,直至程序正常运行。重新调试程序,直至程序正常运行。17
26、课堂优质2. 2. 自动分步调试程序自动分步调试程序(1 1)自动分步调试程序的步骤)自动分步调试程序的步骤 将将例例6-16-1源源代代码码的的文文件件装装入入文文本本编编辑辑窗窗口口。监监视视变变量量w w、h h、alfalf、p1p1、p2p2、p3p3、p4p4。加载该程序。选择菜单。加载该程序。选择菜单D DebugebugAnimatAnimate e。 在在AutoCADAutoCAD的的CommandCommand: 提提示示下下,键键入入rect3rect3命命令令。Visua Visua lLISPlLISP自自动动切切换换到到文文本本编编辑辑窗窗口口。随随着着光光标标的
27、的位位置置、指指示示按按钮钮 内内II和和 () 的的变变化化,自自动动地地执执行行每每一一个个表表达达式式的的求求值值,监监视视窗窗口口内内的的变变量量值值也也相相应应地地改改变变。如如果果遇遇到到了了错错误误的的函函数数调调用用,程程序序停停止止运运行行,并并报报告告 ; ; error: error: no no function function definition: definition: 信信息息。找找到到并并改改正正错错误误的的函函数数。继继续续调调试试程程序序,直直至至程程序序正正常运行。常运行。18课堂优质(2 2)设置每步延迟的时间)设置每步延迟的时间 选选择择菜菜单单T
28、 ToolsoolsEnvironmant Environmant O OptionsptionsG General eneral O Options ptions 弹弹出出图图6-76-7所所示示General General O Optionsptions对对话话框框。单单击击该该对对话话框框的的DiagnosticDiagnostic(诊诊断断)卡卡,在在A Animation nimation delaydelay编编辑辑框框输输入入每每步步延延迟迟的的时时间间(以以毫毫秒秒为为单单位位),单击确定按钮即可。单击确定按钮即可。19课堂优质图图6-76-7诊断选项卡诊断选项卡 20课堂优
29、质6.4 6.4 断点循环断点循环 表表达达式式是是AutoLISPAutoLISP程程序序的的基基本本单单元元,LISPLISP的的工工作作实实际际上上是是不不断断地地对对表表达达式式进进行行读读入入、求求值值和和输输出出操操作作,在在LISPLISP术术语语中中,被被称称为读算写循环。为读算写循环。 如如果果不不用用调调试试工工具具而而是是正正常常地地运运行行AutoLISPAutoLISP程程序序时时,程程序序将将处处于于顶顶层层的的读读算算写写循循环环。如如果果在在VisualLISPVisualLISP控控制制台台窗窗口口内内对对表表达达式求值时,也是处于顶层的读算写循环。式求值时,
30、也是处于顶层的读算写循环。 如如果果程程序序在在运运行行时时被被中中断断或或挂挂起起,VisualLISPVisualLISP将将控控制制转转交交给给控控制制台台,就就进进入入了了断断点点循循环环(Break Break looploop)。断断点点循循环环是是一一个个单单独独的的读读算算写写循循环环,它它嵌嵌套套在在原原有有的的读读算算写写循循环环内内。断断点点循循环环也也可可以以被被中中断断,这这时时将将开开始始一一个个嵌嵌套套于于该该断断点点循循环环内内的的读读算算写写循循环环。断点循环相对于顶层循环嵌套的层数称为该中断的层数。断点循环相对于顶层循环嵌套的层数称为该中断的层数。21课堂优
31、质 进进入入断断点点循循环环时时,VisualLISPVisualLISP将将在在控控制制台台提提示示_$_$前前加加一一个个数数字字来来指指出出所所处处循循环环的的层层数数。例例如如,当当首首次次进进入入程程序序的的断断点点循循环环时时,提提示示为为_1_$_1_$。如如果果处处于于断断点点循循环环状状态态,就不能将控制切,就不能将控制切换换到到AutoCADAutoCAD窗口。窗口。 从从断断点点循循环环退退出出,将将恢恢复复上上一一层层循循环环。如如果果在在该该断断点点循循环环中中修修改改了了某某变变量量的的值值,程程序序继继续续运运行行时时将将使使用用变变量修改后的值。量修改后的值。断
32、点循环分为断点循环分为可继续断点循环可继续断点循环和和不可继续断点循环不可继续断点循环。22课堂优质1. 1. 可继续的断点循环可继续的断点循环 可可继继续续的的断断点点循循环环是是指指可可以以在在程程序序中中断断处处,继继续续向向下下执执行行剩剩余的表达式。用以下方法进入可继续断点循环:余的表达式。用以下方法进入可继续断点循环:(1 1)打开)打开Stop OnceStop Once模式,碰到带调试信息的表达式时。模式,碰到带调试信息的表达式时。(2 2)遇到带)遇到带Debug on EntryDebug on Entry(进入时调试)标志的函数时。(进入时调试)标志的函数时。(3 3)遇
33、到程序中设置的断点时。)遇到程序中设置的断点时。(4 4)单击暂停按钮进入断点循环时。)单击暂停按钮进入断点循环时。(5 5)在在前前一一个个断断点点循循环环状状态态下下,执执行行Step Step IntoInto、Step Step OverOver或或Step OutStep Out时。时。 如如果果程程序序在在某某函函数数中中被被中中断断,可可以以访访问问被被该该函函数数声声明明的的局局部部变量,甚至可以在控制台提示下用变量,甚至可以在控制台提示下用setqsetq函数修改它们的值。函数修改它们的值。23课堂优质2. 2. 不可继续的断点循环不可继续的断点循环 当当程程序序出出现现错错
34、误误导导致致崩崩溃溃时时,如如果果设设置置了了Break Break On On ErrorError选选项项,将将激激活活一一个个不不可可继继续续的的断断点点循循环环。此此时时可可以以访访问问出出错错环环境境中中的的所所有有变变量量,但但不不能能继继续续执执行行程程序序或或执执行行任任何何单单步步调调试试程程序序的命令。的命令。 如如果果工工具具栏栏上上的的单单步步调调试试的的按按钮钮 、 、 或或继继续续运运行行的按钮的按钮 处于可用状态,说明此时进入了可继续的断点循环。处于可用状态,说明此时进入了可继续的断点循环。 处处于于不不可可继继续续的的断断点点循循环环时时,选选取取D Debug
35、ebug菜菜单单的的R Reset eset to to Top Top LevelLevel项项或或单单击击按按钮钮 ,退退出出断断点点循循环环并并跳跳转转至至控控制制台台顶顶层层循循环环;选选取取D Debugebug菜菜单单的的Q Quit uit CurrentCurrent项项或或单单击击按按钮钮 ,退退出断点循环并返回到上一层循环。出断点循环并返回到上一层循环。24课堂优质6.5 6.5 利用断点调试程序利用断点调试程序 运运行行的的程程序序遇遇到到断断点点时时,将将产产生生一一个个中中断断。当当程程序序中中断断时时, ,可可查查看看、分分析析变变量量的的值值,修修改改程程序序的的
36、源源代代码码。利利用用断断点点可可提提高高调调试试程序的效率。程序的效率。1. 1. 有关断点的操作有关断点的操作(1 1)在程序中设置)在程序中设置/ /删除断点删除断点 只只能能在在VisualLISPVisualLISP的的文文本本编编辑辑器器窗窗口口内内设设置置断断点点。断断点点应应位位于表达式的左、右括号上。设置断点的步骤如下:于表达式的左、右括号上。设置断点的步骤如下: 将将光光标标移移到到需需要要程程序序暂暂停停的的位位置置。例例如如,需需要要在在某某表表达达式式 之前暂停,则应将光标移至与表达式的左括号相邻的位置。之前暂停,则应将光标移至与表达式的左括号相邻的位置。25课堂优质
37、 选选择择菜菜单单D DebugebugT Toggle oggle BreakpointBreakpoint、单单击击按按钮钮 或或按按F9F9键键。如如果果该该位位置置没没有有断断点点,就就加加入入一一个个断断点点,否否则则,删删除除该该断断点点。单单击击鼠鼠标标右右键键在在快快捷捷菜菜单单中中选选择择Toggle Toggle BreakpointBreakpoint项项也也可可以以设设置置或或删删除除断断点点。如如果果光光标标不不与与括括号号相相邻邻,Visual Visual LISPLISP暂暂时时将将光光标标移移到到后后面面最最近近的的右右括括号号处处,并并通通过过对对话话框框询
38、询问问用用户户是否在该处设置断点。是否在该处设置断点。 选择菜单选择菜单D DebugClear All ebugClear All B Breakpointsreakpoints项,删除已设置项,删除已设置的所有断点。的所有断点。26课堂优质(2 2)改变断点的颜色)改变断点的颜色 VisualLISPVisualLISP用用高高亮亮矩矩形形显显示示每每一一个个断断点点,默默认认情情况况下下,活活动动的的断断点点是是红红色色的的。选选择择菜菜单单T ToolsoolsW Window indow AttributesAttributesC Configure onfigure Current
39、 Current ,通通过过随随后后弹弹出出的的Window Window AttributesAttributes对对话话框框内内的的WINDOW-TEXTWINDOW-TEXT下下拉拉列列表表的的:BPT-ACTIVE:BPT-ACTIVE项项可改变断点的颜色。可改变断点的颜色。(3 3)临时禁用断点)临时禁用断点 断点可以被临时禁用和恢复使用。禁用断点的步骤如下:断点可以被临时禁用和恢复使用。禁用断点的步骤如下: 将光标置于断点处并单击鼠标右键。将光标置于断点处并单击鼠标右键。 从从显显示示的的快快捷捷菜菜单单上上选选择择Breakpoints Breakpoints servicese
40、rvice项项,将将弹弹出出图图6-86-8所所示示断断点服务对话框。点服务对话框。图图6-86-8断点服务对话框断点服务对话框 27课堂优质 在在断断点点服服务务对对话话框框中中单单击击D Disableisable按按钮钮可可临临时时禁禁用用该该断断点点;若若该该断断点点已已被被禁禁用用,图图6-96-9所所示示断断点点服服务务对对话话框框将将出出现现E Enablenable按按钮钮,单单击击该该按按钮钮,所所选选断断点点将将改变为可用状态。改变为可用状态。 默默认认情情况况下下,被被禁禁用用的的断断点点显显示示为为蓝蓝色色。用用设设置置断断点点颜颜色色的的方方法法也也可可以以改改变被禁
41、用断点的颜色。变被禁用断点的颜色。(4 4)浏览和编辑程序中的断点)浏览和编辑程序中的断点 选择菜单选择菜单V ViewBreaiewBreak kpoints Windowpoints Window将看到图将看到图6-96-9所示的断点对话框。所示的断点对话框。图图6-96-9断点对话框断点对话框 28课堂优质 该该断断点点窗窗口口列列出出了了所所有有编编辑辑器器窗窗口口的的断断点点。其其中中有有程程序序6-1.lsp6-1.lsp的的3 3个个断断点点、 6-2.lsp6-2.lsp的的2 2个个断断点点。每每项项包包含含断断点点的的源源文文件件名名以以及及断断点点在在源源文文件件中中的的
42、位位置置,位位置置是是以以0 0开开始始的的西西文文字字符符数数量量,前前面面的的+号号表表示示该该断断点点是是活活动动的的,- - 号表示该断点是被禁用的。号表示该断点是被禁用的。 单单击击该该对对话话框框的的Delete Delete allall按按钮钮可可以以删删除除所所有有的的断断点点;亮亮显显一一项项,单单击击S Showhow按按钮钮可可显显示示该该断断点点所所在在的的源源文文件件及及其其在在源源文文件件中中的的位位置置;单单击击DeleteDelete按按钮钮可可删删除除该该断断点点;单单击击E Editdit按按钮钮可可打打开开图图6-96-9所所示示的的断断点点服服务务对对
43、话话框框,利利用用该对话框可以改变断点可用或禁用的状态。该对话框可以改变断点可用或禁用的状态。(5 5) 断点的生命周期断点的生命周期 可可以以在在加加载载程程序序之之前前或或之之后后设设置置断断点点。如如果果在在加加载载程程序序之之后后设设置置断断点点,该断点只有在重新加载程序之后才有效。该断点只有在重新加载程序之后才有效。29课堂优质2. 2. 在断点处继续运行程序在断点处继续运行程序 运运行行的的程程序序遇遇到到断断点点时时,将将产产生生一一个个中中断断,即即断断点点循循环环。单单击击分分布布调调试试按按钮钮 、 和和 可可继继续续运运行行程程序序。如如果果在在复复杂杂的的表表达达式式之
44、之内内还还有有一一些些断断点点,单单击击按按钮钮 和和 ,首首先先在在断断点点处处暂暂停停。此此外外还还有有以以下下控控制制程程序序继继续续运运行行的的工工具具栏栏按按钮钮、快快捷捷键键或或D Debugebug菜单的菜单项。菜单的菜单项。 ContinueContinue或或CtrlCtrl+ +F8F8:继继续续执执行行程程序序直直至至遇遇到到下下一一个个断断点点(如果有)或程序结束。(如果有)或程序结束。 Quit Quit CurrentCurrent或或CtrlCtrl+ +Q Q:结结束束当当前前程程序序,返返回回到到控控制制台台的的上一层断点循环。上一层断点循环。 Reset R
45、eset to to Top Top LevelLevel或或CtrlCtrl+ +R R:结结束束当当前前程程序序,结结束束所所有有的断点循环。的断点循环。30课堂优质3. 3. 利用断点调试程序实例利用断点调试程序实例【例例6-26-2】 定定义义绘绘制制图图6-106-10所所示示图图形形的的命命令令,p0p0、d d、b b、t1t1、alfalf是是交交互互输输入的参数。入的参数。图图6-106-10轴的键槽部位截面轴的键槽部位截面 程序源代码如下:程序源代码如下:(defun c:tuxing (/ p0 alf d b t1 r l b1 sit p1 p2 p3 p4 p5)(
46、defun c:tuxing (/ p0 alf d b t1 r l b1 sit p1 p2 p3 p4 p5)(setq p0 (getpoint nEnter P0: )(setq p0 (getpoint nEnter P0: )(setq d (getdist p0 nEnter d: )(setq d (getdist p0 nEnter d: )31课堂优质 (setq b (getdist p0 nEnter b: ) (setq b (getdist p0 nEnter b: ) (setq b (getdist p0 nEnter b: ) (setq b (getdis
47、t p0 nEnter b: ) (setq tl (getdist p0 nEnter t1: ) (setq tl (getdist p0 nEnter t1: ) (setq tl (getdist p0 nEnter t1: ) (setq tl (getdist p0 nEnter t1: ) ;tl;tl;tl;tl应改为应改为应改为应改为t1t1t1t1 (setq alf (getangle p0 nEnter alf: ) (setq alf (getangle p0 nEnter alf: ) (setq alf (getangle p0 nEnter alf: ) (se
48、tq alf (getangle p0 nEnter alf: ) ;断点;断点;断点;断点1 11 1的位置的位置的位置的位置 (setq r (* 0.5 d) bl (* 0.5 b)(setq r (* 0.5 d) bl (* 0.5 b)(setq r (* 0.5 d) bl (* 0.5 b)(setq r (* 0.5 d) bl (* 0.5 b) (setq l (sqrt (- (* r r) (* b1 b1) (setq l (sqrt (- (* r r) (* b1 b1) (setq l (sqrt (- (* r r) (* b1 b1) (setq l (
49、sqrt (- (* r r) (* b1 b1) (setq sit (tan b1 l) (setq sit (tan b1 l) (setq sit (tan b1 l) (setq sit (tan b1 l) ;tan;tan;tan;tan应改为应改为应改为应改为atanatanatanatan (setq p1 (polar p0 (+ alf sit) r) (setq p1 (polar p0 (+ alf sit) r) (setq p1 (polar p0 (+ alf sit) r) (setq p1 (polar p0 (+ alf sit) r) (setq p2
50、(polar p0 (+ pi alf) r) (setq p2 (polar p0 (+ pi alf) r) (setq p2 (polar p0 (+ pi alf) r) (setq p2 (polar p0 (+ pi alf) r) (setq p3 (polar p0 (- alf sit) r) (setq p3 (polar p0 (- alf sit) r) (setq p3 (polar p0 (- alf sit) r) (setq p3 (polar p0 (- alf sit) r) (setq p4 (polar p3 (+ pi alf) (- (+ r l)
51、t1) (setq p4 (polar p3 (+ pi alf) (- (+ r l) t1) (setq p4 (polar p3 (+ pi alf) (- (+ r l) t1) (setq p4 (polar p3 (+ pi alf) (- (+ r l) t1) (setq p5 (polar p1 (+ alf pi) (- (+ r l) t1) (setq p5 (polar p1 (+ alf pi) (- (+ r l) t1) (setq p5 (polar p1 (+ alf pi) (- (+ r l) t1) (setq p5 (polar p1 (+ alf
52、pi) (- (+ r l) t1) (command pline p1 a s p2 p3 l p4 p5 c) (command pline p1 a s p2 p3 l p4 p5 c) (command pline p1 a s p2 p3 l p4 p5 c) (command pline p1 a s p2 p3 l p4 p5 c) ) )32课堂优质 选选择择菜菜单单F FileileO Open pen FileFile将将例例6-26-2所所示示源源代代码码的的文文件件装装入入文文本本编编辑辑窗窗口口。选选择择菜菜单单D DebugebugA Add dd WatchWat
53、ch或或单单击击按按钮钮 ,监监视视变变量量p0p0、d d、b b、t1t1、alfalf、r r、l l、b1b1、sitsit、p1p1、p2p2、p3p3、p4p4、p5p5。 加加载载该该程程序序,单单击击按按钮钮 ,在在AutoCADAutoCAD的的Command:Command:提提示示下下键键入入TUXINGTUXING命命令令,程程序序停停止止运运行行,出出现现提提示示;error: ;error: bad bad argument argument type: type: numberp: numberp: nilnil(错错误误的的参参数数类类型型,出出现现了了无无定定
54、义义的的参参数数) 。 将光标移至程序的第将光标移至程序的第6 6行末尾,选择菜单行末尾,选择菜单D DebugebugT Toggle oggle BreakpointBreakpoint、按功能键、按功能键F9F9或单击按钮或单击按钮 ,在该处设置一个断点。,在该处设置一个断点。33课堂优质 单击按钮单击按钮 ,加载当前文本编辑窗口内的源程序。单击,加载当前文本编辑窗口内的源程序。单击按钮按钮 ,在,在Command:Command:提示下键入提示下键入TUXINGTUXING命令,依次输入命令,依次输入p0p0、d d、b b、t1 t1、alfalf的值之后,回到文本编辑窗口。光标停留
55、在断点的值之后,回到文本编辑窗口。光标停留在断点1 1的位置,说明已执行了的位置,说明已执行了5 5个个getget表达式。表达式。 浏浏览览监监视视窗窗口口,p0p0、d d、b b、alfalf已已有有具具体体的的数数值值,而而T1=nilT1=nil,说说明明表表达达式式(setq setq tl tl (getdist (getdist p0 p0 nEnter nEnter t1: t1: ))有有错错误误,仔仔细细检检查查,发发现现误误将将t1t1写写为为tltl。改改正正之之后后,单单击击按按钮钮 ,单单击击按按钮钮 ,在在Command:Command:提提示示下下键键入入TU
56、XINGTUXING命命令令,依依次次输输入入p0p0等等的的数数据据,当当程程序序停停留留在在断断点点1 1的的位位置置时时,浏浏览览监监视视窗口窗口t1t1已有定义了。已有定义了。34课堂优质 单单击击继继续续按按钮钮 ,程程序序停停止止运运行行,出出现现提提示示; ; error: error: no no function function definition: definition: TANTAN(错错误误,没没有有定定义义函函数数:TANTAN) ,正正确确的的函函数数应应该该是是兰兰色色的的,找找到到黑黑色色的的函函数数名名tantan,改改正正为为atanatan。 将光标移
57、至断点将光标移至断点1 1处单击按钮处单击按钮 ,删除断点,删除断点1 1。单击按钮。单击按钮 ,在,在Command:Command:提示下键入提示下键入TUXINGTUXING命令,依次命令,依次输入输入p0p0等的数据,程序正常结束,并得到等的数据,程序正常结束,并得到图图6-106-10所示图形。所示图形。图图6-106-1035课堂优质 在在此此例例中中,在在断断点点1 1暂暂停停时时,调调试试按按钮钮从从 到到 都都处处于于可可用状态,因为此时处于可继续的断点循环。用状态,因为此时处于可继续的断点循环。 如如果果运运行行该该程程序序前前,选选择择菜菜单单D DebugebugBre
58、aBreak k On On ErrorError,执执行行到到tantan函函数数时时,因因出出现现了了无无定定义义的的函函数数而而程程序序崩崩溃溃,但但在在该该处处产生了一个不可继续的断点循环。此时只有调试按钮产生了一个不可继续的断点循环。此时只有调试按钮 和和是是可可用用的的。用用户户只只能能选选择择退退到到上上一一层层断断点点循循环环还还是是退退到到顶顶层层断断点循环。点循环。 如如果果在在CommandCommand:提提示示下下,键键入入TUXINGTUXING命命令令,在在要要求求用用户户输输入入数数据据时时,按按下下EscEsc键键,程程序序停停止止运运行行,此此时时也也产产生
59、生了了一一个个不不可可继续的断点循环。继续的断点循环。36课堂优质6.6 6.6 跟踪程序运行跟踪程序运行 跟踪程序运行的工具有命令跟踪、出错跟踪和跟踪堆栈。跟踪程序运行的工具有命令跟踪、出错跟踪和跟踪堆栈。1. 1. 命令跟踪命令跟踪 如如果果打打开开命命令令跟跟踪踪模模式式,VisualLISPVisualLISP将将在在窗窗口口跟跟踪踪有有关关AutoCADAutoCAD命命令令的的执执行情况,以便监控程序是否在执行行情况,以便监控程序是否在执行AutoCADAutoCAD命令时出现了问题。命令时出现了问题。 例例如如,选选择择菜菜单单D DebugebugTrace Trace CoC
60、om mmandmand,在在CommandCommand:提提示示下下,键键入入TUXINGTUXING命命令令(假假定定程程序序能能够够正正常常运运行行),将将在在图图6-116-11所所示示 TraceTrace 窗窗口口显显示示有有关关AutoCADAutoCAD命令的执行情况的信息。命令的执行情况的信息。图图6-116-11显示有关显示有关AutoCADAutoCAD命令的执行情况的跟踪窗口命令的执行情况的跟踪窗口 37课堂优质2. 2. 出错跟踪出错跟踪 出出错错跟跟踪踪是是用用Error Error TraceTrace窗窗口口录录跟跟踪踪程程序序运运行行的的结结果果。在在跟跟踪
61、踪窗窗口口按按鼠标右键,将弹出跟踪窗口的快捷菜单,见图鼠标右键,将弹出跟踪窗口的快捷菜单,见图6-136-13。下面以例下面以例6-36-3为例,介绍利用为例,介绍利用Error TraceError Trace窗口调试程序的方法。窗口调试程序的方法。【例例6-36-3】定义求解一元二次方程的函数定义求解一元二次方程的函数一元二次方程的表达式为:一元二次方程的表达式为: 如如果果 a=0a=0,它它不不是是一一个个二二次次方方程程;如如果果,方方程程有有实实数数解解,否否则则无无解解。方方程程的求根公式为:的求根公式为:程序内容如下:程序内容如下: (defun roots(a b c / t
62、1 t2 x1 x2) (defun roots(a b c / t1 t2 x1 x2) ;t1 t1、t2 t2、x1x1、x2x2是局部变量是局部变量 (if (/= a 0)(if (/= a 0) (progn (progn38课堂优质 (setq t1 (- (* b b) (* 4 a c) (setq t1 (- (* b b) (* 4 a c) ; (if (= t1 0.0)(if (= t1 0.0) (progn (progn (setq t2 (sqrt t1) (setq t2 (sqrt t1) ; (setq x1 (/ (+ -b t2) (* 2 a) (
63、setq x1 (/ (+ -b t2) (* 2 a) ;此处有错;此处有错 (setq x2 (/ (- -b t2) (* 2 a) (setq x2 (/ (- -b t2) (* 2 a) ;此处有错;此处有错 (print (list x1 x2)(print (list x1 x2) ) ) (print n (print n根是复数根是复数.).) ) ) ) ) (print n (print n不是一个二次方程不是一个二次方程.).) ) ) (princ) (princ);静默退出;静默退出)39课堂优质 选选择择菜菜单单F FileileO Open pen FileF
64、ile将将例例6-36-3所所示示源源代代码码的的文文件件装装入入文文本本编编辑辑窗窗口口。单单击击工工具具栏栏按按钮钮 。在在Visual Visual LISP LISP Console(Console(控控制制台台) )窗窗口口的的_$_$提提示示下下键键入入(ROOTS 1 (ROOTS 1 5 6)5 6)。显示了出错原因是。显示了出错原因是 错误的参数类型错误的参数类型 ,见图,见图6-126-12。图图6-126-12显示出运行错误的控制台窗口显示出运行错误的控制台窗口 选选择择菜菜单单V ViewiewE Er rror ror TraceTrace或或CtrlCtrl+ +S
65、hiftShift+ +R R。将将出出现现图图6-136-13所所示示的的出出错错跟踪窗口。跟踪窗口。40课堂优质图图6-136-13出错跟踪窗口及其快捷菜单出错跟踪窗口及其快捷菜单 出出错错跟跟踪踪窗窗口口的的第第1 1行行为为 :ERROR :ERROR BREAKBREAK ,表表示示因因出出错错产产生生了了一一个个中中断断。第第2 2行行为为 2+ 2+ nil nil 1.01.0 ,记记录录了了中中断断的的原原因因是是1.01.0与与一一个个无无定定义义的的参参数数求求和和。亮亮显显第第2 2行行,按按鼠鼠标标右右键键,弹弹出出图图6-146-14所所示示的的快快捷捷菜菜单单。选
66、选取取快快捷捷菜菜单单的的 C Ca all ll point point sourcesource ,与与该该错错相相关关的的表表达达式式(+ (+ -b -b t2)t2)被被加加亮亮显显示示。单单击击添添加加监监视视按按钮钮,监监视视-b-b的的值值,在在监监视视窗窗口口看看到到-b-b的的值值为为nilnil。原原因因是是-b-b不不是是b b的相反数,而是另一个尚未定义的变量。应改正为的相反数,而是另一个尚未定义的变量。应改正为(- t2 b)(- t2 b)。同样的过程可发现下一行的同样的过程可发现下一行的(- -b t2)(- -b t2)有相同性质的错误,应改为有相同性质的错误
67、,应改为(- 0 b t2)(- 0 b t2)。 运行改正后的程序,结果为运行改正后的程序,结果为(3.0 2.0)(3.0 2.0)。 41课堂优质3. 3. 跟踪堆栈跟踪堆栈 跟跟踪踪堆堆栈栈保保存存着着调调用用函函数数的的历历史史记记录录。利利用用堆堆栈栈后后进进先先出出的的特特点点,记记录录一一系系列列的的嵌嵌套套表表达达式式的的出出口口。当当程程序序运运行行中中断断,如如遇遇到到断断点点,通通过过跟跟踪踪堆堆栈栈可可以以了了解解程程序序的的运运行行状状态态。如如果果程程序序运运行行出出现现错错误误,导导致致程程序序崩崩溃溃,通通过过跟跟踪踪堆堆栈栈可可以以分分析析程程序序崩崩溃的原
68、因。溃的原因。 首首先先通通过过以以下下实实例例了了解解跟跟踪踪堆堆栈栈。将将例例6-46-4所所示示程程序序代代码码复复制制到到VisualLISPVisualLISP文文本本编编辑辑器器窗窗口口,在在程程序序的的第第6 6行行的的右右括括号号处处设设置断点。置断点。【例例6-46-4】了解跟踪堆栈的结构了解跟踪堆栈的结构 程程序序说说明明:stack-tracingstack-tracing是是一一个个递递归归调调用用的的,indexvalindexval是是序序号号的的初初始始值值,maxvalmaxval是是序序号号的的最最大大值值。当当indexvalindexval小小于于maxv
69、almaxval时时,打打印印indexvalindexval的的值值。st5st5是是调调用用stack-tracingstack-tracing的的主主函数。函数。42课堂优质(defun stack-tracing (indexval maxval)(defun stack-tracing (indexval maxval) (princ n (princ n递归函数实参递归函数实参 = )= ) (princ indexval) (princ indexval) (if ( indexval maxval) (if ( indexval maxval) (stack-tracing (
70、1+ indexval) maxval) (stack-tracing (1+ indexval) maxval) (princ n (princ n递归结束。递归结束。) ;) ;在这里设置一个断点在这里设置一个断点) ) 单单击击按按钮钮 ,在在控控制制台台窗窗口口键键入入(stack-tracing (stack-tracing 1 1 5)5)运运行行该该程程序序。当当程程序序运运行行到到断断点点暂暂停停时时,单单击击按按钮钮 ,将将弹弹出出图图6-146-14所所示示跟跟踪踪堆堆栈栈窗窗口。通过该跟踪堆栈窗口了解该程序的运行状态。口。通过该跟踪堆栈窗口了解该程序的运行状态。43课堂优
71、质图图6-146-14跟踪堆栈窗口跟踪堆栈窗口 (1 1)跟踪堆栈窗口的结构)跟踪堆栈窗口的结构 按按钮钮 用用于于刷刷新新跟跟踪踪堆堆栈栈窗窗口口,按按钮钮 用用于于将将跟跟踪踪堆堆栈栈窗窗口口中中的的内内容复制到跟踪窗口或日志文件。容复制到跟踪窗口或日志文件。 每每个个堆堆栈栈元元素素占占一一行行。每每一一行行的的前前面面都都有有一一个个用用或或括括起起的的数数字字,数字表示该元素在跟踪堆栈的序号。数字表示该元素在跟踪堆栈的序号。44课堂优质(2 2)堆栈元素的种类)堆栈元素的种类 堆堆栈栈元元素素可可分分为为:函函数数调调用用框框架架、跟跟踪踪堆堆栈栈最最顶顶端端和和最最底底端端关关键键
72、字字的的框框架架、顶端结构、顶端结构、LambdaLambda结构和特殊结构五种类型。结构和特殊结构五种类型。 函数调用框架。表示单个函数调用。其格式如下:函数调用框架。表示单个函数调用。其格式如下: 序号序号 函数名函数名 参数参数 . 图图6-146-14所所示示跟跟踪踪堆堆栈栈窗窗口口的的2 26 6行行显显示示了了调调用用stack-tracingstack-tracing函函数数时时的的函函数数调用框架。例如:调用框架。例如:22(STACK-TRACING 5 5STACK-TRACING 5 5) 22 表表示示它它是是堆堆栈栈元元素素列列表表的的第第二二个个元元素素, STAC
73、K-TRACINGSTACK-TRACING 是是函函数数名名,其后的两个数字是传给该函数的实际参数值。其后的两个数字是传给该函数的实际参数值。 跟踪堆栈最顶端和最底端的关键字框架。其格式如下:跟踪堆栈最顶端和最底端的关键字框架。其格式如下: : : 关键字框架类型关键字框架类型 与程序状态相关的其他信息与程序状态相关的其他信息关关键键字字框框架架代代表表VisualLISPVisualLISP环环境境中中的的一一种种特特定定的的操操作作,关关键键字字指指明明操操作作的的类类型。关键字框架只可能出现在堆栈的顶端或底端。型。关键字框架只可能出现在堆栈的顶端或底端。45课堂优质框架类型框架类型 发
74、生的操作发生的操作:ACAD-REQUEST:ACAD-REQUEST 由由 AutoCAD AutoCAD 命令行调用的函数。命令行调用的函数。:DCL-ACTION:DCL-ACTION 由由AutoCADAutoCAD要求执行对话框控件的动作。关键字要求执行对话框控件的动作。关键字 :DCL-ACTION:DCL-ACTION后的后的 两个字符串分别是控件名和控件值。如果出现的是一个数,则是对两个字符串分别是控件名和控件值。如果出现的是一个数,则是对 话框回调函数的值。话框回调函数的值。:INSPECT-EVAL:INSPECT-EVAL 执行了检验功能。执行了检验功能。:INSPECT
75、-VERBOSE :INSPECT-VERBOSE 进入了图形检验器的入口函数。进入了图形检验器的入口函数。:TOP-COMMAND:TOP-COMMAND VisualLISP VisualLISP交互环境的动作。例如,加载文件或选取文本时直接运交互环境的动作。例如,加载文件或选取文本时直接运 行一个函数。行一个函数。:USER-INPUT:USER-INPUT 框架内的字符串是在控制台输入的。框架内的字符串是在控制台输入的。:WATCH-EVAL:WATCH-EVAL 执行了监视功能。执行了监视功能。表表6-16-1所示的关键字框架只能出现在堆栈的底端。所示的关键字框架只能出现在堆栈的底端
76、。 表表6-1 6-1 底端关键字框架底端关键字框架 图图6-146-14所所示示跟跟踪踪堆堆栈栈窗窗口口的的第第8 8行行显显示示了了本本例例堆堆栈栈底底端端关关键键字字框框架架的的信信息息。内容如下:内容如下::USER-INPUT (stack-tracing 1 5):USER-INPUT (stack-tracing 1 5)表示是用户在控制台输入了表示是用户在控制台输入了(stack-tracing 1 5)(stack-tracing 1 5)。 表表6-26-2所示的关键字框架只能出现在堆栈顶端。所示的关键字框架只能出现在堆栈顶端。 46课堂优质框架类型框架类型发生的操作发生的
77、操作:ACMD-CALLBACK:ACMD-CALLBACK调用了已注册的调用了已注册的AutoCADAutoCAD命令。命令。:AFTER-EXP:AFTER-EXP程序正处于调试中断模式,且刚用程序正处于调试中断模式,且刚用Step IntoStep Into或或Step OverStep Over选项步出某表达式。选项步出某表达式。:ARQ-SUBR-CALLBACK:ARQ-SUBR-CALLBACK表示从表示从AutoCADAutoCAD窗口调用标准的窗口调用标准的VisualLISPVisualLISP定义的函数。定义的函数。:AXVLO-IO-CALLBACK :AXVLO-IO
78、-CALLBACK :DWF:DWF或或:DWG:DWG在在DWGDWG或或DWFDWF文件保存或恢复文件保存或恢复VLAVLA对象。对象。:BEFORE-EXP:BEFORE-EXP进入函数时用调试器中断了程序。当用户用进入函数时用调试器中断了程序。当用户用Step Into Step Into 或或Step OverStep Over命令步入某表达式命令步入某表达式时会出现该消息。时会出现该消息。:BREAK-POINT:BREAK-POINT用户指定的断点。用户指定的断点。:ENTRY-NAMESPACE:ENTRY-NAMESPACE一个独立一个独立VLXVLX命名空间上下文中的调用。
79、命名空间上下文中的调用。:ERROR-BREAK:ERROR-BREAK一般的运行时错误。单击鼠标右键,选择菜单中的一般的运行时错误。单击鼠标右键,选择菜单中的Show MessageShow Message菜单项,可以查看更菜单项,可以查看更详细的出错信息。详细的出错信息。:FUNCTION-ENTRY:FUNCTION-ENTRY在进入函数时调试器中断了程序。该消息后的下一个堆栈元素包含了引发中断的函数在进入函数时调试器中断了程序。该消息后的下一个堆栈元素包含了引发中断的函数的调用框架。的调用框架。:KBD-BREAK:KBD-BREAK按下了按下了PausePause键,程序被挂起。键,
80、程序被挂起。:PROTECT-ASSIGN:PROTECT-ASSIGN为受保护的符号赋值。单击鼠标右键,选择菜单中的为受保护的符号赋值。单击鼠标右键,选择菜单中的Show MessageShow Message菜单项,查看变量菜单项,查看变量名、变量当前值和试图赋给该变量的新值。也可以选择名、变量当前值和试图赋给该变量的新值。也可以选择InspectInspect项,查看包含该符号的项,查看包含该符号的表,以及跟随在表,以及跟随在 :PROTECT-ASSIGN :PROTECT-ASSIGN 之后的新值。之后的新值。:REACTOR-CALLBACK:REACTOR-CALLBACK调用了
81、反应器。调用了反应器。:READ-ERROR:READ-ERROR在读操作时发生的错误。单击鼠标右键,选择菜单中的在读操作时发生的错误。单击鼠标右键,选择菜单中的Show MessageShow Message菜单项,可获得菜单项,可获得更详细的出错信息。更详细的出错信息。:SYNTAX-ERROR:SYNTAX-ERROR遇到了遇到了AutoLISPAutoLISP语法错误。语法错误。表表6-26-2顶端关键字框架表顶端关键字框架表6-26-2顶端关键字框架顶端关键字框架 47课堂优质图图6-146-14所所示示跟跟踪踪堆堆栈栈窗窗口口的的第第1 1行行显显示示了了本本例例堆堆栈栈顶顶端端关
82、关键键字字框框架架的的信信息息。内容如下:内容如下:: BREAK-POINT: BREAK-POINT表示程序运行的最后一个操作是遇到用户设置的断点。表示程序运行的最后一个操作是遇到用户设置的断点。 顶顶端端结结构构。它它说说明明相相应应动动作作是是由由顶顶层层控控制制台台窗窗口口中中输输入入的的表表达达式式引引起起,或或在在VisualLISPVisualLISP文文本本编编辑辑器器窗窗口口中中加加载载文文件件或或所所选选文文本本时时触触发发的的函函数数调调用用引引起的。起的。 Lambda Lambda 结结构构。当当程程序序调调用用lambdalambda函函数数时时,VisualLI
83、SP VisualLISP 会会在在堆堆栈栈中中放放入入该结构。该结构。 特特殊殊结结构构。调调用用foreachforeach和和repeatrepeat函函数数时时,VisualLISP VisualLISP 在在堆堆栈栈中中加加入入该该结构,该结构中不显示函数的参数,其格式如下:结构,该结构中不显示函数的参数,其格式如下: FOREACHFOREACH或或REPEAT REPEAT l lFOREACH FOREACH 框架表示对框架表示对foreachforeach函数的调用。例如,对以下表达式求值:函数的调用。例如,对以下表达式求值:(foreach n (a b c) (print
84、 n)(foreach n (a b c) (print n);在表达式开始处设置断点;在表达式开始处设置断点单单步步运运行行该该表表达达式式,当当执执行行到到(print (print n)n)时时,选选择择菜菜单单V ViewiewT Trace race stackstack项项,将弹出图将弹出图6-156-15所示跟踪堆栈窗口。所示跟踪堆栈窗口。48课堂优质图图6-156-15调用调用foreachforeach函数时的跟踪堆栈窗口函数时的跟踪堆栈窗口 该该窗窗口口的的第第一一行行为为:AFTER-EXPAFTER-EXP,其其中中11是是该该元元素素的的序序号号,从从表表6-26-2
85、所所示示顶顶端端关关键键字字框框架架表表中中可可看看到到,AFTER-EXP,AFTER-EXP表表示示程程序序正正处处于于调调试试中中断断模模式式,且刚用且刚用Step IntoStep Into或或Step OverStep Over选项步出某表达式。选项步出某表达式。该该窗窗口口的的第第二二行行为为2FOREACH2FOREACH ,其其中中22是是该该元元素素的的序序号号,FOREACHFOREACH 是该函数的形式。是该函数的形式。llREPEAT REPEAT 框架表示对框架表示对repeat repeat 函数的调用。例如,对以下表达式求值:函数的调用。例如,对以下表达式求值:(
86、setq i 0)(setq i 0)(repeat 10(repeat 10 (princ (1+ i) (princ (1+ i) )49课堂优质 单步运行该表达式,执行到单步运行该表达式,执行到(1+ i)(1+ i)时,选择菜单时,选择菜单V ViewiewT Trace stackrace stack项,将弹项,将弹出图出图6-166-16所示跟踪堆栈窗口。所示跟踪堆栈窗口。 图图6-166-16调用调用repeatrepeat函数时的跟踪堆栈窗口函数时的跟踪堆栈窗口 ifif、condcond和和setq setq 等等函函数数并并不不出出现现在在跟跟踪踪堆堆栈栈里里,因因为为在在
87、源源文文件件的的VisualLISPVisualLISP文本编辑器窗口可以看到它们被调用的位置。文本编辑器窗口可以看到它们被调用的位置。50课堂优质 根根据据图图6-146-14所所示示跟跟踪踪堆堆栈栈窗窗口口,可可以以看看出出stack-tracingstack-tracing从从调用到中断的过程如下:调用到中断的过程如下:第第8 8行:行::USER-INPUT (stack-tracing 1 5):USER-INPUT (stack-tracing 1 5) 用户在控制台输入了用户在控制台输入了(stack-tracing 1 5)(stack-tracing 1 5),调用了该函数,
88、调用了该函数。图图6-146-14跟踪堆栈窗口跟踪堆栈窗口 51课堂优质第第7 7行:行:7(USUBR034086e0-top-)7(USUBR034086e0-top-) 该函数的地址。该函数的地址。第第6 6行:行:6(stack-tracing 1 5)6(stack-tracing 1 5) indexvalindexval等于等于1 1,maxvalmaxval等于等于5 5调用该函数。调用该函数。第第5 5行:行:5(stack-tracing 2 5)5(stack-tracing 2 5) indexvalindexval等于等于2 2,maxvalmaxval等于等于5 5
89、调用该函数。调用该函数。第第4 4行:行:4(stack-tracing 3 5)4(stack-tracing 3 5) indexvalindexval等于等于3 3,maxvalmaxval等于等于5 5调用该函数。调用该函数。第第3 3行:行:3(stack-tracing 4 5)3(stack-tracing 4 5) indexvalindexval等于等于4 4,maxvalmaxval等于等于5 5调用该函数。调用该函数。第第2 2行:行:2(stack-tracing 5 5)2(stack-tracing 5 5) indexvalindexval等于等于5 5,maxv
90、almaxval等于等于5 5调用该函数。调用该函数。第第1 1行:行:: BREAK-POINT: BREAK-POINT 遇到用户设置的断点暂停遇到用户设置的断点暂停52课堂优质6.7 6.7 修改变量和函数的特性修改变量和函数的特性1. 1. 符号服务对话框的功能符号服务对话框的功能 符号可以是变量或函数名。通过符号服务对话框可以查看或修改变量的当符号可以是变量或函数名。通过符号服务对话框可以查看或修改变量的当前值,可以设置变量或函数的一些特性。前值,可以设置变量或函数的一些特性。 2. 2. 符号服务对话框的组成符号服务对话框的组成 图图6-176-17符号服务对话框符号服务对话框 工
91、具栏工具栏符号名符号名符号值符号值符号标志符号标志 53课堂优质 图图6-176-17所所示示为为符符号号服服务务对对话话框框,它它由由工工具具栏栏、符符号号名名、符符号号值值和和符符号号标标志四部分组成。志四部分组成。(1 1)工具栏:工具栏提供了对符号操作的工具。它包括以下四个图像按钮:)工具栏:工具栏提供了对符号操作的工具。它包括以下四个图像按钮: 将当前符号加入到监视窗口。将当前符号加入到监视窗口。 检验该符号的值。检验该符号的值。 如如果果该该符符号号是是用用户户定定义义的的函函数数名名,则则打打开开包包含含该该函函数数定定义义的的文文本本编编辑辑器窗口,并亮显该函数的定义。器窗口,
92、并亮显该函数的定义。 如如果果该该符符号号是是一一个个内内部部函函数数名名,则则显显示示VisualLISPVisualLISP帮帮助助文文件件中中的的相相关关信息。信息。(2 2)NameName编辑框:显示被操作的符号名。编辑框:显示被操作的符号名。(3 3)ValueValue编辑框:显示符号值或它最初的子串。编辑框:显示符号值或它最初的子串。54课堂优质(4 4)FlagsFlags组:该组有以下四个切换开关,其特性如下:组:该组有以下四个切换开关,其特性如下: TraceTrace切切换换开开关关:对对设设置置为为TraceTrace标标志志的的函函数数,在在TraceTrace窗窗
93、口口显显示示对对其其跟跟踪踪的的信息。该标志只对作为函数名的符号有效。信息。该标志只对作为函数名的符号有效。 Protect Protect AssignAssign切切换换开开关关:该该标标志志的的符符号号受受到到保保护护。程程序序运运行行时时如如果果对对受受到到保保护护的的符符号号赋赋值值,将将产产生生询询问问信信息息。受受到到保保护护的的符符号号在在文文本本编编辑辑窗窗口口呈呈蓝蓝色色显显示示。在在默默认认情情况况下下,所所有有AutoLISPAutoLISP内内置置函函数数的的函函数数名名都都受受到到保保护护。例例如如,符号符号pipi、setqsetq就是受到保护的符号。就是受到保护
94、的符号。 Debug Debug on on EntryEntry切切换换开开关关:如如果果设设置置了了该该标标志志,不不管管是是否否加加载载了了该该函函数数的的调调试试信信息息,在在每每次次调调用用该该函函数数时时都都会会产产生生中中断断。该该标标志志只只对对用用户户定定义义的的函函数数起作用。起作用。 Export Export to to AutoCADAutoCAD切切换换开开关关:如如果果设设置置了了该该标标志志,那那么么与与该该符符号号相相关关联联的的函数会被定义为外部函数,这样的函数可以被函数会被定义为外部函数,这样的函数可以被ObjectARXObjectARX应用程序调用。应
95、用程序调用。55课堂优质3. 3. 打开符号服务对话框打开符号服务对话框有两种打开符号服务对话框的途径有两种打开符号服务对话框的途径(1 1)在在程程序序源源代代码码或或控控制制台台窗窗口口中中亮亮显显所所需需符符号号名名,然然后后选选择择菜菜单单V ViewiewS Symbol Serviceymbol Service,或单击,或单击DebugDebug工具栏上的按钮工具栏上的按钮 。(2 2)先选择上述菜单或图像按钮)先选择上述菜单或图像按钮 ,在随后弹出的图,在随后弹出的图6-186-18所示的符号服务所示的符号服务对话框内输入符号名或在下拉列表中选取符号名,若光标附近有符号名,则对话
96、框内输入符号名或在下拉列表中选取符号名,若光标附近有符号名,则该符号名作为新符号名的缺省输入。单击该符号名作为新符号名的缺省输入。单击OKOK按钮即可打开图按钮即可打开图6-176-17所示的符号所示的符号服务对话框。服务对话框。 图图6-186-18输入符号名之前的符号服务对话框输入符号名之前的符号服务对话框 56课堂优质4. 4. 修改变量的值修改变量的值假定某程序有以下两行代码:假定某程序有以下两行代码:(setq a 1) (setq a 1) ;此处设置一个断点;此处设置一个断点(princ a)(princ a) 当当程程序序遇遇到到断断点点暂暂停停时时,亮亮显显变变量量a a,单
97、单击击按按钮钮 ,在在随随后后弹弹出出的的符符号号服服务务对对话话框框的的ValueValue编编辑辑框框里里显显示示了了变变量量a a的的当当前前值值为为1 1。将将该该值值修修改改为为2 2,点点取取OKOK按按钮钮。单单击击按按钮钮 ,将将在在控控制制台台将将打打印印出出变变量量a a的的结结果果为为2 2。说说明完成了对变量明完成了对变量a a的修改。的修改。 如如果果是是可可继继续续的的断断点点循循环环,利利用用符符号号服服务务对对话话框框的的这这一一功功能能,可可以以直直接接改变变量的值继续运行程序。改变变量的值继续运行程序。57课堂优质5. 5. 设置符号的特性设置符号的特性 假
98、定有以下表达式:假定有以下表达式: (setq a(setq a(+ b c+ b c)) ) ;可以是任一含有变量;可以是任一含有变量b b的表达式的表达式 亮亮显显变变量量b b,单单击击按按钮钮 ,将将随随后后弹弹出出的的服服务务对对话话框框的的FlagsFlags组组的的Protect Protect AssignAssign切切换换开开关关设设置置为为开开,单单击击OKOK按按钮钮。变变量量b b呈呈兰兰色色显显示示,说说明明它它已已成成为为受受保保护护符符号号。在在随随后后的的表表达达式式中中,如如果果直直接接或或间间接接改改变变b b的的值值,将将出出现现图图6-196-19所所
99、示示的的提提示示。用用 是是 相相应应,程程序序在在此此处处暂暂停停;用用 否否 相相应应,符符号号b b可以被改变。可以被改变。图图6-19 6-19 询问是否为受保护符号赋值的对话框询问是否为受保护符号赋值的对话框 解除符号保护状态的操作与此类似,只是将解除符号保护状态的操作与此类似,只是将Protect AssignProtect Assign切换开关设置切换开关设置为关闭状态。为关闭状态。 58课堂优质6. 6. 设置函数在被调用时处于暂停的状态设置函数在被调用时处于暂停的状态 将例将例6-46-4所示程序代码复制到所示程序代码复制到VisualLISPVisualLISP文本编辑器窗
100、口,删除程序中的文本编辑器窗口,删除程序中的断点,亮显函数名断点,亮显函数名stack-tracingstack-tracing,点取按钮,点取按钮 ,将随后弹出的服务对话框的,将随后弹出的服务对话框的 FlagsFlags 组的组的 Debug on Entry Debug on Entry 切换开关切换开关设置为开,点取切换开关切换开关设置为开,点取OKOK按钮。按钮。然后运行该程序。当程序运行遇到对然后运行该程序。当程序运行遇到对stack-tracingstack-tracing函数的调用时,不管事前是函数的调用时,不管事前是否在函数内设置了断点,当程序运行到该函数时,自动处于暂停的状
101、态。此否在函数内设置了断点,当程序运行到该函数时,自动处于暂停的状态。此时可利用各种调试程序的工具查看、检验或分析变量的结果。时可利用各种调试程序的工具查看、检验或分析变量的结果。 59课堂优质6.8 6.8 检验窗口检验窗口1. 1. 检验窗口的功能检验窗口的功能 检检验验窗窗口口的的功功能能是是浏浏览览或或检检验验查查数数字字、字字符符串串、变变量量、表表、AutoCADAutoCAD的的图图形形元元素素、AutoCADAutoCAD的的选选择择集集等等AutoLISPAutoLISP和和AutoCADAutoCAD对对象象。使使用用检检验验窗窗口口还还可可以浏览复杂对象的数据结构和浏览以
102、浏览复杂对象的数据结构和浏览ActiveXActiveX对象。对象。2. 2. 检验检验窗口的窗口的结结构构标题栏标题栏对象行对象行元素表元素表图图6-206-20检验窗口的结构检验窗口的结构 验验窗口的窗口的样样式式见图见图6-206-20。窗口的内容与被操作。窗口的内容与被操作对对象的种象的种类类相关。所有的相关。所有的检验检验窗口都有一个窗口都有一个标题栏标题栏、对对象行和元素表(象行和元素表(该该表可能表可能为为空)。空)。60课堂优质(1 1)标题栏:对话框的标题,同时显示所了解对象的类型。)标题栏:对话框的标题,同时显示所了解对象的类型。(2 2)对象行:对象名或对象值。)对象行:
103、对象名或对象值。(3 3)元元素素表表:组组成成该该对对象象的的成成员员。对对象象种种类类不不同同,元元素素表表的的大大小小和和内内容容就就有有所所不不同同。元元素素表表的的每每一一项项(行行)都都分分为为名名称称和和内内容容两两部部分分。名名称称用用括括号号括括起起,方方括括号号 说说明明可可以以通通过过与与该该项项关关联联的的快快捷捷菜菜单单的的 修修改改 选选项项修修改改该该项项;而而花括号花括号 说明用户不能修改该项。说明用户不能修改该项。对象栏和元素表都有与自己的关联快捷菜单。对象栏和元素表都有与自己的关联快捷菜单。3. 3. 打开检验窗口的步骤打开检验窗口的步骤 选中某选中某Aut
104、oLISPAutoLISP对象名(例如某变量)对象名(例如某变量) 从从 VisualLISPVisualLISP选选择择菜菜单单V ViewiewI Inspectnspect,或或单单击击DebugDebug工工具具栏栏按按钮钮 。 也也可可以以通通过过快快捷捷菜菜单单选选择择InspectInspect项项,或或者者选选择择Symbol Symbol ServiceService等等窗窗口口工工具具栏栏的按钮的按钮 。 如果在调用检验窗口之前没有选中对象,如果在调用检验窗口之前没有选中对象,VisualLISPVisualLISP将显示图将显示图6-216-21所示对所示对话框,提示用户
105、输入要检验的对象。话框,提示用户输入要检验的对象。 61课堂优质图图6-216-21输入检验对象的对话框输入检验对象的对话框 VisualLISPVisualLISP保保存存用用户户最最近近输输入入检检验验窗窗口口的的1515个个记记录录。可可以以通通过过下下拉拉列列表选择以前指定的检验对象。表选择以前指定的检验对象。4. 4. 各种对象的检验窗口各种对象的检验窗口检验窗口元素表的内容是由检验对象的类型确定的。检验窗口元素表的内容是由检验对象的类型确定的。 INT INT(整数)(整数) 对象栏是整数本身,元素表的内容是用二对象栏是整数本身,元素表的内容是用二进制、八进制、十进制、十六进制和字
106、符形进制、八进制、十进制、十六进制和字符形式显示的数值。字符格式是指和该数相应的式显示的数值。字符格式是指和该数相应的ASCIIASCII字符,对大于字符,对大于256256的整数取其与的整数取其与256256的余的余数。数。62课堂优质 REAL REAL(实数)(实数)对象栏是实数本身,它没有元素表。对象栏是实数本身,它没有元素表。 STRINGSTRING(字符串)(字符串)对象栏是字符串本身,它的元素表是该字符串的单字符对象栏是字符串本身,它的元素表是该字符串的单字符序列。双击某单字符可了解该字符的数字表示形式。序列。双击某单字符可了解该字符的数字表示形式。 LIST (LIST (规
107、则表规则表) )规则表的检验窗口见图规则表的检验窗口见图6-22 6-22 。元素表内是该表的元素序列。元素表内是该表的元素序列。 LIST(LIST(不规则表不规则表) )不规则表,也成为点对(不规则表,也成为点对(dotted pairsdotted pairs)。元素表内是该表的)。元素表内是该表的carcar和和cdrcdr操作的结操作的结果。例如,由果。例如,由 (cons 8 (cons 8 A A ) ) 创建的表,其检验窗口如图创建的表,其检验窗口如图6-236-23所示。所示。 图图6-226-22规则表规则表 图图6-236-23不规则表不规则表63课堂优质 FILE FI
108、LE(文件)(文件)文文件件的的检检验验窗窗口口见见图图6-246-24。元元素素表表内内是是该该文文件件的的名名字字和和打打开开该该文文件件时时的的属属性性。namename指指出出了了文文件件名名,modemode指指出出该该文文件件是是打打开开供供读读、写写、附附加加,还还是是已已被被关关闭闭,idid是是内内部部的的文文件件标标识识,position,position显显示示了了读读或或写写文文件件的的当当前前位位置置,eofeof指出是否在文件的结束处,如果文件是以写模式打开时不出现该项。指出是否在文件的结束处,如果文件是以写模式打开时不出现该项。 SUBRSUBR(函数)(函数)S
109、UBRSUBR又分为又分为SUBRSUBR和和USUBRUSUBR函数。函数。SUBRSUBR是是内内部部或或已已编编译译的的函函数数,元元素素表表内内是是该该函函数数的的名名字字。内内部部函函数数的的检检验验窗口见图窗口见图6-256-25。图图6-246-24文件的检验窗口文件的检验窗口图图6-256-25内部函数的检验窗口内部函数的检验窗口64课堂优质 USUBRUSUBR指指明明是是用用户户定定义义的的函函数数。元元素素表表显显示示了了函函数数名名、函函数数参参数数表表和和该该函函数数中中定定义义的的局局部部变变量量列列表表。用用户户定定义义函函数数的的检检验验窗窗口见图口见图6-26
110、6-26。图图6-266-26用户定义函数的检验窗口用户定义函数的检验窗口 65课堂优质6.9 6.9 访问访问AutoCADAutoCAD对象对象 上上一一节节介介绍绍了了一一些些数数据据类类型型的的检检验验窗窗口口,本本节节介介绍绍通通用用检检验验窗窗口口浏浏览览AutoCADAutoCAD图形数据库,有关图形数据库,有关AutoCADAutoCAD对象的检验窗口。对象的检验窗口。1. 1. 浏览图形数据库中的图元浏览图形数据库中的图元选选择择菜菜单单V ViewBrowse iewBrowse D Drawing rawing DatabaseBrowse DatabaseBrowse
111、All All E Entitiesntities,将将打打开开图图6-276-27(a a)所所示示的的AutoCADAutoCAD图图形形元元素素检检验验窗窗口口。在在该该检检验验窗窗口口的的元元素素表表可可看看到有直线、圆、圆弧、文本、多义线和椭圆等各种图元。到有直线、圆、圆弧、文本、多义线和椭圆等各种图元。a ba b图图6-27 AutoCAD6-27 AutoCAD图形元素检验窗口图形元素检验窗口 66课堂优质 双双击击图图元元名名,或或选选中中图图元元后后单单击击鼠鼠标标右右键键并并选选择择InspectInspect,可可打打开开该该图图元元的的检检验验窗窗口口。图图6-276
112、-27(b b)是是双双击击第第二二个个图图元元后后打打开开的的图图元元检检验验窗窗口口。该该窗窗口口的的标标题题栏栏指指明明了了图图元元类类型型是是ACAD ACAD CIRCLECIRCLE,对对象象栏栏显显示示了了该该圆圆的的图图元元名名Entity ,7ef4fe90,元元素素表表列列出出了了该该圆圆句句柄柄、所所在在的的图图层层、厚度方向、圆心和半径的数据。厚度方向、圆心和半径的数据。图图元元窗窗口口对对象象行行快快捷捷菜菜单单除除了了PrintPrint、CopyCopy、LogLog、andand和和UpdateUpdate外外,还还增增加加了以下菜单项:了以下菜单项:l lMo
113、difyModify:如如果果可可用用,将将打打开开标标准准的的针针对对所所浏浏览览图图元元的的AutoCAD AutoCAD DDMODIFYDDMODIFY对话框。对话框。l lInspect Inspect Raw Raw DataData:弹弹出出该该图图元元的的检检验验窗窗口口,元元素素表表的的内内容容与与entgetentget函数返回的图元表基本相同,见图函数返回的图元表基本相同,见图6-286-28。l lInspect Next EntInspect Next Ent:打开下一个图元的检验窗口。:打开下一个图元的检验窗口。l lInquire Extended DataInq
114、uire Extended Data:显示当前用:显示当前用regappregapp注册的应用程序表。注册的应用程序表。67课堂优质图图6-286-28图元名检验窗口图元名检验窗口 说明:可以控制图图元在检验窗口显示的内容,步骤如下:说明:可以控制图图元在检验窗口显示的内容,步骤如下: 选选择择菜菜单单T ToolsEnvironment oolsEnvironment O OptionsptionsG General eneral OptionsOptions,弹弹出出图图13-13-2222所示所示General OptionsGeneral Options对话框。对话框。 单单击击Dia
115、gnosticDiagnostic选选项项卡卡,如如果果设设置置该该选选项项卡卡Inspect Inspect Drawing Drawing ObjectsObjects切切换换开开关关为为关关,只只显显示示图图元元名名,否否则则,还还要要显显示示该该图图元元的的图图层层、厚厚度度方方向向及更为详细的几何信息,如图及更为详细的几何信息,如图6-286-28。68课堂优质2. 2. 浏览图形数据库中的符号表浏览图形数据库中的符号表 选选择择菜菜单单中中V ViewBrowse iewBrowse D Drawing rawing DatabaseBrowse DatabaseBrowse T
116、Tablesables,弹弹出出图图6-296-29(a a)所所示示的的检检验验窗窗口口,通通过过该该窗窗口口可可以以浏浏览览图图形形的的视视区区、线线型型、图图层层、字样、视图、尺寸样式、用户坐标系、应用程序各种符号表。字样、视图、尺寸样式、用户坐标系、应用程序各种符号表。(a) (b) (c)(a) (b) (c)图图6-296-29符号表检验窗口符号表检验窗口69课堂优质 符符号号表表检检验验窗窗口口的的每每个个元元素素是是同同一一种种类类型型符符号号表表的的集集合合,如如图图层层表表、线线型型表表。双双击击某某元元素素,例例如如,将将弹弹出出图图6-296-29(b b)所所示示的的
117、有有关关图图层层表表的检验窗口。的检验窗口。 图图层层表表检检验验窗窗口口的的每每个个元元素素是是一一个个图图层层名名,双双击击某某元元素素,例例如如,将将弹弹出出图图6-296-29(c c)所所示示的的有有关关这这个个图图层层的的检检验验窗窗口口。通通过过该该窗窗口口可可以以看看到到该该图层的名字是图层的名字是00,颜色为白色,打开同时解冻的状态等信息。,颜色为白色,打开同时解冻的状态等信息。3. 3. 浏览图浏览图形数据形数据库库中的中的块块 选选择择菜菜单单V ViewiewBrowse Browse D Drawing rawing DatabaseDatabaseBrowse Br
118、owse B Blockslocks,将将打打开开图图6- 6-30(a)30(a)所示的有关所示的有关AutoCADAutoCAD图块的检验窗口。图块的检验窗口。 双双击击某某块块名名,如如b3b3或或选选中中该该块块后后单单击击鼠鼠标标右右键键并并选选择择InspectInspect,可可打打开开图图6-6-3030(b b)所示的有关)所示的有关这这个个图块图块的的检验检验窗口。窗口。 元元素素表表显显示示了了该该块块的的名名字字、插插入入基基点点和和该该块块是是否否带带属属性性等等信信息息。双双击击PartsParts,将弹出图,将弹出图6-306-30(c c)所示的有关该块成员的检
119、验窗口。)所示的有关该块成员的检验窗口。 70课堂优质 通过块成员检验窗口可以看到该块是由一个椭圆、一个圆弧、一个圆和通过块成员检验窗口可以看到该块是由一个椭圆、一个圆弧、一个圆和两条直线组成的。如果双击两条直线组成的。如果双击LINELINE或或CIRCLECIRCLE,可进一步了解每个成员的详,可进一步了解每个成员的详细信息。细信息。 (a) (b) (c)(a) (b) (c)图图6-306-30图块检验窗口图块检验窗口 71课堂优质4. 4. 浏览选取的图形对象浏览选取的图形对象 选选 择择 菜菜 单单 V ViewBrowse iewBrowse D Drawing rawing D
120、atabaseBrowse DatabaseBrowse S Selectionelection,VisualLISPVisualLISP将将切切换换到到AutoCADAutoCAD的的图图形形窗窗口口,出出现现Select Select objects:objects:的的提提示示,待待选选取取一一些些图图形形对对象象后后,返返回回到到VisualLISPVisualLISP窗窗口口,并并打打开开图图6-316-31所所示示的的有有关关所选图形对象的检验窗口。所选图形对象的检验窗口。图图6-316-31选择集检验窗口选择集检验窗口 双击元素表的某图元或选中该图元后单击鼠标右键并选择双击元素表的某图元或选中该图元后单击鼠标右键并选择InspectInspect,将可,将可打有关这个图元的检验窗口。打有关这个图元的检验窗口。 72课堂优质