调试程序清华CAD二次开发LISP

合集下载

第4章 清华大学的《CAD二次开发》电子教(LISP)

第4章 清华大学的《CAD二次开发》电子教(LISP)

4.2 Visual LISP的用户界面 的用户界面
(1)菜单 LISP提供了 个下拉菜单, 提供了9 Visual LISP提供了9个下拉菜单,每个菜单的详细内容与 当前的工作状态相关。 当前的工作状态相关。 File:创建新的或修改已有的AutoLISP程序文件, AutoLISP程序文件 File:创建新的或修改已有的AutoLISP程序文件,编译或打印 程序文件等。 程序文件等。 Edit:复制和粘贴文本,匹配表达式中的括号, Edit:复制和粘贴文本,匹配表达式中的括号,或复制控制台 窗口内以前的输入等。 窗口内以前的输入等。 Search:查找和替换文本字符串,设置书签, Search:查找和替换文本字符串,设置书签,或利用书签导航 等。 View:查找和显示程序代码中的变量和符号值等。 View:查找和显示程序代码中的变量和符号值等。 Project:使用工程和编译、链接程序等。 Project:使用工程和编译、链接程序等。 Debug:调试程序,检查变量状态和表达式的结果。 Debug:调试程序,检查变量状态和表达式的结果。 Tools:设置Visual LISP文本格式化选项和各种环境选项等 文本格式化选项和各种环境选项等。 Tools:设置Visual LISP文本格式化选项和各种环境选项等。 Window:窗口管理。 Window:窗口管理。 Help:在线帮助。 Help:在线帮助。
(5)状态行
位于屏幕底部,显示与Visual LISP所做工作相关的信息 所做工作相关的信息。 位于屏幕底部,显示与Visual LISP所做工作相关的信息。例如在编辑程序 显示“Edit: /lisp1/roots. 等信息, 时,显示“Edit: d:/lisp1/roots.lsp * ”等信息,显示当前正在编辑文件 等信息 的路径的名称,若文件名之后有一个“ 的路径的名称,若文件名之后有一个“* ”,表示该文件尚未保存最新的结 若切换到控制台窗口时,显示Visual window; 果;若切换到控制台窗口时,显示Visual LISP console window;若切换到 跟踪窗口时,显示Trace window; 跟踪窗口时,显示Trace output window;若关闭停留在菜单项或工具栏按钮 显示相应菜单项或工具栏按钮的简短的帮助信息。 时,显示相应菜单项或工具栏按钮的简短的帮助信息。在状态行的右端显示 着光标当前处于窗口第几行、第几个字符的信息。 着光标当前处于窗口第几行、第几个字符的信息。

第9章 清华大学的《CAD二次开发》电子教(LISP)

第9章 清华大学的《CAD二次开发》电子教(LISP)

