咨询热线:15190210002

三维仿真       

齿轮加工的三维动画仿真

  本文结合了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;



苏ICP备000214454号