APP下载

基于AutoLISP的AutoCAD二次开发技术及其应用研究

2021-09-10余志伟

湖北农机化 2021年16期
关键词:编辑器箭头二次开发

余志伟

(江汉大学 智能制造学院,湖北 武汉 430056)

0 引言

AutoCAD是目前较为先进的计算机辅助设计软件之一,广泛应用于机械、建筑、化工等领域。其功能强大、易学易用,并具有良好的开放性。但作为通用软件无法解决实际使用中出现的所有问题。因此,需要在AutoCAD上进行二次开发,以满足用户的实际需要,提高使用效率,以达到事半功倍的效果。

1 AutoCAD二次开发技术简介

1.1 ADS

ADS是指AutoCAD Development System。在AutoDesk公司开发的AutoCAD中,这是在R11.0-R14.0所用的开发方式。它包括一组AutoCAD专用的C函数库及头文件。一个ADS应用程序是一系列经过编译和连接的C函数,这些函数作为AutoCAD的外部函数由AutoLISP调用。ADS应用程序是执行文件,可以在AutoCAD中运行。它和AutoCAD建立通讯联接,获得执行的结果。自AutoCAD2000起被淘汰已被融合于ObjectARX中。

1.2 ObjectARX

ObjectARX程序本质是WindowsDLL程序,它们之间均采用Windows消息传递机制直接进行通信。还可以直接调用AutoCAD的函数、访问数据库和图形系统。通过ObjectARX创建的自定义实体与AutoCAD内部实体没有任何区别。由ObjectARX定义的外部命令与AutoCAD内部命令的执行机制是一样的。

1.3 AutoLISP

AutoLISP是AutoCAD内部解释型的API语言,它适用于交互式程序的二次开发,它不是面向对象的语言,而是一种人工智能语言[1]。AutoLISP语言具有强大的图形和数据处理能力,是工程专业人员常用的AutoCAD二次开发工具。

通过AutoLISP,用户可以充分调用AutoCAD的现有资源,修改现有命令或者开发自己的新命令。也可以修改AutoCAD命令的功能,扩充其用途。VisualLISP是AutoLISP语言的更新和加强,提供了与AutoCAD ActiveX对象的接口函数,扩展了AutoLISP应用程序的功能。

VisualLISP具有独立的集成开发环境(IDE),改善了Active X和AutoCAD对象模型之间的接口特性,大幅缩短了应用程序的开发周期。VisualLISP编译成的二进制代码无法直接读取,所以它生成的应用程序更安全。VisualLISP程序调试过程简洁,效率高。编译后程序的运行效率比解释型AutoLISP程序快几倍[2]。

2 AutoLISP程序的运行方式

对于简单的AutoLISP程序,或用DEFUN函数定义的简单用户函数,AutoLISP程序的执行过程可直接在AutoCAD环境中的“命令:”提示符运行。对于复杂的AutoLISP程序,需采用VisualLISP编辑器先编译好,在用LOAD函数装载后运行。如果程序中没有DEFUN函数,则便加载边运行。否则装载后只在“命令:”提示符下输入命令名或函数名即可运行[3]。

AutoLISP 程序编辑及运行过程如下:

(1)启动 AutoCAD。

(2)打开AutoCAD的工具菜单,选择AutoLISP(I)的VisualLISP编辑器(V)。

(3)打开VisualLISP(V)编辑器,新建文件编写程序。

(4)完成程序编写并保存。

(5)打开VisualLISP编辑器(V),加载所保存的文件。

(6)在_$提示符下,用LOAD函数加载程序,其格式为:(LOAD"文件名.LSP")加载成功返回函数名。

(7)在_$符号下或在AutoCAD的“命令:”提示符下执行函数。

3 AutoLISP二次开发实例

(1)《机械制图》中指引线标注样式有3种形式。第一种样式如图1中的(a)所示,数字下面加下划线。第二种样式如图1中的(b)所示,数字外面画圆圈表示。第三种样式如图1中的(c)所示,数字直接标注在指引线末端即可。

图1 指引线标注

通过AutoLISP编程,可以实现自动绘制需要的图框样式,部分程序代码如图2所示。

图2 指引线标注样式程序代码

(2) 在装配图中,一般零件的指引线标注末端为小黑点。薄片类零件在剖视图中,通过涂黑画法替代剖面线,这时指引线的末端用实心三角形箭头代替小黑的。如图3所示。

图3 常见指引线末端样式

在AutoCAD中是通过DIMBLK(系统变量)来设置尺寸线末端显示的箭头块。其类型为字符串,保存位置在图形,通过""来设置其初始值。其中常用的形式为实心闭合"";点"_DOT";小点"_DOTSMALL";空心点"_DOTBLANK";空心小点"_SMALL"和无"_NONE"。要恢复默认设置(实心闭合箭头显示),请输入单个句点 (.)。根据需要还可以输入用户定义的箭头块名称。其中要注意的是注释性块不能用作标注或引线的自定义箭头[4]。可以通过AutoLISP setvar函数来给系统变量赋值,从而改变箭头块的形状。

(3) 一级和二级圆柱齿轮减速器是《机械制图》和《机械设计》课程里面要画的大作业,由于零件的种类特别多,所以指引线的编号数字也多。学生画的时候普遍感觉到难度较大,特别是在绘制零件序号的时候比较麻烦。在原有的AutoCAD中,一般采用快速引线命令进行标注。每次都需要手动修改每个零件的序号,标注起来非常的繁琐,效率低下。通过指引线标准命令的二次开发,使用起来方便快捷,提高了绘图效率。

通过AutoLISP编程,可以自动实现零件序号数字的自动增加,大幅提高绘图速度。部分程序代码如图4所示。

图4 自动标号程序代码

4 结语

AutoCAD是目前较为先进的计算机辅助设计软件之一,其功能强大、易学易用,并具有良好的开放性。但作为通用软件无法解决实际使用中出现的所有问题。以AutoLISP语言作为开发工具, VisualLISP编译环境作为开发平台,对AutoCAD进行二次开发,以满足用户的实际需要,以达到事半功倍的效果。

猜你喜欢

编辑器箭头二次开发
AutoCAD 与PDMS 二次开发在三维复杂形体设计建模上的应用
司空见惯感觉烦 锁屏画面快走开
例谈对高中数学教材中习题的二次开发
编辑精选APP
浅谈CAD软件二次开发的方法及工具
你距离微信创作达人还有多远?
例谈课本习题的“二次开发”
运载火箭
寻宝历险记(6)
天地大转盘