AutoCAD模块化在通用件库开发中的应用
本文通过作者开发的一个传动件辅助绘图软件,介绍了一种零部件模块化设计方法,给出了具体的模块化拆分例子,并介绍了这种开发程序的一些关键要点,对进行AutoCAD二次图形开发很有帮助。
一、引言
笔者所在公司主产品是传动件,主要有齿轮、链轮、同步带轮和皮带轮等。有时一天需要加工数十种不同的产品,制图的工作量很大。如果完全满足车间生产需要,需要配备3~4名制图员。采用传统方式绘图,完成一个简单的传动件需要0.5小时左右,而复杂的非标产品(如有端面槽、锥孔结构)则需要0.75~1小时。另外一些大规格的链轮需要在加工中心铣齿完成,需要齿形图编制CNC程序,因此精确画出齿形就更重要。
鉴于公司95%以上传动件结构有很多类似的地方,为了提高制图效率,开发一款传动件制图的专用软件很有必要。
二、模块化编程的原因
公司试生产时,主要产品是链轮,笔者用VBA做了一个链轮绘图程序。随着生产规模的扩大,同步带轮、齿轮和皮带轮产品越来越多,需要在程序中增加绘制相关特征等功能。导致程序代码过多、结构复杂、修改困难,程序运行易出错。这种情况下,笔者尝试模块化编程,将相似的程序块和功能块分离出来,做成公用的模块,供不同的传动件程序调用。
三、模块化拆分
模块化拆分最为关键,一是将图形拆分成不同的功能块,二是将程序公用代码做成模块。
1、图形模块化
图1是一个典型的链轮传动件图样,可以按图2拆成四部分:①齿形模块;②轮毂模块;③辐板(减轻孔)模块;④孔模块。我们生产的绝大部分传动件(链轮、齿轮、皮带轮和同步带轮等)都可以拆分成这4个模块中的全部或部分模块。由于不同传动件的齿形差异,所以齿形模块这部分是不可以共用的。轮毂模块中的轮毂是广义的轮毂,包含两边没有轮毂(齿板)和轮毂低于平面等形状的图形。辐板模块是选用模块。孔包含直孔模块和成孔模块(台阶孔、键槽孔和锥孔等)两部分,可进行选择。
图1 链轮图
图2 链轮的模块化拆分
经过这样拆分后,仅有齿形模块为专用模块。不同的传动件制图时,要先选用相应的齿形模块,然后根据需要调用公共模块,即可组合实现不同的图形。
2、公用代码模块
画图时, 要设置不同的线型: 粗实线、细实线、中心线和虚线等,这个部分可以设成一个公用图层模块(SetLayers),通过这个模块调用不同线型。另外,笔者对C A D计算点、距离和画圆弧等功能进行了扩展,并加入了一些计算弦长、圆弧角等功能函数,将这块做成了公用函数模块(WhlsFun)。基本上所有的传动件(皮带轮除外)都有齿顶圆、节圆(分度圆)、齿根圆、节距和齿数等参数,这部分定义成公用参数模块(WhlsData),参数类型都是Global。
四、程序设计及实现
1、程序结构
程序模块如图3所示。程序结构、各个模块之间的相互关系如图4。
图3 程序模块
图4 程序结构
程序运行流程:通过ThisDrawing中的Wheels函数调用frmMain,通过选择进入不同的传动件界面,其中WhlsHub和ThrHoe这两个模块因为大多数零件都要调用,所以直接在传动件窗体中调用赋值。如果需要辐板设计和成孔设计,则将相应的信息传递到ConWhls模块中,然后调用相应的模块,完成后,通过ConWhls返回相应的传动件模块,完成传动件设计。点“画图”按钮,选择左右视图的插入点,完成图形绘制。
2、程序运行界面
按图5~图8运行界面流程,输入相应的参数,最后返回链轮设计窗体,点击“画图”按钮即可完成图1所示的链轮图形的绘制。其他齿轮、皮带轮、同步带轮的设计界面(如图9~图11)类似,不做逐一介绍。图12为生成的传动件参数表。
图5 选择传动件类型 图6 进入链轮设计窗体
图7 进入成孔设计窗体 图8 进入辐版设计窗体
图9 齿轮设计窗体 图10 同步带轮设计窗体
图11 皮带轮设计窗体 图12 参数表
3、程序设计思路和要点
公司产品中,齿板、单边轮毂和双边轮毂三种结构最常见,孔多数为直孔。所以,除了齿型参数外,轮毂结构、直孔尺寸输入也放在传动件窗体上(frmSprocket、frmGear、frmPulley和frmTimePulley)。点击“参数计算”按钮后,调用“WhlsHub”、“ThrHole”模块,将相应参数赋值。这样不需要调用其他窗体即可完成大多数的传动件绘图。
“ConWhls”模块中主要设置了三个参数:“IntegerPartType”用于保存传动件模块信息,参数“Bool chkList(0 to 3)”保存需要调用模块的信息,“Bool DesignList(0 to 3)”保存已经设计过后的模块信息。
进行辐板、成孔设计时,先将传动件模块信息、需要调用模块信息保存到“ConWhls”模块“PartType”、“chkList”中,然后再进入相关模块设计。设计完成后,将数据保存过的模块列表保存到“ConWhls”模块“DesignList”中,然后根据“PartType”值返回不同的传动件窗体,完成给各个模块设计。画图时,在传动件窗体中先完成齿形,然后调用“ConWhls”中的“DrawViews”过程,根据“DesignList”值调用各个模块的画图过程,再调用“WhlsHub.DrawHubView”过程,并判断是否需要调用“ThrHole.DrawThrHoleView”过程。
为了保证各个模块能吻合到一起,要将左右视图的插入点和各个模块视图插入点保持一致,左视图所有模块的插入点为圆中心(ptCen),右视图所有模块的插入点为左端面的中心点(ptCenR),另外设置一个参数View,“View=0”调用左视图,“View=1”调用右视图,这样通过过程DrawViews(ptCen,0)、DrawViews(ptCenR,1)可以分别画各个模块的左、右视图。
五、使用效果
本程序能方便地实现多种传动件(链轮、齿轮、同步同轮、V型带轮、平皮带轮和多楔带轮)的设计,而且可以很容易地实现程序的扩展,如产品类型扩展到渐开线花键,结构扩展到轴类零件。
传动件程序推广使用后,公司95%以上的产品只需8~12分,即可完成图形的绘制(包括标注等时间,绘图只需要0.5~1分)。一个人即可完成原先3~4人的工作量,为公司节省了大量的人力、物力,达到满意的效果。
由于齿型都是按照标准绘制,链轮的齿形图可直接导入GibbsCAM中编制铣齿程序;剖视面(右视面)可直接用来编制数控车床程序,这都减少了CNC编程的制图准备时间。
六、结语
模块化编程,尤其适合大型程序的编制,编程工作量减小,修改也方便快捷。将程序做成不同的模块,可读性增强;代码量减少了约30%~50%,代码重用率高。将相似的零件结构拆成不同的模块绘制,也是一种新颖的编程思路。