1、CATIA CAA V5R19 二次开发详细教程CAA,全称 Component Application Architecture,组件应用架构。CAA 架构CATIA 本身是按照组件模型建立起来的,用户可以通过开发自己的 CAA 组件,对DASSAULT SYSTEMES 的 CATIA V5 进行扩展;也可以把用户自己开发的 CAA 组件结合起来,实现用户自定义应用。CAA 应用的框架结构遵从组件对象模型,有自己的框架结构。每个应用有至少一个框架(framework),每个框架有至少一个模块(module)。每个框架里面有一个IdentityCard.h 文件,这个文件通过宏“AddPre
2、reqComponent(framenwork,protected)”来声明“声明”这个框架的一些首先必备的其他框架名称,framework 是框架名称。CAA 的编译器就是通过 IdentityCard.h 文件,来把头文件搜索限制在首先必备框架所包含的接口中。每个模块下面定义了一个 Imakefile.mk 文件,这个文件指明了这个模块中所有文件在编译时用到的其它模块和一些外部库以及为编译器提供如何编译的模块必须信息,还指定在不同的操作系统下面编译时的一些可能的特殊要求。CAA 环境对 Cnext 能够运行的所有操作系统中采用同样的编译器,这为开发者提供了很大的方便,因为他们可以不需要知道
3、怎样用不同的编译器和怎么写 makefile。但是 MKMK 并不能做所有的事情,开发者至少要说明他们想要做什么。我们在自己的源文件中用到其它模块的接口,要在 Imakefile.mk 中进行说明。程序结构采用了 COM 组件模型,组件模型中有两个常用的概念:接口(Interface)和实现(Implement)。接口是一个包含许多纯虚函数的抽象对象,这些纯虚函数指明了接口支持的方法。实现是一个具体定义接口中的方法的对象,一个实现对象必须显式声明它支持哪些接口,还必须定义它支持的接口中的所有抽象方法,实现对象可以支持一个或多个接口,而客户应用只能通过这些接口与实现对象发生联系。RADE RAD
4、E,Rapid Application Development Environment,快速应用研发环境,是一个可视化的集成开发环境,它提供完整的编程工具组。RADE 以 Microsoft Visual C+6.0 为载体,开发工具完全集成在了 VC+环境中,并且提供了一个 CAA 框架程序编译器,但同时也限制了VC+的部分功能。可以说 CATIA CAARADE 是目前所有高端 CAD/CAM 开发环境中最为复杂、同时也是功能最为强大的一个。CAA V5 RADE 包括一系列工具:TCK(Tool Configuration Key)、MAB(多工作空间应用生成器)、CUT(C+单元调试管
5、理器)、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)原代码编译工具,它构建在平台无
6、关(UNIX 和 WindowsNT)的标准编译器上,它支持面向组件的设计模式。MKMK 提供一种统一的工具来编译和连接 CAA 应用而不管是用的什么编程语言(Fortran, C, C+, IDL, Express, CIRCE, .)。CUT 是单元调试管理器,CUT 用 mkodt 命令来运行传递给测试框架中的测试对象,通过选择不同的命令参数来决定选择测试一个对象或者所有对象。 CID 即 C+交互式面板,CID 根据软件开发人员的需求,支持从设计、开发到测试、推广及维护的整个开发设计周期,CID 提供对 RADE 产品的单点访问。尽管 CID 在 WindowsNT下运行,它能够产生
7、Unix 程序代码。 MAB 多工作空间应用生成器产品,它为 CATIA V5 应用程序提供一个集成统一的编译、链接、编辑、生成环境。MAB 能够承担多工作空间编辑,链接,运行代码生成,以及各工作空间之间依赖性的有效管理。MAB 还可以监控任一工作空间的源代码的变更,在整个编译过程中显示跟踪该变更,使编译过程只需要编译更改部分即可。添加 Workbench注意:关于 RADE 中会用到的 lib 库,在 vc 中的目录为 vc98/mfc/lib 目录下,如果你调试出现问题,比如 error 没有找到 mfc42u.lib 或者别的你就要从安装盘里面把所有的 lib 里面的文件考到你的 vc
8、对应安装目录下。1. 新建工作空间打开 VS2005,文件New CAA V5 Workspace,出现 New Workspace Confirmation 对话框,选择复选框,以后新建工程就不会弹出该对话框,然后选择 OK。在 New CAA V5 Workspace 中,With 选择 Mkmk,事先建立好你的开发目录,在 Workspace Directory 中指定你建立的工作目录,Tool level 选择你的版本,这里是 V5R19_B19。点击 Next,出现 Initializing tools 对话框,在初始化完成后,点击 Close,选择创建一个新的框架,点击 Finis
9、h,弹出New Framework 对话框。输入你的 Framework Name,这里为 MyFrame1,其余关于 Framework type 和 Framework function 选择默认选项, Framework 提供两种类型:应用和接口,功能也有三种:运用、测试和教学。然后点击 OK,弹出 CAA V5 Generation 对话框,点击 OK,就完成了。完成后的文件视图如下图,此时生成了一个带有 Framework 的Workspace。CAA 的开发提供了两种模式:批处理模式(Batch Mode)和交互模式(Interactive Mode)。我们开发主要用到的是交互模式
10、。在此模式下,可以创建两种交互界面:Workshop(Workbench)和 Addin。前者是创建一个新的模块,在这个模块中除了标准的命令,其余均由用户开发。后者指在已经存在的 Workbench 中插入新的工具条和命令,两种方法下面均会讲到。在建立工程后,必须先制定 CATIA 的安装路径(这是打开或建立工程后的首要任务)以载入开发所必须的 API 函数。点击 CAAV5 Workspace-Locate Prerequisite Workspaces,弹出 Prerequisite 对话框,点击 Add,添加CATIA 的安装路径。也就是定义 prerequisite,需要注意的是此路径
11、为intel_a 文件夹的上层路径。在这里,如果要引用其他 Workspace 的接口(Interface),也可以在这里指定此 Workspace 的路径。在建立工程后,必须先制定 CATIA 的安装路径(这是打开或建立工程后的首要任务)以载入开发所必须的 API 函数。点击 CAAV5 Workspace-Locate Prerequisite Workspaces,弹出 Prerequisite 对话框,点击 Add,添加CATIA 的安装路径。点击 OK,弹出调入所需要的文件对话框如下,点击 Close 完成。2、创建 module有了工作空间和框架,下面就是添加 module 了。选
12、择文件AddCAAV5 ProjectNew Module,弹出 New Module 对话框,输入你的 Module Name,这里是 MyModule1。Module Information 中选择 Shared object,其中Shared 选项表示模块共享,我们一般选择此选项,如果你做的是一个可执行的程序,如你的模块只有一个 main 函数,你就可以选择 Excutable,点击OK。弹出下面的产生文件对话框,你点击 OK,就创建了一个新的 Module,此时的文件视图如下:下面讲解插入资源,即菜单、对话框等。右键点击 MyModule1.m,选择将其设为启动项目。选择文件ADD C
13、AAV5 ItemCATIA ResourceCATIA Pattern。弹出 Insert CATIA Pattern 对话框,选择 Workshop,点击 OK,弹出Create Workshop/Workbench 对话框。其中 WorkObject type 可以是 Workshop 或者 Workbench,这里我们选择创建Workbench,输入 WorkObject Name 为 MyWorkbench,Associated Workshop 选择 PRDWorkshop,即为 Product 空间。在新创建的 Workbench 中,会包含Product 空间的一些基本标准命令
14、,如插入产品等。如果输入的是 Part 空间,则会包含 Part 空间的一些基本命令。接着点击 Next,弹出下图对话框,不用选择直接点击 Next,弹出的对话框是让你选生成类的前缀,可以不用去管,然后点击 finish 弹出生成文件对话框,点击 OK,即完成配置。完成配置后即可看到文件视图变化如下:更新工程 删除多余的文件和修改 mk 文件。在完成以上工作后,工程树的目录下并没有刚才建立的 workbench,此时点击 project-Select CAA V5 Projects,弹出下面对话框:选中所有复选框,点击 OK 完成对工程的更新,在总目录下也可以看到建立的 workbench;删
15、除最开始创建的 module,并在工程文件夹下将其删掉。在更新一次工程,不会出现删掉的 module 文件即可;(该 module 的作用是过度,在创建 workbench 添加 pattern 时,需要在 module 下才能添加)工程配置至此 CATIA 二次开发的 workbench 建立完成,但是进行开发时还有文件需要配置; IdentityCard.h 的配置在工程 FrameWork 的框架下有一个 IdentityCard 的文件夹,里面有一个 IdentityCard.h 文件,该文件包含的的是新建工程所调用的 CATIA 的内部组件,要在这里面声明,否则在编译时会出现错误。:
16、示例代码如下:(以上图片内容由学员输入成代码,便于复制,注意检查)AddPrereqComponent(“ProductStructureUI“,Protected);AddPrereqComponent(“ProductStructure“,Protected);AddPrereqComponent(“ProductStructureinterfaces“,Protected);AddPrereqComponent(“system“,Protected);AddPrereqComponent(“objectspecsmodeler“,Protected);AddPrereqComponent
17、(“objectmodelerbase“,Protected);AddPrereqComponent(“mathematics“,Protected);AddPrereqComponent(“knowledgeinterfaces“,Protected);/workbench AddPrereqComponent(“catiaapplicationframe“,Protected);AddPrereqComponent(“dialog“,Protected);AddPrereqComponent(“dialogengine“,Protected);AddPrereqComponent(“vis
18、ualization“,Protected);AddPrereqComponent(“visualizationbase“,Protected);/analysis prereqAddPrereqComponent(“catanalysisinterfaces“,Protected);AddPrereqComponent(“catanalysisbase“,Protected);AddPrereqComponent(“catanalysisresources“,Protected);AddPrereqComponent(“analysismeshingmodel“,Protected);Add
19、PrereqComponent(“catanalysisvisuinterfaces“,Protected);AddPrereqComponent(“interactiveinterfaces“,Protected);/mesh commands mechanical worldAddPrereqComponent(“mecmodinterfaces“,Protected);AddPrereqComponent(“mechanicalmodeler“,Protected);AddPrereqComponent(“newtopologicalobjects“,Protected); Makefi
20、le 文件的配置:在后面创建的模块(Module)都是单独或是合作完成某一项功能,在每个模块下都有一个 Makefile 文件;makefile 定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,至于进行更复杂的功能操作。在该文件里面也要添加该模块所连接的模块,作用于 C+的头文件类似。其示例代码如下:(1) 打开你的工作空间所在目录,找到你建立的 frame 框架文件夹,然后打开删除里面的第一次建立的 Module,这里就是 MyModule1.m,同时删除PublicInterface 文件夹下对应的建立的 module 的头文件,这里就是MyModu
21、le1.h。(2) 修改.mk 文件,因为里面未包含 CATIAPRDWorkshopConfiguration.h 这一个头文件的 Module,以写字板方式打开 MyFrame1-MyWorkbench.m 中的 Imakefile.mk 文件后在后面添加下面代码:LINK_WITH = $(WIZARD_LINK_MODULES) CATPrsWksPRDWorkshop (注意:每用一个新的 API 都得在相应的 module 下的 Imakefile.mk 添加其所在的模块名,在 frame 下的 Identitycard.h 里添加其所在的 frame 名。)(3)指定你的菜单出现
22、位置,打开MyFrame1/Cnext/resource/msgcatalog下面的MyWorkBench.CATRsc文件,修改MyWorkbench.Category=“Infrastructure“;里面引号里面的内容为 MechanicalDesign,也就是变为MyWorkbench.Category=“MechanicalDesign“,这样你的菜单就出现在“机械设计”里面了。(注意:在定义资源时,同一个 frame 下的所有资源都放在Cnext/resource/msgcatalog:在文件MyWorkBench.CATINs中,可以定义此Workbench以及其工具条、菜单的所
23、有名字(Title),定义格式为:MyWorkbench.Title=“MyWorkbench title“;在文件MyWorkBench.CATRsc中,可以定义此Workbench的图标(Icons)和其放置路径(Category)。前者咱不说明,后者说明如下:MyWorkbench.Category=“Infrastructure“,其中Category可以为:Infrastructure,MechanicalDesign,Shape,.。分别对应于已有的Workshop。在文件:MyFrame1.dico中(CNextcodedictionary),定义了此workbench的连接库)
24、下面进行编译调试,在编译之前先更新一下运行环境,选择 Create/Update Runtime View,弹出 Create RunTimeView 对话框。选中第一个 Copy file only if time stamp is different,点击 OK 即可。设置 MyFrame1 设置为启动项目。接着调试 mkmk,项目-mkmk,调试成功后,设置启动程序路径,点项目-(当前工程)属性,快捷键 ALT+F7然后是配置属性-调试-命令,这时点“浏览”,选择工程所在目录下的($工程目录)inter_abinCNEXT.exe。最后,调试程序,按 Ctrl+F5 即可,需等待几秒,启
25、动 CATIA 较慢。管理 CAA 文档使用 objectModelerBase 框架的标准接口,必须要创建session。Session 对象管理所有打开的文档,因此应该存在于所有文档加载之前,变成需要包括的文件有 CATSessionServieces 和 CATDocumentServices如何创建 Add-in在创建完 framework 之后,再创建一个新 module,其中创建 extension class,在文件-Add CAAV5 item-Component extension,如下图所示,Search workspace: D:CATIAB19,下面取消 search
26、in prerequisite framework only 的勾选,栓新后选择 CATIPrtCfgAddin 接口。其余具体的操作在file:/D:/CATIA/B19/CAADoc/Doc/online/CAACenV5Default.htmCreating an Add-inProviding the ResourcesYou should provide the resources for the toolbar, the menu and for all its commands. They are classified into the following: The toolba
27、rs title. The Creating Resources for Workshops and Workbenches article details all the resources 2. The command header resources in the command header resource files: titles, messages, icons, and the accelerators associated with the commands. This is described in Creating Resources for Command Headers 3 More about Internationalization and resources can be found in Internationalizing Your Client Application.如何添加资源?file:/D:CATIAB19CAADocDoconlineCAAAfrTechArticlesCAAAfrI18NHeader.htm创建完 toolbar,接着创建 command 时,应该首先设置之前创建的 framework为启动项目之后,再创建新模块。