您好,欢迎来到99网。
搜索
您的当前位置:首页AutoCAD高级培训第五讲之二

AutoCAD高级培训第五讲之二

来源:99网


AutoCAD高级培训 第五讲之二

——AutoCAD二次开发

(Visual LISP集成开发环境简介)

一、 Visual LISP概述

Visual LISP简称VLISP,是为加速AutoLISP程序开发而设计的软件工具,它提供了一个完整的集成开发环境,包括编译器、调试器和其他工具,它可以显著地提高自定义AutoCAD的效率。

VLISP提供的主要工具有:文本编辑器、格式编排器、语法检查器、源代码调试器、检验和监视工具、文件编译器、工程管理系统、上下文相关帮助与自动匹配功能和智能化控制台等。 二、 启动和退出Visual LISP集成开发环境 1. 启动步骤:(菜单方式) (1) 启动AutoCAD

(2) 工具——AutoLisp——Visual LISP编辑器 若使用键盘命令,则: 命令:vlisp或vlide 2.退出: 文件——退出

三、 Visual LISP 集成开发环境介绍

包含以下几个部分: 1. 菜单栏

2. 工具栏:标准、调试、工具、搜索、视图 (共5个)

3. 控制台窗口

可输入AutoLisp命令,代替菜单和工具栏命令 4. 状态栏——屏幕底部 显示Visual LISP的状态信息 5. 跟踪窗口

启动时包含:关于Visual LISP当前版本的信息、启动Visual LISP遇到错误时的一些信息。 6. 文本编辑器

打开或新建一个Visual LISP源程序,就可以看到文本编辑器的全貌。

7. 其他Visual LISP窗口(必要时才打开) (一)Visual LISP菜单介绍

菜单的内容:随着激活窗口的不同菜单内容将会不同。 1. 文件:打开、新建、保存 2. 编辑:复制、粘贴、括号匹配 3. 搜索:查找、替换文本、设置书签 4. 视图:查找、替换变量及符号值等

5. 工程:应用程序的工程功能——管理项目、编译程序等 6. 调试:提供程序调试功能——设置和删除断点、单步执行、

检查变量状态、检查表达式结果等

7. 工具:设置Visual LISP选项文本格式、环境选项变量,如

窗口和工具栏的位置

8. 窗口:提供窗口管理功能

9. 帮助:提供帮助功能,包括显示在线帮助 (二)工具栏介绍

工具栏——包括一系列功能的Vlisp命令组

1. 标准:新建、打开、保存、打印输出、剪切、复制、粘贴、

取消、恢复、完成词语功能

2. 工具:加载整个活动窗口代码、加载指定部分代码、语法检

查(全部、指定部分)、对窗口代码格式化(整个活动窗口、指定代码)、设置注释代码、取消整块注释块、在线帮助 3. 搜索:查找、替换、查找并替换、设置或取消书签、下一个

书签、上一个书签

4. 视图:切换到AutoCAD窗口、选择窗口、Visual LISP控制

台、打开检验窗口、堆栈跟踪、符号服务、自动匹配、显示监视窗口

5. 调试:下一层嵌套表达式、下一个表达式、跳出表达式、继

续执行、退出、重置、设置或取消断点切换、添加监视、显示上一个断点

(三)控制台操作 1. 控制台的功能

这里是用命令操作的地方(Visual LISP命令、AutoLISP命令),并能看到结果,类似于AutoCAD的命令行窗口 如:(setq a “hello,The world!”)

查看a的值时

在控制台窗口用:a(表示回车) AutoCAD命令:!a

2. Visual LISP控制台窗口中的独特特性

可以在新的一行上输入上一行没有完成的AutoLISP表达式 可在前输入多个表达式,并在Visual LISP给控制台返回一个值之前将为每一个表达式求值

光标在任意位置均可用移至提示符所在行上,如果选中的有文本,则同时移至提示符所在行(此功能可以复制)

使用Tab键可获得以前输入的文本,每按一次即可将上一次的文本显示,循环执行。Shift+Tab与Tab类似,只是方向相反

