您的位置:网站首页 > CAD新闻

CATIA二次开发技术研究与应用

时间:2011-02-26 10:04:16 来源:

  l引言

  CATIA(Computer Aided Tri--dimensional Interface Applieatio.)软件:是由世界著名的航空航天企业法国Dassault Aviation公司开发的一款包含CAD/CAM/CAE/PDM于一体的三维制图软件。一经推出就凭借其完美的曲面处理能力被广泛应用于航空航天、汽车、船舶、电子等各种行业,尤其是航空航天业。

  CATIA为了满足不同用户的使用需求,它给用户预留了进行二次开发的接口,这些接口给用户提供了一系列开发工具,用以完成宏程序执行,用户界面定制,几何形体生成等功能。

  二次开发是对软件进行个性化和专业化的有效手段,可以使软件更好地为用户服务,对提高工作效率和产品质量,节约研发成本和缩短开发周期有着重要的作用。凭借CATIA软件在业界内的领先地位和其功能的完善性,把CATIA作为二次开发技术平台,具有很好的实际应用价值和创新价值。目前国内CATIA的二次开发研究还处于起步阶段,相关的资料相对较少,通过对CATIA二次开发技术进行一些探讨,以期能对读者起到抛砖引玉的作用。文中程序均在Windows XP系统下的CATIA P3V5R17版本中调试通过。

  2 CATIA二次开发技术概述

  一般而言,对CAD产品的二次开发工具主要有两大类:(1)是基于OLE Automation的工具,即第三方工具,如开发AutoCAD的VBA技术;(2)是CAD软件本身所提供的开发平台。同样CATIA接口也通过这两种方式与外部程序通信:进程内应用程序(In—Process Application)方式和进程外应用程序(Out—Process Application)方式。

  2.1进程内应用程序(1n—Process Application)方式

  进程内访问是指程序脚本和CATIA在同一进程内执行,这一方式主要通过CATlA的宏(Maco)命令运行。宏的方法比较简单,在CATIA环境中即可操作,但宏在运行过程中不能接受输入,无法改变参数值,智能程度较低,只适用于简单的重复性操作过程。

  2.2进程外应用程序(Out-Process Application)方式

  我们所说的二次开发大部分都是指的进程外开发方式。在此方式下,CATIA提供了多种二次开发的接口,最主要的有两种方法,一种是开放的基于构件的应用编程接口CAA V5技术,另一种是自动化对象编程CATIA Automation技术。前者是基于CATIA已有组件的定制开发,后者是交互方式的定制开发。两者的共同特点是程序脚本均由第三方软件开发,通过CATIA提供的连接组件实现两者之间的通信。

  2.2.1 CAA V5技术

  CAA是组件应用架构(Component Application Architecture)的缩写,是Dassault Systemes产品扩展和客户进行定制开发的平台。开发工具完全集成在Microsoft visual C++6.0环境中。

  对于准备使用CAA技术进行CATIA二次开发的用户,需要掌握的知识较多,除了对CATIA软件及其文档结构的全面了解之外,还需要具备Visual Basic、Visual C++(或Java)等语言的开发能力,同时还需具备连接端口等方面的知识翻。入门相对困难,下面要介绍的CATIA Automation技术在功能上虽不及CAA强大,但容易理解,入门容易,因此建议开发工作尽可能使用Automation完成,不足之处再借助CAA进行完善。

  2.2.2 CArI.IA Automation技术

  CATIA自动化是一种在解释环境下执行,在COM基础上实现的技术,继承了COM的与语言无关、进程透明特点,简化了COM的底层细节,应用更加广泛。COM(ComponentObjectModel,组件对象模型)是一种二进制兼容规范,使不同语言开发的组件在二进制可执行代码级基础上相互通信,增强了代码的重用性,提高了编程效率。这一技术的主要思想就是用一种程序去控制另一种程序,Automation并不能直接地获取和处理数据,只能间接地通过开放的对象、方法和属性,来获取、设置和处理数据。

  CATIA Automation提供了众多的接口对象和枚举数据类型,其中包含一些CATIA定义的专用数据常量。接口对象就是二次开发的API函数。数据常量在应用程序和CATIA进行数据通信时,可以直接引用,不需要重新定义,由于使用了自动化技术,信息的传递过程对应用程序来说是不可见的。

  (1)CATIA API介绍

  API(Application Programming Interface。应用程序编程接口)是一套用来与外界进行通信的,CATIA预先编好的一组函数。他们包含在一个附加名为DLL的动态链接库文件中,在Xl:programFilesDassault systemesBx2intel-acodebin目录下可以找到这些文件(X1为CATIA安装的盘符名称,X2为CATIA的版本号)。不同的CATIA文档对应不同的API,具体的CATIA文档结构,如图l所示。从图中可以看出,编程时文档结构与手绘时图形的树状结构顺序是一样的。

  

  图1 CATIA软件文档结构

  (2)CATIA重要对象介绍

  在CATIA Automation中,所有的数据都被封装成了对象的形式,并形成我们在建模时常见的逐层包含的树状结构。Application是根对象,下面又派生出许多子对象。每一个对象都有其自己的操纵集合的方法和属性,如添加(Add)、删除(Remove)、获取子项(Item)方法和数量(Count)属性等。

  Application是CATIA的根对象,由它派生出各种CATIA的操作对象。

  CATIA文档包含多种类型,如零件(Part)、产品(Product)、工程图(Drawing)等。而Documents对象就是这几种对象的集合,而Document则是上面所述文档中的某一种,对不同的文档有不同的属性和操作方法。Application对象建立好之后,可以通过Add方法添加一个新文档。

  从对象的名称里可以看出这两个对象储存的是关于文档视图的一些信息。对应二维和三维图形,Cameras对象包含了Camera2D和Camera3D两种对象。

  同Documents和Document对象关系相似,Windows对象指的是CATIA中所有打开的窗口的集合,Window对象则是指的某一特定窗口。Windows对象有—个常用的Active Window属性,它指代的是当前活动窗口。

  3 CATIA二次开发技术的应用

  3.1 CATlA二次开发前的准备工作

  在进行CATIA的二次开发之前,还应清楚两个问题。(1)选择合适的开发语言。(2)对CATIA编程的整体流程有—个清晰的思路。CATIA进行编程的整体流程可用图进行示意说明网。如图2所示。

  

  图2 CATlA编程流程表图

  3.2 Visual Basic语言开发CATIA实例

  作者结合所做课题,用VB语言开发的自动绘制螺旋桨的程序。过程清楚明了,易于理解

  3.2.1连接CATIA,创建APPlication对象

  启动VB程序,新建—个“标准EXE”工程。在菜单栏中点击“工程(P)一引用(N)”命令,在弹出的“引用一工程l”对话框中,把以“CATIA V5”开头的项全部选中,点击“确定”,如图3所示。这样VB就包含了CATIA的库文件,在编写代码时可以使用自动完成功能。

  

  图3在VB中包含CATlA类型文库

  连接VB和CATIA及获取Application对象代码:

  …

  setCATIA=Getobject("CATIApplication")

  …

  3.2.2创建Documents对象,进行草图1的绘制

  …

  Set sketchesl=bodyl sketches

  …

  3.2.3关键代码分析

  获得草图对象后,即可绘制草图,下面代码绘制一个圆心在原点,半径为45m的圆。并拉伸成高为30mm的螺旋桨基体。

  Setcircle2DI:factory2D1.Create Closed Circle(0.000000,0.000000,45.000000) Setpoint2Dl=axis2D1.Getltem(“原点”) ciIcle2Dl CenterPoint=point2D1

  …

  草图完成后,有关闭标编辑命令,并对零件进行更新。零件体美完成一项新的操作后,都要进行更新操作,否则无法体现操作效果。

  …

  Set shapeFactoryl=partI.ShapeFactory

  Set padl=shapeFactoryI.AddNewPad(sketchl,30.000000)

  设置辅助平面1,画桨叶第—条边线,平面2及边线2设置过程相同

  Set hybridShapesl=bodyl.HybridShapes

  Set reference4=hybridShapesI.Item(”平面.1”)

  Set sketc2=sketchesl.Add(reference4)

  创建多截面曲面并加厚Imm

  SethybridShapeLoftl=hybridShapeFaetoryI.AddNewLoft()

  对桨叶圆阵列,完成建模

  SetcircPatteml=shapeFactoryl.AddNewCircPattem(Nothing,l,2,20.000000,45.000000,1,1,reference22,reference23,Tme,0.000000,True)

  在VB中,点击“F5”运行程序.得到最终模型,如图4所示。

  

 

 图4 建模结果

  4结论

  CATIA作为一款高端的CAD/CAM软件,其应用领域正不断扩大,应用需求也越来越多,为了更好地利用CATIA软件资源,满足个性化使用要求,对CATIA进行二次开发已经成为软件技术人员必须掌握的一门技术。为未来我国制造业、装备业的发展提供充足的技术支撑。

  基于Visual Basic语言的软件开发,已可以实现软件的大部包括对于CATIA零件库的开发,数控加工的开发等各个领域,尤其适合中小企业的矗用需求。但我们可以看到,现代CAD软件二次开发工具都朝着面向对象技术发展,友好的人机容性和稳定的跨平台移植将成为必不可少的要求。同时,CAA平台的二次开发,不仅可实现VB语言的全部功能,还能在电子样机、协同设计、虚拟装配和虚拟制造等技术领域有更广阔的应用,因此推广和掌握CAA开发技术,特别是CAA VC++技术,将是未来发展的必然要求。