本文结合了vb在计算与数据处理方面的优点与autocad在精确绘图方面的优点,采用visual basic6.0驱动autocad 2000实现了齿轮加工的三维动画仿真,有较强的实用性。文中介绍三维参数化建模以及三维动画仿真的实现步骤,具有一定的代表性。
一、引言
齿轮加工动画仿真是齿轮设计中的重要环节,已有数篇关于该课题的文献。郭晓东采用基于autocad环境的objectarx软件包,用c++语言在autocad环境下实现了对锥齿轮切齿过程的仿真;罗庆生在3dsmax环境中开发了齿轮机构工作动画;冯涓在cad环境下,用autolisp语言建立了范成法加工齿轮的仿真演示程序。
以上各种方法都有自己的特点,本文用vb对autocad进行二次开发来实现齿轮加工的三维动画仿真,这是因为vb是目前最简捷的windows软件开发工具兼程序设计语言,能对autocad进行二次开发,可将autocad当成自己程序中的一个图形窗口对其进行打开、绘图等操作,能十分方便地实现齿轮加工的动画仿真。
二、仿真程序流程图与窗体设计
常见的齿轮加工方法有仿形法和范成法,范成法又包括齿轮插刀加工法、齿条插刀和齿轮滚刀加工法等。加工直齿圆柱齿轮的仿真程序流程,如图1所示。

图1 仿真程序流程图
本程序只用一个窗体,用四个文本框接收输入参数:齿数z、模数m、压力角α和变位系数x,用4个命令框控制子程序,1个命令框取消运行程序。该窗体运行结果如图2所示。

图2 仿真窗体
三、 仿真方法
1. 在vb中连接autocad
用vb控制autocad,是通过vb的object技术来控制autocad的对象及其方法和属性的。vb6.0在调用autocad 2000对象时,首先必须在vb中引用该对象库,方法是在vb的“projects/preferences”菜单中选择“autocadobjectlibrary”。
程序设计伊始,需定义一个autocad对象变量gearcad,通过该变量可以访问autocad的下级对象,定义方法为:dim gearcad as acadapplication。然后在vb的窗体代码中添加如下代码,即可在程序运行时启动autocad:
private sub form-load()
on error resume next
set gearcad=creatobject(“autocadapplication”)
gearcad.visible=true(显示autocad窗体)
end sub
在运行时要确保硬盘中已安装了autocad 2000。
2. 设置视点和着色方式
三维动画演示需设置三维视点,用如下语句实现:
gearcad.activedocument. activeviewport.direction=newdirection gearcad.activedocument.activeviewport = gearcad.activedocument.active viewport
其中,newdirection(0 to 2)为双精度型一维数组变量,存放视点的三维坐标。
用sendcommand方法实现图形着色,本程序中使用gouraud着色方式,可使三维模型表面光滑,富有逼真的质感。其代码如下:
gearcad.activedocument.send command“_shademode”+vbcr+“_g”+vbcr。
3. 齿轮毛坯的生成
在程序中先根据输入的参数计算出齿轮的齿根圆半径rf、齿顶圆半径ra、分度圆半径r、基圆半径rb、轮坯厚度height和轴孔半径r等。再利用addcylinder方法分别生成一个以ra为半径的一个圆柱体gear3d和一个以r为半径的圆柱体hole,再用布尔减(boolean acsubtraction)方法生成齿轮中间的轴孔。
4.刀具的生成
以齿条刀具为例,刀具模型形状和刀具实体创建完毕时,分别如图3和图4所示。

图3 齿条刀具模型

图4 仿真轮坯和齿条刀具
具体创建步骤如下:
(1)过0~5点,用addlight weightpolyline方法创建轻便多义线curve(0);
(2)镜像(mirror)刀具左部多义线curve(0),得到右部线段curve(1);
(3)用addregion方法得到刀具截面面域tool;
(4)用addextrudedsolid方法将刀具面域拉伸得到三维刀具实体tool3d;
(5)将单齿刀具实体tool3d进行单行阵列(arrayrectangular),得到多个齿tools;再将多个齿tools进行布尔加运算(boolean acunion)得到齿条刀具tool3d;
(6)将齿条刀具tool3d一端平移至与轮坯刚好相遇,准备切齿。平移尺寸根据变位系数x、模数m等参数算出。

5. 齿轮加工三维动画制作
仍以齿条插刀为例,动画制作主要步骤及代码如下:
(1)复制刀具tool3d得到tool3dcopy,用轮坯gear3d与复制所得刀具tool3dcopy的布尔减(boolean acsubtraction),完成刀具对齿轮毛坯的切削;
(2)刀具向前水平移动,每次移动距离(πm/n)mm,n为正整数;刀具沿齿轮毛坯上下移动(用move方法实现)切制出齿轮厚度方向齿形;
(3)轮坯gear3d绕自身轴线旋转,每次转动[2π/(nz)]弧度。
图5和图6分别为齿条插刀和仿形铣齿的动画仿真情形。

图5 齿条插刀动画仿真

图6 仿形铣齿动画仿真
四、应用实例
运行本程序时,只要输入齿数z等参数,就可以模拟各种齿轮加工过程。例如,改变齿数z或变位系数x可以观察根切过程及变位齿轮的加工。表1是仿真所得的标准齿轮、发生了根切的齿轮及正变位齿轮的对比。
五、结论
通过vb对autocad进行二次开发,实现了vb界面对autocad中对象的控制,既发挥了vb在科学计算、数据处理及界面友好和事件驱动方面的优势,又利用了autocad的精确绘图功能。我们借此方便地实现了齿轮加工的三维动画仿真,这在科研和教学方面有较大的实用性。