利用VB实现AutoCAD二次开发中参数化绘图
2014-08-26陈炜
陈炜
摘 要:通过参数化绘图的背景分析和AutoCAD二次开发五种常用工具的分析比较,利用VB对AutoCAD二次开发实现参数化绘图是可行的。再利用弹簧绘制为例详细描述了VB实现参数化绘图的具体步骤。更加确定了VB实现AutoCAD二次开发中参数化绘图是具有优势的,它缩短绘图操作时间,提高工作效率。
关键字:参数化绘图;AutoCAD ;二次开发;VB
中图分类号:TP39 文献标识码:A
一、实现参数化绘图的背景
AutoCAD作为一款工程方面非常出色的软件,因其优秀图形处理能力和通用性而得到广泛普及与应用,正因为该软件通用性很强,从而在进行具体图形绘制和数据处理综合应用的时候自身所具有的功能就显得相形见绌。比如在机械制图时,如螺母、垫圈、轴承、弹簧、齿轮等一些标准件、常用件的设计和绘制,都需要用户逐一绘制,这些标准件都会有大量数据,用户绘图时必须查找各种标准,不仅费时而且容易出错。为了解决上述问题,尽可能的不重复劳动,提高设计效率,减少设计开发周期,因此我们想到了实现图形的自动绘制方法。根据机械制图中各种标准件结构特点,同一个系列内,它们基本结构相似,仅是尺寸上有些变化。对于齿轮、弹簧等常用件,尽管不能像螺栓、螺母那样完全实现标准化,但可以实现部分结构标准化。比如弹簧,我们只需输入起始半径、垂直增量、水平增量、圈数、分段数等参数,即可编程实现该二维或三维图形的自动绘制。
二、VB实现参数化绘图的优势
为了使重复性较大的计算绘图工作量减小和更加规范准确,AutoCAD提供了二次开发的功能接口。进行其二次开发的常用工具目前大体有五种,分别是ADS、ObjectARX、AutoLISP、.NET、VBA。其中,ADS是AutoCAD的C语言开发系统,直接利用C语言编译器,因涉及到C语言的编程它的开发不易上手并且难度较大;ObjectARX的功能强大,效率较高,但是开发人员必须掌握VC++,难度很大,而且开发效率不高,容易出现内存泄漏;AutoLISP语言虽然其语法规则简单、灵活,但是缺乏综合性的开发环境,综合能力差;.NET是微软新一代技术平台,功能强大,但对开发环境要求较高,而且可供学习参考的资料较少;VBA即McrosoftOffice中的Visual Basic(简称VB) for Applications开发环境,被集成到AutoCAD中,从AutoCADR14版本以后,就增加了 ActiveX Automation 自动化服务的功能。而VisualBasic是Windows 操作系统下最常用的支持 ActiveXAutomation 技术的开发工具。VB是一种面向对象的可视化程序开发工具,它入门简单易学,具有快速的程序开发环境,代码的编写量小,开发人员改动界面方便直接、所见即所得,并且支持各类最新的 Windows 技术,拥有强大的数据库编程能力,广泛使用于Windows平台上。
根据以上五个工具的比较,利用VB对AutoCAD二次开发实现参数化绘图将更具优势,用VB语言编程开发,将AutoCAD看着VB程序中一个绘图的窗口,对其进行打开、编辑、绘图、打印和关闭等操作,其速度相对较快。为此,可以作为我们进行程序设计的首选工具。
下面以弹簧绘制为例用VB实现参数化绘图对AutoCAD进行二次开发,解决机械制图中标准件、常用件的参数化绘图问题。
三、VB实现参数化绘图的系统设计
1 建立主界面。打开在Microsoft Visual Basic设计工具,选择文件中“新建工程”,进入窗体设计器。首先,在“工程”菜单中选择“移除 Form1”。然后,在“工程”菜单中选择“添加 MDI 窗体”,即可添加MDIForm1主控窗体。最后,在“文件”菜单中保存该工程,将窗体保存为 默认文件名,把新工程保存为“VB实现参数化绘图.vbp”。
2 在MDI主窗体中建立菜单。点击 MDIForm1主窗体,在其上右击,选择“菜单编辑器”,在弹出的对话框中根据需求完成相应的菜单设计,注意每个菜单的名称的命名必须符合语法规范并要有意义,这里统一用菜单名的拼音首字母命名,如标题为“弹簧”,名称为“th”。
3 添加子窗体。选择“工程”菜单中“添加窗体”,在弹出的对话框中选择“窗体”并打开,然后修改新建窗体的MDIChild属性为“True”,最后保存该窗体。
采用相同的方法,将2中所有菜单全部建立好相对应的子窗体,并在菜单中用“窗体名.show”命令调用各自子窗体。如:“弹簧”子菜单,打开它对应的窗体(窗体名为frmTh),则用命令 frmTh.show,代码如下:
Private Sub th_Click()
frmTh.show
End Sub最后添加Label、TextBox、CommandButton控件完成参数化绘图窗口的设计。
4编程流程图。开 始->连接CAD->参数赋值->根据每圈分段数计算角度间隔->用循环计算每个控制点坐标->把所有控制点连接成多段线->绘制截面圆生成面域->完 成->结 束
5 实现结果和结论
(1)输入参数如下时,绘制弹簧并生成弹簧图形每一圈大小都相同,且弹簧圈数为4圈。
起始半径:60,垂直增量:10,水平增量:0,旋转圈数:4,分段数:50。
(2)当改变参数为下所示时,生成弹簧图形每一圈大小按增量递增,其弹簧圈数为3圈。
起始半径:30,垂直增量:20,水平增量:10,旋转圈数:3,分段数:100。
通过上述2组数据的实验,输入的参数不同生成的图形也不同,说明VB实现参数化绘图是可行的。
通过VB编程对AutoCAD进行二次开发,可以使标准件绘图繁琐的问题得以圆满解决,操作起来也简单易行。大家还可利用ImageList与ToolBar控件制作一个工具条,通过工具条按钮点击常用菜单命令绘图将会更加方便快捷。
参考文献
[1]张帆.AutoCAD VBA二次开发教程[M].北京:清华大学出版社,2006.
[2]刘永波.分析AutoCAD二次开发方法的研究[J].软件.2013.34(5).