1 引言
CATIA(Computer Aided Tfi-Dimensional InterfaceApplication)是法国Dassault System公司旗下的CAD\CAM\CAE(Computer Aided Design\Computer-Aided Manufacturing\Computer Aided Engineering)一体化软件。目前,CATIA是航空航天、汽车、以及电子工业领域中的主流CAD软件。CATIA具有统一的界面、数据管理以及兼容数据库和应用程序接口,针对二次开发,CATIA提供了一些接口和支撑这些接口的内部程序,使得设计人员可以更加方便的对产品进行参数化设计、二次开发等相关工作。参数化设计一般是对设计对象的结构、形状比较固定,可以通过一组参数来约定尺寸关系,参数与设计对象的控制尺寸是一一对应的,通过修改参数实现模型修改和联动的一种先进设计理念。在现代机械设计领域里,参数化设计在CAD领域中广泛应用,参数化设计更加能够体现现代CAD中的概念设计和并行设计思想。
针对传统的设计方法存在的局限性,重复性劳动等问题,文中利用VB6.0(Visual Basic6.0)编程语言、CATIA二次开发技术和Access数据库实现了非标准件的参数化设计。在一定程度上加快了设计效率、缩短了设计周期、提高了设计质量、解决了大数据管理难的问题。
2 非标准参数化设计
2.1 参数化设计的方法
在CATIA中进行参数化建模有两种方法:程序驱动法和尺寸驱动法,此两种建模方法各有利弊,实际使用时可以根据实际情况选择何种方法建模。
2.1.1 尺寸驱动法
尺寸驱动法是指模板零件基本结构不变的情况下,通过修改特征树的Parameters项中的变量值,就能重新生成结构相同而尺寸不同的一系列零件族。在CATIA软件中,任选某型号的零件,遵循正确的设计关系(几何约束和尺寸约束)绘制零件模型,当需要得到其他型号的零件时,设计人员根据给定的相关约束改变Parameters值,对模型的约束关系进行修改求解,使其几何元素或者特征的几何拓扑信息发生变化,并引起相关图形元素以及关系的联动,便可生成所需的零件。对于尺寸驱动法,尺寸驱动法的算法流程如图所示。
图1 尺寸驱动参数化流程
2.1.2 程序驱动法
程序驱动法是将建模过程中的所有API关系嵌入到应用程序中,通过程序控制执行几何表达式,完成所需的建立模型设计工作。程序驱动法可通过调用API对象建立模型,由程序代码生成模型,得到所需要的模型只需重新运行一次输入不同的参数值即可。程序驱动法的主要特点是代码量比较多,程序的编写难度也很大。
图2 程序驱动法参数化流程
2.2 参数化建模系统结构
文中以某卧式加工中心夹具为例,根据夹具零件在整套夹具中所发挥的作用分为底板、夹紧单元、定位单元三大类。典型的夹紧单元通常包括压块、限位块、螺栓等部件。定位单元比夹紧单元简单一般直接由定位块、定位销、连接板组成。整个卧式加工中心夹具中的零件以非标准件为主,标准件主要是螺栓、调整垫片等。文中的非标准件选择程序驱动参数化建模方法,此建模方法建模时调用API函数建立三维模型,前者的整个过程由代码完成,后者由人机交互完成。文中的标准件选择尺寸驱动参数建模方法,通过修改特征树的Parameters项中的变量值,就能重新生成结构相同而尺寸不同的一系列零件族。这种方法编写的代码比较少,可以很方便的建立零件库,使用尺寸驱动法时需要先对每一组结构相同的零件建立模板,零件的建模过程是基于参数化设计理念,即将具有代表性的几何形状定义为特征,并将其主要的尺寸设为参数变量,通过特征尺寸参数来生成特征实体。零件的参数化建模,首先需要根据零件特征的复杂程度确定出建模的过程和方法,然后提取零件中需要建立参数化的主要变量,以主要变量作为参数,埘零件模型进行参数化设计。
图3 参数化建模系统结构图
3 VB环境下的CATIA二次开发
VB是Microsoft公司推出的面向对象的可视化编程工具。VB具有快速的程序开发环境,界面设计以及操作比较简单,程序编写量相对较小,使用者可以方便地直接在动人机界面上修改参数。由于CATIA加入了ActiveX自动化服务功能,而VB又是最为常用的支持ActiveX技术的开发工具,以它作为开发工具,可使CATIA与Windows的其他程序的数据共享变得更加容易。
3.1 在VB中访问CATIA
启动VB软件,新建一个“标准EXE的工程”后,添加对CATIA类库的引用,这是必要的准备工作。在VB中访问CATIA时,脚本的运行不是由CATIA调用,CATIA作为一个OLE自动化服务器,VB程序是通过COM 接口来访问CATIA 内部的对象。因此,要对CATIA进行访问和操作,首先要连接到它的COM接口,可以通过如下代码实现:
Dim CATIA As Objec
如果CATIA已经运行,只需要用GetObject方法连接到CATIA即可;如果CATIA没有运行,就要用GetObject方法启动,一般将两种方法合并使用,即上述代码就可以实现对CATIA的访问。