基于AutoCAD VBA的参数化辅助轴设计系统
2014-02-07王鹏
王 鹏
(广州广日电梯工业有限公司,广东广州 511447)
0 前言
AutoCAD是目前使用广泛的通用交互式计算机辅助绘图与设计软件包,其特点是通用性强,具有多种工业标准和开放的体系结构,具有强大的二次开发功能。这些特点使得它在船舶、建筑、机械、电子、服装等多个领域得到了极为广泛的应用[1]。
在机械产品设计中要频繁使用通用零件轴,如果用传统的方法对轴进行设计,由于参数太多,计算复杂,绘图繁琐,不仅设计效率低,而且容易出错。目前各类CAD软件在机械设计中的应用日益广泛,利用参数化辅助设计的方法来研究机械零件的设计问题,已经成为现在机械设计中十分流行的研究方法[2]。因此,应用AutoCAD软件平台开发轴的参数化辅助设计系统不仅具有很高的实用价值,而且对机械设计现代方法的研究是一项有益的探索。
系统应用内嵌于AutoCAD软件平台的VBA技术进行二次开发,开发出了轴设计CAD系统,主要采用参数化设计方法,基于特征的实体造型理论,应用数据库的支持和尺寸驱动原理,使轴的尺寸变化自动转化成几何形状的变化,并直接输出图形,从而大大提高了设计的质量和绘图的效率。
1 AutoCAD ActiveX及VBA技术
ActiveX技术来源于OLE(Object Linking and Embedding)技术。AutoCAD ActiveX使用户能够从AutoCAD的内部或外部以编程方式来操作Auto-CAD,使许多不同的编程语言和环境及其他应用程序可以访问被显示的对象。对象是所有ActiveX应用程序的主要构造块,每一个显示的对象均精确代表一个AutoCAD组件。AutoCAD ActiveX接口中有许多不同类型的对象[3]。在AutoCAD中实现ActiveX接口有两大优点:更多的编程环境可以编程访问AutoCAD图形;与其他Windows应用程序共享数据变得更加容易。利用该项技术来进行AutoCAD二次开发,控制AutoCAD的环境,或同外部程序进行“对话”,或编写基于AutoCAD的数据库程序,有着显著的优越性。ActiveX Automation技术为AutoCAD的二次开发提供了一个崭新的天地[4]。
VBA(Visual Basic for Application)是AutoCAD内嵌的一种程序语言。它基于Visual Basic版本,是完全面向对象体系结构的一种编程语言,有着与VB几乎相同的开发环境和语法。允许VBA环境与AutoCAD同时运行,并通过ActiveX接口提供对AutoCAD的编程控制[5]。
2 系统的参数化理论设计方法
自20世纪80年代以来,基于特征的设计方法已被广泛接受,也提出了不少特征的定义。更为严格的定义:特征就是一个包含工程含义或意义的几何原型外形[6]。特征在此已经不是普通的体素,而是一个封装了各种属性(attribute)和功能(function)的功能要素。由此,可以利用较高层次的语义丰富的特征来代替简单的原始的几何元素作为基本元素,通过一定的组合法则来建模,这就是特征造型,特征的表示和建立就成为其中的关键。
轴类零件的结构特点是:不同的轴有不同的结构,但它们有共同的结构特征,如都由几节大小不同的圆柱段、倒角、键槽等组成。这些结构都很简单,但又有很大的相似性。可以利用参数化的理论设计方法,基于特征实体的造型方法去研究轴的参数化设计,并根据用户输入的相关轴段尺寸来驱动系统运行,使轴的设计可以通过修改参数来确定,从而实现了轴类零件的计算机辅助设计。
3 系统的总体构成
考虑到计算机辅助轴的设计过程具有如下特点及难点:设计前已知数据少;使用大量的设计及校核资料;结构复杂,结构信息难于合理存储传递。将轴的辅助设计系统分为以下几个模块。
(1)结构设计模块。提供逐段进行结构设计的方便友好的交互界面,随人机交互的进行,系统进行参数化绘图并合理存储轴的局部信息。
(2)数据处理与查询模块。由于轴的设计及校核涉及到大量的表格数据,为便于存储、计算和检索,系统利用Access数据库存储与设计及校核相关的数据。
(3)力学计算模块。将加载于转动件上的力转换为加载于轴上的力,并计算该力作用下产生的支反力、弯矩和转矩等。
(4)强度校核模块。按照弯扭合成强度条件,利用数据处理与查询模块所获取的参数和力学计算模块得出的数据,计算轴上受载荷处的弯矩、扭矩、当量弯矩和计算应力。并按照强度校核理论,计算轴上危险点处的安全系数,进行强度校核,并判断设计是否合格。
(5)参数化绘图模块。根据数据处理与查询模块提供的参数进行参数化绘图,并输出图形文件。提供用户布置载荷的接口。
4 计算机辅助轴设计系统的实现
4.1 设计流程
系统在应用界面设计上,采用了按设计顺序步骤逐步依次运行。主要采用窗体的形式来完成系统的运行。系统执行的流程图如图1所示。
图1 系统流程图
4.2 系统的界面设计
系统的操作界面主要包括:引导界面、辅助设计界面、结构设计界面、支承布置界面和载荷计算及强度校核界面,在此列出结构设计界面(如图2所示)和载荷计算及强度校核界面(如图3所示)。
图2 结构设计界面图
4.3 关键问题的解决方案
4.3.1 数据库的连接与查询
轴的辅助设计系统中,由于涉及到大量的数据处理与查询,因此建立了Access数据库以方便系统管理相关数据。
图3 载荷计算及强度校核界面图
常用的数据库访问技术有:数据访问对象DAO(Data Access Objects)技术,远程数据对象RDO(Remote Data Objects)技术和Active数据对象ADO(ActiveX Data Objects)技术。ADO的对象模型是所有数据访问接口对象模型中最简单的一种,它的优势在于它可用于各种程序设计语言,所以ADO技术成为数据库访问功能的新突破,开发的系统使用的是ADO访问技术。
在使用ADO对象之前,需要在VBA集成开发环境中,引用ADO的对象模型。连接数据库、打开记录集的实现程序代码如下:
'工程文件路径
Dim strPath As String
Dim adoCon As Connection '连接对象
Dim adoRs As Recordset '记录集对象
'首先获得当前的工程路径
strPath=ThisDrawing.Application.VBE.
ActiveVBProject.FileName
'连接数据库
Set adoCon=New Connection
adoCon.CursorLocation=adUseClient
adoCon.Open"Provider=Microsoft.Jet.
OLEDB.4.0;DataSource=" & Left(strPath,Len(strPath)-8)&"data.mdb;"
'打开记录集,查询表jianhb
Set adoRs=New Recordset
adoRs.Open"SELECT*FROM jianhb",ado-Con,adOpenForwardOnly,adLockReadOnly,
adCmdText
adoRs.MoveFirst
在使用记录集时,在各个记录集之间切换还可以使用记录集的Move、Move-First、 MoveNext、 MovePrevious、MoveLast方法。
在连接数据库获取数据完成之后,必须使用Close方法来关闭记录集和数据库连接对象,其程序代码如下:
adoRs.Close '关闭记录集对象
adoCon.Close '关闭连接对象
链接好数据库之后,需要从数据库中获取符合条件的参数,采用For…Next循环语句实现了对所需查询的表的遍历,同时使用If…End if语句来选取符合查询条件的参数,方便参数化设计。
4.3.2 参数化绘图
参数化绘图部分主要包括:图层的建立、绘制图形和尺寸标注三个方面。
(1)图层的建立。其关键代码如下:
‘创建“中心线”图层,设置其线型,线宽,颜色
Public NewLayerName As String
Public LayerObject As AcadLayer
NewLayerName="中心线"
Set LayerObject=
ThisDrawing.Layers.Add(NewLayerName)
On Error GoTo ERRORHANDLER
linetypeName="CENTER"
ThisDrawing.Linetypes.Load linetypeName,"acadiso.lin"
ERRORHANDLER:
LayerObject.color=acWhite
LayerObject.Linetype="CENTER"
LayerObject.Lineweight=acLnWt015
ThisDrawing.ActiveLayer=LayerObject
(2)图形绘制。其中直线和圆弧绘制的关键代码如下:
‘直线
Dim Line As AcadLine:
Set Line = ThisDrawing.ModelSpace.AddLine(end1,end2)
‘圆弧
Dim arcObj As AcadArc
SetarcObj1 = ThisDrawing.ModelSpace.AddArc(center1,r,sangle,endang)
其中end1,end2,为线段端点;center1,center2为圆弧圆心;r为圆弧半径;sangle为圆弧起始角度;endang为圆弧终止角度。
(3)尺寸标注。在系统中,标注主要采用对齐标注的方法,这种方法方便快捷,比较容易使用,对齐标注的定义程序代码如下:
Dim dimObj As AcadDimAligned
Set dimObj=ThisDrawing.ModelSpace.AddDimAligned(end1,end2,location)
其中end1,end2为标注端点,location为标注文字的对齐点。其他标注相关:
‘设置小数分隔符
dimObj.DecimalSeparator= “.“
‘显示直径符号Φ
dimObj.TextOverride=“%%C<>“
dimObj.Update
4.3.3 参数化载荷计算及强度校核
在用户输入参数和数据库连接完成之后,系统将进行参数化的载荷计算及强度校核。
(1)最小直径的估算是进行结构设计,载荷计算及强度校核之前必不可少的,在估算最小直径时需要获得功率P、转速n以及根据材料选取的系数A0。
计算过程由程序自动完成,其主要代码为:
dmin=A0*((P/n)^(1/3))
Textdmin.Text=dmin
同时,用户在进行结构设计时要保证轴段的直径大于所估算的最小直径,否则系统将提示错误。
(2)在进行载荷计算之前,必须先由用户布置轴的支承点和受载荷点,否则无法进行载荷计算。轴的支承点需要布置2个,受载荷点只需要布置1个,其程序实现的方法主要为鼠标获取点的坐标,调用GetPoint函数。其关键代码如下:
'获取点的位置
ptPick=ThisDrawing.Utility.GetPoint(,“指定点:”)
在布置支承点和受载荷点时系统会弹出对话框,提示用户在指定的位置来布置,以方便系统获取计算载荷时所需的力臂长度。
(3)在常规的轴设计当中,进行载荷计算时都需要构建力学模型,以方便轴的计算。在开发的系统当中,进行载荷计算时同样要构建力学模型,但是这里的力学模型需要进行转化,转化成程序代码的形式反映出来。所需计算的参数有切向支反力,切向弯矩,径向支反力,径向弯矩,扭矩,总弯矩等。
(4)在轴上载荷都计算完成之后,为了校核轴的强度,需要根据公式计算轴的计算弯矩,得出计算弯曲应力之后,即可针对危险截面(即计算弯矩大而直径可能不足的截面)作强度校核计算。系统是按弯扭合成应力校核轴的强度,得出计算弯曲应力之后,系统跟据用户所选择的材料热处理方法查询许用弯曲应力[σ-1],并与计算弯曲应力进行比较,判断轴的结构设计是否合理。
4.4 运行结果
(1)打开AutoCAD软件,选择【工具/宏/加载工程】。
(2)在弹出的对话框里找到存放系统的目录,选中“计算机辅助轴设计系统.dvb”工程文件,并单击“打开”按钮。
(3)系统弹出Microsoft Visual Basic编辑器,选中User窗体,单击运行按钮或者按下F5键系统便开始运行。
(4)系统运行,由用户根据系统提示进行轴的计算机辅助设计。运行结果如图4、图5所示。
图4 载荷计算结果
图5 强度校核结果
5 结论
(1)基于AutoCAD VBA的二次开发,可以为计算机辅助设计带来了很大的灵活性,进一步增强程序的功能和代码重用性,应用上述技术开发专用CAD系统是一种行之有效、方便实用的设计方法。
(2)系统基本满足了轴设计过程当中的基本要求,用户只需根据输入的参数,即可由系统自动完成辅助结构设计及强度的校核,并输出零件图形。为设计人员提供了方便的设计手段。
[1]李长勋.AutoCAD ActiveX二次开发技术[M].北京:国防工业出版社,2005.
[2]肖刚,李学志,李俊源.机械CAD原理与实践:第2版[M].北京:清华大学出版社,2006.
[3]张帆.AutoCAD VBA开发精彩实例教程[M].北京:清华大学出版社,2004.
[4]张帆.AutoCAD VBA二次开发教程[M].北京:清华大学出版社,2006.
[5]李庆兴,李继升,范顺成,等.基于AutoCAD VBA平台的机械零件工作图参数化及自动生成系统[J].机械设计,2008,25(1):68-70.
[6]王彩英.基于特征的轴类零件参数化设计的研究[J].机 电 产 品 开 发 与 创 新 ,2008,21 (5):131-133.