或在控制台" " 在"Command:"提示下键入 "提示下键入!elist或在控制台"_$"提示下键入 或在控制台 elist,即可得到以下该图元的图元表。 ,即可得到以下该图元的图元表。
((name: ef69500>); 69500>) ((-1 . <Entity name: 7ef69500>);图元名 "TEXT"); (0 . "TEXT");图元种类 name: ef67 00>) 67d >); (330 . <Entity name: 7ef67d00>);软指针句柄 19F") F"); (5 . "19F");图元描述字 "AcDbEntity");AutoCAD图元 (100 . "AcDbEntity");AutoCAD图元 (67 . 0);模型空间 "Model"); (410 . "Model");模型空间标识 (8 . "0") ;所在图层名 AutoCAD文本 (100 . "AcDbText") ;AutoCAD文本 10. 20. (10 10.0 20.0 0.0) ;定位点坐标 (40 . 5.0);文本字高 (1 . "ABCDE");文本内容 "ABCDE");
a
(defun c:keyway()
b
输入定位点: (setq pc (getpoint "输入定位点: ")) 输入轴的直径: (setq d (getdist pc "输入轴的直径:")) 输入键槽的宽度: (setq b (getdist pc "输入键槽的宽度:"))

第6章 调试程序 清华CAD二次开发 LISP讲解

第6章 调试程序  清华CAD二次开发 LISP讲解
从断点循环退出,将恢复上一层循环。如果在该断 点循环中修改了某变量的值,程序继续运行时将使用变 量修改后的值。
断点循环分为可继续断点循环和不可继续断点循环。
1. 可继续的断点循环 可继续的断点循环是指可以在程序中断处,继续向下执行
钮。
(3)将光标移至将要添加的变量名,单击鼠标右键,在随后弹出的快捷 菜单上选取Add Watch菜单项,将弹出已填写了该变量名的添加监视窗 口,然后单击OK按钮。
4. 监视变量的值
监视列表的每一行的格式是"变量名=变量值",例如:A = 1。如果程序 尚未运行,变量的值是空的;随着程序的运行,在监视窗口可以看到变量的 值也在不断变化。
检验窗口
跟踪堆栈 出错跟踪 符号服务 监视窗口 自动匹配窗口 断点窗口 编译输出窗口
AutoCAD
切确激打堆符匹打
换定活开栈号配开
到活控检跟服

动制测踪务

窗台窗功

口窗口能


图 形 窗 口
VisualLISP控制台
浏览图形数据库
选择工具栏
图6-1 View下拉菜单
通过图6-2所示Debug下拉菜单和Debug工具栏的选项可以设置程序暂停 的模式和继续程序运行的方式。
2. 监视窗口的快捷菜单
选择监视列表中的某一项并单击鼠标右键,可显示图6-4所示监视窗口 的快捷菜单。
调用检验功能,查看所选值。 将所选变量的值复制到系统变量 *obj* 中。 将所选变量值加上一个单引号前缀',打印到控制台窗口。 对所选变量调用符号服务对话框。 调用自动匹配选项对话框,用所选变量名作自动匹配参数。 从监视窗口中删除所选变量。
选择菜单ToolsLoad Text in Editor或单击按钮

第4章 有关Visual LISP的基本操作 清华CAD二次开发 LISP

第4章 有关Visual LISP的基本操作  清华CAD二次开发 LISP
第 4章
有关Visual LISP的基本操作
4.1 进入和退出Visual LISP
1. 进入Visual LISP
在 AutoCAD 下 拉 菜 单 中 选 择 ToolsAutoLISPVisual LISP Editor ,或在命令提示“ Command :”下键入 vlide , 即可进入下图所示的Visual LISP集成环境。 2. 退出Visual LISP 在 Visual LISP 下拉菜单中选择 FileExit或单击其所在窗 口的关闭按钮即可。注意此时 AutoCAD 并没有完全卸载 Visual LISP,而只是把所有的Visual LISP窗口关闭。 在下一次启动 Visual LISP 任务时, Visual LISP 将自动打 开上次退出时打开的文件和窗口。 3. 切换到AutoCAD窗口 除了使用标准的 Windows 的窗口切换方法之外,还可以在 Visual LISP 下拉菜单选择 WindowActivate AutoCAD 或单击 View工具栏中的按钮 来激活AutoCAD窗口。
查找
替换
查找并且替换
设置或取消书签切换
到下一个书签的位置 到上一个书签的位置 清除所有的书签
⑤ Debug工具栏
执行一步 执行一个表达式 执行一个过程 继续执行 退出当前层
重置为顶层
设置或取消断点 添加监视
显示上一个断点
调试指示器按钮
(3)文本编辑窗口
Visual LISP 的 文 本 编
辑窗口除了具有一般文本编
(6)跟踪窗口
跟踪窗口通常处于最小化的状态。在启动时,该窗口包含Visual LISP 当 前版本的信息,如果Visual LISP在启动时遇到错误,它还会包含相应的错误 信息。

AutoCAD二次开发实用教程第1章 Visual Lisp 概述

AutoCAD二次开发实用教程第1章 Visual Lisp 概述

1.2 AutoLISP语言 1、1.Auto LISP的优点
1) 源于LISP的AutoLISP语言语法规则简单,灵活 且易学易用。 2)功能函数强大,编写环境简单。 3) 可根据需求对AutoCAD进行二次开发,实现对 Auto CAD的图形实体和各种参数表的数据进行 存取和编辑,易于交互。 4) 解释执行, 立竿见影。
本章作业
教材第一章: 习题 1,2,3,4,5
1.2 AutoLISP语言
AutoLISP 是 由 Autodesk 公 司 为 二 次 开 发 AutoCAD而专门设计的编程语言,它起源于LISP语 言 , 嵌 入 在 AutoCAD 的 内 部 , 是 LISP 语 言 和 AutoCAD有机结合的产物。 它 既 有 LISP 语 言 人 工 智 能 的 特 性 , 又 具 有 AutoCAD强大的图形编辑功能。它可以把AutoLISP 程序和 AutoCAD 的绘图命令透明地结合起来,使之 成为一体,还可以实现对 AutoCAD 图形数据库的直 接访问和利用, AutoLISP语言可以自动绘制各种复 杂的图形,定义新的 AutoCAD命令、驱动对话框、 为AutoCAD扩充智能化、参数化的功能。
第1章 Visual LISP语言概述
本章要求:
1.了解Visual LISP的运行环境及启动、退出。
2.了解Visual LISP功能及特点。 3. 熟习Visual LISP在AutoCAD下的开发环境。 4. 进行简单的AutoLISP程序设计。
1.1 LISP语言简介
LISP ( List Processing Language)是表处理语言,主要用于 人工智能(AI)、专家系统、机器人、博弈和定理证明等领 域。该语言于1958年开发成功,以后陆续出现多个不同的版 本。 LISP语言的发展经历了如下几个时期: 1)两年酝酿阶段(1956--1958),这个时期形成了LISP的基 本思想。 2)实现与应用时期(1958--1962),这个时期的发展基本上 是单线的。 3) “百家争鸣”时期(1962--1984),在这个时期LISP的发 展呈现多样化,形成了多种LISP语言。 4)标准化时期(1984至今),LISP语言的发展进入了标准化 时代。

