iCAx开思网

标题: 【建议】答CATIA CAA二次开发 [打印本页]

作者: grail0922    时间: 2004-3-6 19:57
标题: 【建议】答CATIA CAA二次开发
CATIA提供了二次开发平台CAA,以实现用户对CATIA功能的扩充。CAA包括C++ & Java API,CAA V5百科全书,LUM(Lisence管理),以及RADE(Rapid Application Development Environment)等一系列工具。RADE是在WindowsNT环境下为创建C++控件构架程序(CAA)的快速开发环境。
CATIA本身是按照组件模型建立起来的,用户可以通过开发自己的CAA组件,对DASSAULT SYSTEMES的CATIA V5进行扩展;也可以把用户自己开发的CAA组件结合起来,实现用户自定义应用。图4-1表示通过开发CAA V5组件实现新产品的示意图。结合课题研究需要,我们开发出了结构件重建的一些专用模块,和CATIA系统原有模块结合,增强了系统的功能。
1 RADE工具
CAA V5 RADE包括一系列工具:TCK(Tool Configuration Key)、MAB(多工作空间应用生成器)、CUT(C++单元调试管理器)、MKMK(CAA编译工具) 、CID(C++交互式面板)等,以插件的形式与MSDev VC++集成到一起。然后借助于这些工具在MSDev   环境下开发自己的CAA组件。
TCK管理RADE环境,TCK命令是用来管理开发工具包的安装,用来创建一个工作环境。当在WinowsNT上用CAA V5的可视化创建工具(以插件形式嵌入Microsoft Developer Studio),tck_init 和 tck_profile 命令在打开一个V5的工作区时被自动调用。
MKMK(多工作区应用编译器)是DS(Dassault Systems)原代码编译工具,它构建在平台无关(UNIX和WindowsNT)的标准编译器上,它支持面向组件的设计模式。MKMK提供一种统一的工具来编译和连接CAA应用而不管是用的什么编程语言(Fortran, C, C++, IDL, Express, CIRCE, ...)。
CUT是单元调试管理器,CUT用mkodt命令来运行传递给测试框架中的测试对象,通过选择不同的命令参数来决定选择测试一个对象或者所有对象。
CID即C++交互式面板,CID根据软件开发人员的需求,支持从设计、开发到测试、推广及维护的整个开发设计周期,CID提供对RADE产品的单点访问。尽管CID在WindowsNT下运行,它能够产生Unix程序代码。
MAB多工作空间应用生成器产品,它为CATIA V5应用程序提供一个集成统一的编译、链接、编辑、生成环境。MAB能够承担多工作空间编辑,链接,运行代码生成,以及各工作空间之间依赖性的有效管理。MAB还可以监控任一工作空间的源代码的变更,在整个编译过程中显示跟踪该变更,使编译过程只需要编译更改部分即可。
2 CAA应用的基本框架
CAA应用的框架结构遵从组件对象模型,有自己的框架结构。每个应用有至少一个框架(framework),每个框架有至少一个模块(module),每个CAA应用有如图4-2的文件树模型。
每个框架里面有一个IdentityCard.h文件,这个文件通过宏“AddPrereqComponent(framenwork,protected)”来声明“声明”这个框架的一些首先必备的其他框架名称,framework是框架名称。CAA的编译器就是通过IdentityCard.h文件,来把头文件搜索限制在首先必备框架所包含的接口中。
每个模块下面定义了一个Imakefile.mk文件,这个文件指明了这个模块中所有文件在编译时用到的其它模块和一些外部库以及为编译器提供如何编译的模块必须信息,还指定在不同的操作系统下面编译时的一些可能的特殊要求。CAA环境对Cnext能够运行的所有操作系统中采用同样的编译器,这为开发者提供了很大的方便,因为他们可以不需要知道怎样用不同的编译器和怎么写makefile。但是MKMK并不能做所有的事情,开发者至少要说明他们想要做什么。我们在自己的源文件中用到其它模块的接口,要在Imakefile.mk中进行说明。
程序结构采用了COM组件模型,组件模型中有两个常用的概念:接口(Interface)和实现(Implement)。接口是一个包含许多纯虚函数的抽象对象,这些纯虚函数指明了接口支持的方法。实现是一个具体定义接口中的方法的对象,一个实现对象必须显式声明它支持哪些接口,还必须定义它支持的接口中的所有抽象方法,实现对象可以支持一个或多个接口,而客户应用只能通过这些接口与实现对象发生联系。
由于客户应用只能与组件的接口打交道,而不能直接与组件的具体实现部分打交道,这样的一种结构有很多优点,首先,同样的接口可以对应多个不同的实现,同样的接口调用不同的具体实现体现了规范性。另外,如果需要修改接口的实现方法,客户不需要对接口调用的源代码进行修改。CAA中的所有接口都从IUnknown/CATBaseUnknown继承,所有的实现对象都是从CATBaseUnknown继承。
CAA中创建一个组件的有两种方法是,一种是通过全局函数,另一种是通过类厂(Factory)的形式。类厂是一个特殊的对象,它包含了组件创建的方法,类厂创建的实现对象并返回对象上的接口,采用类厂的形式使客户应用不直接参与对象的创建,最小化“耦合”,而且使对象的创建得以集中管理。
CAA组件中,接口对象和实现对象都可以通过C++的类继承来扩充功能。另外,还可以通过实现对象扩展的特殊机制,来支持新的接口,增强组件的功能。所谓扩展(Extension)也是一个对象,它给已经存在的实现对象增加新的功能。扩展对象通过具体实现接口中的方法来创建组件,扩展对象可以对已有的实现对象和扩展对象进行扩展。如图4-3所示,通常,CAA的组件包括三部分:基本实现对象,接口对象和扩展对象。每个组件实现的所有接口都记录在一个字典(Dictionary)文件*.dico中。
作者: pantherlu    时间: 2007-11-24 18:01
顶!谢谢!
作者: cslm2007    时间: 2007-11-28 14:56
好东西,呵呵
作者: gcy1234567    时间: 2008-9-24 10:43
都是我想学的~~楼主知道CAA如何向选中装配体特征树结点添加右键菜单吗?望请教!
作者: nihai0711501129    时间: 2011-11-14 11:57
请问Catia是否有基于.NET平台的二次开发啊
作者: yfy123    时间: 2012-2-21 16:54
请问楼主有caa的下载资源吗?急需!!先行谢过了!




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3