编程实例清华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)
或在控制台" " 在"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 "输入键槽的宽度:"))
CAD二次开发Visual_LISP指南
CAD二次开发Visual_LISP指南CAD二次开发是指在CAD软件平台上进行个性化开发和定制化编程,以满足用户特定需求Visual LISP是AutoCAD软件的一种编程语言,通过使用Visual LISP语言可以对AutoCAD进行二次开发。
下面是CAD二次开发Visual LISP的指南,希望对开发人员有所帮助。
一、入门准备1.学习基础知识在开始进行CAD二次开发前,需要充分了解AutoCAD软件的基本功能和特点,熟悉CAD软件的界面、命令、对象模型以及常用API(应用程序接口)等。
2.掌握Visual LISP语言Visual LISP是CAD软件平台上的一种编程语言,与AutoLISP类似。
学习和掌握Visual LISP语言是进行CAD二次开发的基础。
可以通过学习书籍、在线教程和参考文档等途径来提高自己的编程能力。
3.安装开发工具需要安装CAD软件的开发工具,例如AutoCAD自带的AutoCAD Developer Tools或者Visual LISP IDE等。
这些工具提供了编写、调试和管理二次开发项目的必要环境。
二、开始二次开发1.确定需求在进行CAD二次开发前,需要明确开发的具体需求和目的。
这可以包括添加自定义命令、修改现有功能、创建用户界面等等。
确保清晰地定义需求和目标,以便更好地进行开发工作。
2.编写代码通过Visual LISP语言编写代码来实现二次开发的需求。
VisualLISP提供了一系列的函数和命令,可以对AutoCAD的对象模型进行访问和操作。
根据需求,编写相应的函数、宏和命令,实现具体的功能。
3.调试和测试在编写代码后,进行调试和测试是不可或缺的步骤。
通过运行调试器、打印日志、进行单元测试等方式来验证代码的正确性和稳定性。
及时修复和调整代码中的问题,确保其能够正常运行。
4.文档和发布完成开发工作后,建议对代码进行适当的文档整理和注释,方便后续的维护和管理。
第7章_清华大学的《CAD二次开发》电子教(LISP)
例如,已设置文件搜索路径为"d:\user",就可以用表达式(vlisp-compile 'st "sample.lsp")编译驱动器D的"\user1"目录下的文件"sample.lsp"。 如果"d:\user"不是文件搜索路径,那么,在指定源文件时必须包括完整的 路径名,如: (vlisp-compile 'st "d:\\user\\example.lsp") 或 (vlisp-compile 'st "d:/user/ example.lsp")
① 对已编译函数直接引用,而不是引用函数名。该功能可提高代码的运行速 度并防止在运行时对函数的重定义。
② 去掉函数名使得已编译代码更安全、减少程序的长度和缩短程序的加载时 间。
③ 去掉所有局部变量名并对其直接链接引用,同样使得已编译代码更安全、 并减小程序的大小和加载程序所用的时间。
2. 确定要编译的LSP源文件
无论是".fas"文件,还是可以包含多个已编译程序的".vlx"打包文件,都 可以在Visual LISP控制台窗口、AutoCAD命令提示处加载这些已编译的 AutoLISP 程序,也可以在AutoCAD菜单上选取ToolsLoad Application、 ToolsAutoLISPLoad或Visual LISP菜单上选取FileLoad File加载这些 已编译的AutoLISP程序。 (1)在Visual LISP控制台窗口加载已编译的LSP程序 (load "d:/user2/example.fas") 如果不指定文件扩展名,load 函数首先查找并加载扩展名为".vlx" 的文 件;如果没有找到".vlx"文件,load 函数将查找并加载".fas"文件;如果没有
第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或单击按钮
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)
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
因为在命令行操作时,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。