CAD二次开发(LISP)

CAD二次开发(LISP)




第5行:(defun C: triang1() 本行中,defun为一个AutoLISP函数,它定义了函数TRIANG1。TRIANG1 为该函数的函数名。由于此函数名前带有C:,因此该函数可以像AutoCAD 命令一样被执行。若没有C:, TRIANG1命令只能置于圆括号中执行(TRIANG1)。此函数带有三个全 局变量( P1,P2,P3)。第一次编写AutoLISP程序时,保持变量为全局变量是个好 习惯。这是因为装入并运行程序后,可以通过在AutoCAD命令提示行中输人 感叹号(!)并在其后输入变量名来检查变量的值(Command:!P1)。一 旦程序通过测试并运行正常,就应该使它们成为局部变量(defun c:TRIANG1(/P1 P2 P3) 第6行:(setq P1(getpoint“\n Enter first Point of triangle:")) 本行中,getpoint函数暂停程序的运行,允许用户输入三角形的第一个点。 提示信息Enter first Point of triangle显示在屏幕的提示区内。可以通过键盘输入该点的坐标,也可以用 屏幕光标选择该点。随后setq函数将这些坐标赋予变量P1。\n的作用是回车, 其后的表达式将被打印在下一行上(“n”代表“newline")
说明
1 2 3 4 5 6 7 8 9
10



第1-3行 前三行为注释行,用于描述程序中的函数。这几行很重要因为有它们,编 辑程序会变得简单一些。可以在任何必要的时候使用注释。所有的注释行都 必须以分号(;)开头,当程序装入时这些行会被忽略。 第4行:行为空行,用于分隔程序与注释部分。空行还可以用来分隔程序 的不同模块。这样便于区分程序的不同部分。空行对程序没有影响。再 Nhomakorabea加几个函数

第10章清华大学的《CAD二次开发》电子教(LISP)

该函数没有参数,返回指向AutoCAD应用程序的指针#<VLAOBJECT IAcadApplication 00b5e51c> ,返回值的数据类型为VLA ,即VLISP ActiveX对象。该表达式将指向AutoCAD应用程序的指 针赋给了变量myacad。
2. 了解AutoCAD应用程序的属性和方法
; ZoomCenter (2) ; ZoomExtents () ; ZoomPickWindow () ; ZoomPrevious () ; ZoomScaled (2) ; ZoomWindow (2)
在Property values(属性)部份列出了AutoCAD应用程序具 有ActiveDocument(活动的文档)、Application(应用程序的 指针)、Caption(标题)、FullName(可执行文件名)等属性 。
档的指针#<VLA-OBJECT IAcadDocument 01165340>,将其赋给变量mydoc。
4. 了解活动文档的属性 (vlax-dump-object mydoc) 返回的属性信息中有以下一行: ;ModelSpace (RO) = #<VLA-OBJECT IAcadModelSpace 011c1e04>。 ModelSpace是活动文档的属性之一,也是活动文档的下一级VLA对象。 5. 获取模型空间对象 (setq myms(vla-get-ModelSpace mydoc)) 返回模型空间的指针#<VLA-OBJECT IAcadModelSpace 011c1e04>,将其赋给 变量myms。 6.了解活动文档的属性和方法 (vlax-dump-object myms t) 返回的属性信息中有以下一行: ; Count (RO) = 2。说明该模型空间当前有两个图形对象。 返回的方法信息中有Add3Dface、Add3Dmesh、Add3Dpoly、AddArc、 AddAttribute、 AddBox、AddCircle、…、Item等许多方法。 其中 Item是根据序号获取图形对象,第一个图形对象的序号为0。

建立应用程序清华CAD二次开发LISP课件


lispm在清华cad中的实践案例
实践案例一
介绍一个使用lispm进行清华CAD二次开发的案例,实现一个简单的绘图功能,包括界面设计、功能 实现、调试等。
实践案例二
介绍一个复杂的清华CAD二次开发案例,实现一个复杂的绘图功能,包括多个界面设计、功能实现、 调试等。通过这个案例,展示lispm在清华CAD二次开发中的强大功能和广泛应用。
lispm在清华cad二次开发中的未来应用场景
自动化设计
lisp程序可以自动执行重复性设计任务,提高设计效 率。
定制化功能
通过lisp编程,可以根据用户需求定制化清华cad的 功能,满足特定的应用需求。
智能化辅助设计
lisp与人工智能技术的结合,可以实现智能化辅助设 计,提高设计质量和效率。
THANK YOU
清华cad软件发展前景
01
技术创新不断
清华cad作为国内领先的CAD软 件,一直在不断进行技术创新, 提升产品性能和用户体验。
02
行业应用广泛
03
与lisp结合潜力
清华cad在机械制造、航空航天 、建筑等领域都有广泛的应用, 市场需求持续增长。
清华cad二次开发接口与lisp语言 有很好的结合潜力,未来将会有 更多的应用场景出现。
建立应用程序清华cad二次 开发lisp课件
目 录
• lispm语言介绍 • 清华cad二次开发介绍 • lispm在清华cad二次开发中的应用 • lispm在清华cad二次开发中的优化策略 • lispm在清华cad二次开发中的前景展望
01
lispm语言介绍
lispm语言基本概念
什么是lisp语言?
提高代码的可读性和可维护性
使用有意义的变量名

第8章编程实例清华CAD二次开发LISP

(command "layer" "Make" "zhongxin" "Color" 1 "zhongxin" "Ltype" "Center" "zhongxin" "LWeight" 0.2 "zhongxin" "")
因为在命令行操作时,layer命令需要空回车响应“[?/Make/Set/New/ON /OFF/Color/Ltype/LWeight/Plot/Freeze/Thaw/LOck/Unlock/state]” 提 示 才 能 结束该命令,所以在右括号前增加一对引号(注意,引号内没有空格)。
(setq r (* 0.5 b) l1(- l b));r和l1分别是平键宽度b 和平键长度l的一半
(setq p1 (polar p (+ alf (* 0.5 pi)) r));p1-p4是多 义线的4个顶点
(setq p2 (polar p1 alf l1))
(setq p3 (polar p2 (+ alf (* 1.5 pi)) b))
(2)通过setvar函数设置目标捕捉的类型
(setvar "osmode" 7);7是捕捉端点、中点和中心的代码之和
(setvar "osmode" 0);不捕捉任何类型
将osmode设置为0(不捕捉任何类型)是通常的设置。假定 osmode的当前值为1,将捕捉直线或圆弧的端点。在这种情况下 ,如果指定的是p点,而p点处刚好有一条直线,那么实际获取 的是该直线距p点较近的那个端点,而不是p点本身。所以应该 用setvar函数将osmode设置为0。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第 6章 调试程序
6.1 概述
语法正确的程序并不能保证正常运行,在运行时可能会产生错误的结果 或者发生崩溃现象,这就需要调试。 调试程序的步骤是:
① 控制程序在指定的位置暂停; ② 查看、分析有关变量的值; ③ 修改程序的源代码; ④ 继续或重新运行程序; ⑤ 如果程序不能正常运行,继续调试程序,直至程序正常运行。 为了便于调试程序, Visual LISP提供了一些调试程序的工具,帮助用户 迅速查找并改正程序中的错误。
显然,这不是预期的运行结果。
图6-6监视P1、P2、P3、P4点的值
下面演示如何利用监视窗口调试程序。调试程序的步骤如下:
(1)确定要监视的变量。选择菜单 Debug? Add Watch 或单击工具栏上的
添加监视按钮
,在随后弹出的添加监视窗口内填入变量名 p1,然后
单击OK按钮。用同样的操作监视变量P2、P3、P4。
钮。
(3)将光标移至将要添加的变量名,单击鼠标右键,在随后弹出的快捷 菜单上选取Add Watch 菜单项,将弹出已填写了该变量名的添加监视窗 口,然后单击OK按钮。
4. 监视变量的值
监视列表的每一行的格式是 变量名=变量值 ,例如:A = 1 。如果程序 尚未运行,变量的值是空的;随着程序的运行,在监视窗口可以看到变量的 值也在不断变化。
如果打开了日志选项,监视窗口中的这些内容也将被复制到跟踪日志文件。
2. 监视窗口的快捷菜单
选择监视列表中的某一项并单击鼠标右键,可显示图 6-4所示监视窗口 的快捷菜单。
调用检验功能,查看所选值。 将所选变量的值复制到系统变量 *obj* 中。 将所选变量值加上一个单引号前缀 ',打印到控制台窗口。 对所选变量调用符号服务对话框。 调用自动匹配选项对话框,用所选变量名作自动匹配参数。 从监视窗口中删除所选变量。
选择菜单 Tools? Load Text in Editor 或单击按钮
,VisualLISP自
动将控制切换到AutoCAD界面。当出现 输入矩形的一个角点: 的提示时,输
入(0,0)点,该点是p1点的坐标;当出现 输入矩形的对角点: 的提示时,输
入(100,100)点,该点是p2点的坐标。程序运行结束,只得到了矩形的两条边,
切确激打堆符匹打
换定活开栈号配开
到活控检跟服

动制测踪务

Auto窗口CAD台窗
窗 口
功 能
窗 口

图 形 窗 口
VisualLISP控制台
浏览图形数据库
选择工具栏
图6-1 View下拉菜单
通过图6-2所示Debug下拉菜单和Debug工具栏的选项可以设置程序暂停 的模式和继续程序运行的方式。
只执行一步表达式求值。 执行到下一个断点,如无断点,则执行一个完整的表达式求值。 执行到下一个断点,如无断点,则执行一个最外层的表达式求值。 继续执行程序 结束当前程序。返回到控制台的上一层中断顶层读算写循环。 结束所有当前活动的断点循环并返回到控制台的顶层读算写循环。
5. 利用断点和监视窗口调试程序
假定在编辑器窗口已键入了图 6-6所示的源程序。该程序的功能是根据用 户输入的两个对角点绘制矩形。
首先检查该程序是否存在语法错误。选择菜单 Tools? Text in Editor 或 单击按钮,在 Build Output (输出)窗口显示 ??敨正搠湯? 。说明该程 序没有语法错误。
监视按钮 ,监视窗口内出现 PL = nil ,PL本不是该程序的
变量,是p1的误写。
(3)修改源程序代码,将 pl改写为p1;重新加载、运行该程 序;直到该程序可以正常运行,调试结束。
6.3 在不设置断点的情况下分步调试程序
分步调试就是将一个完整的程序分为若干步,逐步调试。每步可以是 最内层的一个表达式,也可以是一个复杂的表达式,还可以是多个表达式。 可以通过设置断点将程序分为若干段,也可以不用断点而是通过步长将程 序分为若干步。
添加监视 回到最近一次监视窗口的环境 设置/删除断点 清除所有的断点
回到源程序上的最近一次的断点
跟踪命令 立即暂停 出错断开 自动运行 终止求值
图6-2 Debug下拉菜单
下下跳继退重设添显调
一一出续出置置加示试
层个表执当为或监上指
嵌表达行前顶取视一示
套达式
层层消
个器
表式

断按


点钮



Debug 工具栏
VisualLISP 提供了监视窗口、检验窗口、符号服务对话框、中断和继续 执行程序的模式、命令跟踪、跟踪堆栈、跟踪窗口等调试程序的工具。
通过图 6-1示View下拉菜单和 View工具栏可以调用监视窗口、检验窗口等 调试工具。
检验窗口
跟踪堆栈 出错跟踪 符号服务 监视窗口 自动匹配窗口 断点窗口 编译输出窗口
图6-4监视窗口的快捷菜单
3. 将变量加入到监视窗口
有三种途径可以将新的变量加入到监视窗口。
(1) 点取工具栏上的添加监视按钮
,在随后弹出的图6-5所示的添加
监视窗口内填入变量名,然后单击 OK按钮。
图6-5添加监视窗口 (2)亮显要添加的变量名,然后点取工具栏上的添加监视按钮
,随
后弹出的图 6-6所示的已填写了该变量名的添加监视窗口,然后单击 OK按
(2)从图 6-7所示监视窗口可以看到: P1 = [0.0 0.0 0.0] 、
p2 = [100.0 0.0]
、 p3= [100.0 100.00.0]
、P4 = [nil
100.0]。说明 P4点的 X坐标是无定义的,而 X坐标是 (car pl)
的返回值,检查 (car pl),car是正确的,亮显 pl,单击添加
ห้องสมุดไป่ตู้
6.2 监视窗口
监视窗口用于监视变量、函数在程序运行过程中的结果。选择菜单 Debug ? Watch Last Evaluation 。将弹出图6-3所示的监视窗口。
图6-3 监视窗口
1. 监视窗口的工具栏
监视窗口的工具栏有四个图像按钮,从左至右依次是: 添加监视:将新的变量加入到监视窗口。 清除变量:清除监视窗口内的所有的变量。 排序:将监视窗口内的变量名按字母顺序排序。 复制到跟踪/日志:将监视窗口的内容复制到跟踪窗口。
结合下例程序介绍几种调试程序的方法。
【例6-1】 定义绘制矩形的命令,矩形的一个角点、宽、高和旋转角为交 互输入的参数。
相关文档
最新文档