使用Tab键可以实现关联查找,如输入“(+Tab”会在以前输入的文本中查找以“(+”开头的文本

Esc键清除提示符下的所有字符,shift+Esc则离开当前行上的文本,并在新的提示符下准备接受用户的输入 3. 系统控制台的快捷菜单——单击右键

*小技巧:可在控制台窗口与AutoCAD命令行窗口之间复制和粘贴文本。

(四)文本编辑器概述

主要功能: 1. 彩色代码显示

2. 文本格式化 3. 括号匹配

4. 执行AutoLISP表达式(不离开文本编辑器) 5. 在多文件间进行查找 6. 语法检查

(五)加载和运行AutoLISP程序

1. 在AutoCAD窗口操作(略) 2. 在VLISP环境下操作

可加载完整的和部分的AutoLISP程序文件

加载完整的AutoLISP程序:文件——打开文件——选择文件内容——工具——加载编辑器中的文字

加载部分的AutoLISP程序:选择部分文件内容——工具——加载选定代码

四、 文本编辑器主要功能及其实现 1. 文件/编辑/保存操作

有关操作与Windows环境下的应用软件(如Word等)类似,这里从略。 2. 代码分色器

和在控制台窗口中相同,一旦在文本编辑器中输入文本后,Visual LISP会判断所输入的文本是否是一个AutoLISP内部函数、数字、字符串或者其它的已知元素,并用每一种元素自己的颜色显示这些文本。

默认的AutoLISP语言代码配色方案

AutoLISP元素 内部函数和被保护的符号 字符串 整数 实数 注释 括号 其他(如用户变量名等) 颜色 蓝色 粉色 绿色 浅蓝色 粉色,背景为灰色 红色 黑色 Visual LISP可以按照一些语言的种类确定代码颜色,方法是: 工具——窗口属性——按语法着色 用户可以自定义颜色配置,方法是:

工具——窗口属性——配置当前窗口——打开“窗口属性”对话框进行配置 3. 文本格式化

(1)设置AutoLISP代码格式的对话框

工具——环境选项——Visual LISP格式选项 (2)AutoLISP代码格式的总体式样

有普通、宽行、窄行和分栏四种式样。 4. 语法检查 (1) 括号匹配

向前匹配——将插入点(光标位置)移到和开括号相匹配的闭括

号之后

向后匹配——将插入点(光标位置)移到和闭括号相匹配的开括号之前

向前选择——插入点的移动和“向前匹配”相同,同时选中文本 向后选择——插入点的移动和“向后匹配”相同,同时选中文本 (2) 检查语法错误

应用彩色代码功能检查语法错误 用语法检查功能检查语法错误 主要检查的语法错误为: 圆括号不匹配 函数的参数数目不正确 函数的参数类型不正确 某些特殊函数的语法不正确

方法:工具——“检测编辑器中的文字”

如果检测到错误,就会在“编译输出”窗口看到错误信息。 五、 调试程序

VLISP提供的调试程序工具有:

监视窗口:在程序执行过程中查看变量的值

检验窗口:在“检验”对话框中显示指定对象的详细信息 “符号服务”对话框:符号可以是变量或函数名。通过符号服务对话框可以查看变量的当前值、函数的定义和设置变量及函数的一些特性

断点循环模式:在程序内部设置断点,中断程序的执行,并允许用户在中断时查看和修改对象值 六、 编辑和调试程序时的常见问题及排除方法 序号 1 2 3 4 问题类型 内部函数名输入错误 语法检查时提示:输入的列表有缺陷 语法检查时提示:XXXX中参数太少,(XXXX XX XX 。。。) 程序运行时提示:no function definition:XXXXXXX(没有函数定义) 程序运行时提示:参数类型错误:numberp:nil(参数类型为空) 程序运行时提示:参数类型错误:symbolp nil(符号为空) 程序运行时提示:进入无限循环(出现死循环) 执行结果不正确 原因 排除方法 5 6 7 8 9 下达命令后似乎没反应 源程序代码编辑不根据“代码分色”仔细 进行判断、修改 用“代码格式化”括号不匹配 或“括号匹配”检查、修改 双击该错误提示,引用内部函数时参回到文本编辑器进数数量不足 行检查、修改 内部函数名错;没检查“XXXXXXX”,有定义外部函数;分析原因、加以修元素间缺少空格等 改 设置断点、监视变变量没有赋值;变量、单步执行,直量名错误 到执行中断,在中断处分析错误 设置断点、监视变变量(符号)没有量、单步执行,直赋值,或变量(符到执行中断,在中号)名写错 断处分析错误 循环结构中循环条分析循环结构,加件表达式错误 以修改 设置断点、监视变算法错误(各种各量、单步执行,分样) 析错误加以修改 检查“Defun”函数“Defun”函数的的“变量表”中“/”“变量表”格式错的前后是否都有空误 格 常见错误:缺少闭括号,变量名、函数名输入错误,表中元素间缺少空格(至少有一个),输入程序代码有遗漏(整行或错行) 另外,还需注意,在出现死循环或进入无限循环而强制中断执行后,往往出现无法操作AutoCAD的现象。此时,需要使用“窗口”菜

单或者“视图”工具栏中的“激活AutoCAD”命令激活AutoCAD,才能继续对AutoCAD进行操作。

下面再看几个用AutoLISP语言编程画图的例子: 1. 绘制太极图案 程序源代码:

(defun yinyang(/ origin radius i-radius half-r origin-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 origin-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)

(princ) ;参见辅导材料P49 )

2. 绘制正弦函数曲线:Y=ASin(X+)

;给定坐标原点、周期数、振幅和初相角,绘制正弦曲线,自变量以

“弧度”为单位

(defun c:drawsin (/ lp lpx lpy n x step) ;见辅导材料P43-44 (initget 1) ;见辅导材料P47

(setq lp (getpoint \"\\n 输入坐标原点:\") ;见辅导材料P46 lpx (car lp) lpy (cadr lp) )

(initget 7) ;见辅导材料P47

(setq n (getint \"\\n 周期数:\")) ;见辅导材料P45 (setq a (getreal \"\\n 振幅:\")) (initget 1)

(setq w (getreal \"\\n 初相角(弧度):\")) (setq x 0 step 0.02 )

(command \"pline\") ;见辅导材料P49

(while (< x (* 2 n pi)) ;见辅导材料P41和P36 (command (list (+ (car lp) x) ;见表处理函数 (+ (cadr lp) (* a (sin (+ x w)))) )

;见辅导材料P36 )

(setq x (+ x step)) )

(command)

(command \"line\" lp (list (+ lpx (* 2 n pi)) lpy) \"\")

;画水平轴

(command \"line\"

(list lpx (+ lpy (* 2 a))) (list lpx (- lpy (* 2 a))) \"\"

) ;画垂直轴 (command \"zoom\" \"e\") (princ) )

3.绘制极坐标方程R=1+2cos2在区间[0,2]的图像 ;绘制极坐标方程曲线 (defun c:draw (/ cp)

(setq cp (getpoint \"\\n基点:\"))

(command \"ucs\" \"w\" \"ucs\" \"o\" cp \"pline\") (drawl 0) ;函数调用

(command \"zoom\" \"e\") ;图形极大化 )

(defun drawl (x / r)

(if (>= x (* 2 pi)) ; 参见辅导材料P41 (command \"3,0\" \"\" \"ucs\" \"w\")

(progn (setq r (+ 1 (* 2 (cos (* 2 x)))))

; 参见辅导材料P42

(command (list (* r (cos x)) (* r (sin x)))) (drawl (+ x 0.05)) ;函数的递归调用 ) ) )

思考题:

1. 如何绘制自变量以 “弧度”为单位的正弦函数曲线

Y=ASin(X+/4)。

2. 如何绘制自变量是以十进制的“度”为单位的正弦函数曲线

Y=ASin(X+45º) 。

3. 如何绘制余弦函数曲线Y=Acos(X+)。这里A和为常数)。 (1) X以弧度为单位 (2) X以十进制度为单位

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 99spj.com 版权所有 湘ICP备2022005869号-5

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务