杨 亚,蒋丽萍,王 健
(中国电子科技集团公司第二十一研究所,上海200233)
电机作为生产工业的“发动机”,目前发展十分迅猛,竞争非常激烈,在激烈的竞争环境中必须不断地提高竞争力和生产能力以适应电机多品种、短周期的生产特点。冲片是电机的关键零件,在特种电机研制开发中,电机冲片的绘制往往比较复杂,传统的冲片设计往往是通过在CAD系统中进行手工绘制,绘制过程比较繁琐,需要进行上百次的修改、裁剪、删除等命令来实现,非常费时。一旦某个参数需要调整,则整个冲片的设计需要重新进行。待电机设计完成后准备进行生产时,一般首轮小批量研制冲片的加工是通过线切割来实现,线切割编程时也需要对冲片的槽形进行建模,此处也需要对槽形进行绘制。待产品进行较大批量的生产,冲片的加工主要是通过单冲后进行落料或是直接通过复冲来完成。单冲模或复冲模的槽形与冲片槽形相仿,由于冲模设计需要考虑冲裁间隙,其槽形尺寸与冲片零件尺寸并不相同,仍需要重新设计。在电机的整个研发生产过程中需要多次绘制冲片槽形图,非常耗时,效率不高。势必需要引入新的设计方式来解决此类问题,以提高设计和生产效率。冲片的参数化设计应运而生。
通过使用 Visual Basic 6.0(以下简称 VB)对AutoCAD 2008进行二次开发,把常用的系列化的冲片进行参数化编程,可使冲片图形的绘制时间由原先的10 min以上,缩减到1 min以内,大大提高了设计和生产效率。在提高效率的同时,也增加了绘图的精准性,只要输入正确的参数就可以得到1∶1的dwg格式的冲片图,可以直接为设计和加工所用,极大提高设计开发的效率。同时把完成设计的冲片参数保存的相应数据库中,为后续产品的设计提供参考或借用,可进一步提高设计效率,节约成本,促进冲片的标准化设计。
本程序采用VB调用AutoCAD来建立参数化设计系统,首先要解决的是实现VB和AutoCAD的连接。VB应用程序与AutoCAD的连接ActiveX Automation技术应用的第一步。ActiveX Automation是一个建立在COM(Component Object Model)对象模型之上的标准通信开放协议,允许对象间通过一定的接口相互通讯。通过ActiveX Automation一个程序操纵另外一个应用程序中现实的对象,并且该对象具有它原有的属性和方法。ActiveX Automation由客户程序和服务器组成,服务器方实现客户方发出的请求。只要服务器程序提供一定的接口,客户程序就可以通过标准接口访问,使任何服务器程序对象实现自动化。这里可以理解为AutoCAD为服务器程序。我们所要编制的程序是客户端程序,它们之间通过ActiveX Automation建立连接,并操纵AutoCAD实现自动化绘图。
首先在VB主菜单上点击【工程】然后选择【引用】,在弹出的对话框中找到“AutoCAD 2008 Type Library”在其前面的方框中打钩,并进行确定。然后在VB中建立公共模块LinkCAD,以便在整个VB工程中都可以对此模块进行调用。主要程序如下:
对于一个绘制完整的二维工程图形,除了一些基本的结构线、辅助线外,还需要设计不同线条的图层、标注、文字说明等。所以在程序的开发过程中需要利用ActiveX Automation技术对图形的图层、文字、标注等进行处理,具体流程如图1所示。
图1 图形处理流程图
参数化设计图形的实现都是依靠程序代码来实现,在VB调用AutoCAD进行参数化绘图的过程中,最常见的是设置图形的各种线条和图层。在线型上,冲片图形的设计主要用到的是线段、圆和圆弧的绘制。下面主要对线段、圆和圆弧的实现方法进行说明。
1.3.1 线段绘制的程序实现
线段只需要两个端点就可以确定,所以只要确定两个点的坐标就可以确定一条直线了。首先定义要绘制线段的两个端点分别为PointO(0~2)和PointO1(0~2)以及一个线段的对象LineObjOO1,然后调用AutoCAD的接口函数Set LineObjOO1=acadApp.ActiveDocument.ModelSpace.AddLine(PointO,PointO1),将两个端点的坐标代入到对应的AddLine(PointO,PointO1)中即可完成线段的绘制。
1.3.2 圆的绘制的程序实现
确定一个圆的图形只需要原点坐标和半径即可绘制出圆。首先定义要绘制圆的圆心点为PointO(0~2)和一个圆的对象 CrlObjDos,然后调用 Auto-CAD的接口函数Set CrlObjDos=acadApp.Active-Document.ModelSpace.AddCircle(PointO,Rad),将圆心的坐标和圆的半径值代入到对应的AddCircle(PointO,Rad)中即可完成圆的绘制。
1.3.3 圆弧绘制的程序实现
确定一个圆弧的图形需要圆弧圆心坐标、圆弧的半径、圆弧的两个端点的坐标。首先定义要绘制的圆弧的圆心点为PointO(0~2)、圆弧的两个端点PointA(0~2)和PointB(0~2)以及要绘制的圆弧的对象 acadArc,通过 AutoCAD内建函数 Angle-FromXAxis(PointO,PointB)将 PointO(0~2)、PointA(0~2)和PointO(0~2)、PointB(0~2)分别代入该函数,则可得到∠AOX和∠BOX的角度(弧度),然后调用AutoCAD的接口函数Set arcObjAOB=acadApp. ActiveDocument. ModelSpace. AddArc(PointO,Rad,angleFrAOX,angleFrBOX),将圆心的坐标和圆弧半径值和上面求得的∠AOX、∠BOX代入到对应的AddArc(PointO,Rad,angleFrAOX,angleFrBOX)中即可完成圆弧AOB的绘制(如图2所示)。
图2 圆弧绘制图
基于电机冲片类型的不同,其计算方式有很大不同,需要根据不同类型的冲片划分程序模块。电机设计常用的8种类型槽形冲片如图3所示。下面将以圆底槽转子冲片图形的参数化的实现过程为例进行阐述。
图3 槽形图
1.4.1 半槽形的绘制
已知量槽数 N、槽口宽度 B0、冲片外径 Dos、齿宽BZ、小节圆直径 Dxj、大节圆直径 Ddj、槽口高度H0、冲片内径Dis,如图4所示。通过已知参数可求出a点坐标、b点坐标、c点坐标、d点坐标、e点坐标、f点坐标和O1点坐标。并求出作圆弧所需的各线与原点的角度即线段、圆弧和圆的方法制作出半个槽形。具体算法如下:
ao线相对于X轴的夹角∠AOX的计算:
a点坐标计算:
在求得∠AOX的角度后通过AutoCAD内建的PolarPoint函数可以求得a点坐标:PointA=acadA-pp.ActiveDocument.Utility.PolarPoint(PointO,AngleAOX,Dos/2)
b点坐标计算:
c点坐标计算:
d点坐标计算:
如图5所示,欲求d点坐标,先求出O2点坐标,参照a点坐标计算方法可以得到 O2点坐标:PointO2。然后建立一个原点为O2,X轴和Y轴分别平行于绝对坐标系的X轴和Y轴的坐标系,在此相对坐标系中求出d点坐标。
PointDd=acadApp.ActiveDocument.Utility.PolarPoint(PointO2,AngleAOX,Bz/2),此处的夹角与∠AOX大小相等。最后把d点坐标换算到绝对坐标中的到d点的X、Y坐标分别:
e点坐标计算:
齿底圆O1半径r:
然后参照d点坐标计算方法可求出e点相对于O1坐标系的坐标:
PointEe=acadApp.ActiveDocument.Utility.PolarPoint(PointO1,AngleAOX+π,r),最后可以得到 e点坐标:
待完成 a、b、c、d、e、f六个点的坐标值的计算后,分别进行线段和圆弧的绘制,即可完成半个槽形的绘制,即 a、b、c、d、e、f所围成的半个槽形图如图6所示。
图6 半槽形图
1.4.2 镜像方法
基于上述半个槽形绘制完成后,只要对此半边槽形进行镜像处理就可以完成一个完整槽形的绘制,这里ActiveX Automation为我们提供了针对圆弧和线段对象进行镜像方法Mirror(PointO1,PointO),这里PointO1和PointO是镜像中心线上的任意两点的坐标。通过此方法分别对AOB弧、bc线段、cd线段、de线段和eO1f弧进行镜像,就可以完成一个槽形的绘制。
1.4.3 旋转阵列方法
客户端程序通过ActiveX Automation接口程序控制AutoCAD 2008自动绘制一个完整的冲片图,可直接为设计所用。其它7类冲片可依据类似方法实现冲片的参数化设计,此处不做累述。
1.4.4 界面设计
为增加程序界面的友好性,采用单页面进行设计。采用选项卡控件(SSTab)来实现,把每一种槽形布置在选项卡的每一个标签中,节约页面资源,同时选项卡的标签可以根据需求增减,为后续程序的开发提供较好的扩展空间。基于槽形尺寸较复杂,且有相对位置关系,在必要参数的左侧以Image控件显示每一类槽形的示意图及示意标注,可最大限度的指导程序使用者的使用。具体使用方法以圆底槽为例,如图7所示。按照示意图的示意标注在右侧的参数栏中输入需要绘制冲片的相关参数,点击【生成冲片图】按钮,既可在AutoCAD 2008的环境中生成指定参数的冲片图,如图8所示。待设计参数确定后,只要点击【存入数据库】按钮即可将设计完成的冲片参数存入指定数据库。其它类型冲片与此类似。
对于冲片等较复杂、使用频繁且成系列化的零件,采用传统的手工绘制容易出错,绘制速度较慢,而采用参数化的尺寸驱动方式,绘图时间大大节省,降低错误发生,大大提高了电机设计、模具设计、估计工分、线切割加工人员的工作效率和质量,降低动强度。同时可将此种方法推广到电机设计其它零件中,如槽楔、非标的波纹垫圈等。本文介绍了冲片辅助设计的开发思想,在此基础上还可以进行补充完善,以增强软件的功能,提高实用性。
[1] 张树兵.Visual Basic 6.0中文版入门与提高[M].北京:清华大学出版社,1999.
[2] 苏金明.用Visual Basic开发交互式CAD系统[M].北京:电子工业出版社,2002.
[3] 张晋西.Visual Basic与AutoCAD二次开发[M].北京:清华大学出版社,2002.
[4] 徐 源,荆冰彬,贺利乐,等.AutoCAD2000二次开发技术[M].北京:人民交通出版社,2001.