CATIACAA二次开发教程文档格式.docx
《CATIACAA二次开发教程文档格式.docx》由会员分享,可在线阅读,更多相关《CATIACAA二次开发教程文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
CAA的编译器就是通过IdentityCard.h文件,来把头文件搜索限制在首先必备框架所包含的接口中。
每个模块下面定义了一个Imakefile.mk文件,这个文件指明了这个模块中所有文件在编译时用到的其它模块和一些外部库以及为编译器提供如何编译的模块必须信息,还指定在不同的操作系统下面编译时的一些可能的特殊要求。
CAA环境对Cnext能够运行的所有操作系统中采用同样的编译器,这为开发者提供了很大的方便,因为他们可以不需要知道怎样用不同的编译器和怎么写makefile。
但是MKMK并不能做所有的事情,开发者至少要说明他们想要做什么。
我们在自己的源文件中用到其它模块的接口,要在Imakefile.mk中进行说明。
程序结构采用了COM组件模型,组件模型中有两个常用的概念:
接口(Interface)和实现(Implement)。
接口是一个包含许多纯虚函数的抽象对象,这些纯虚函数指明了接口支持的方法。
实现是一个具体定义接口中的方法的对象,一个实现对象必须显式声明它支持哪些接口,还必须定义它支持的接口中的所有抽象方法,实现对象可以支持一个或多个接口,而客户应用只能通过这些接口与实现对象发生联系。
RADE
RADE,RapidApplicationDevelopmentEnvironment,快速应用研发环境,是一个可视化的集成开发环境,它提供完整的编程工具组。
RADE以MicrosoftVisualC++6.0为载体,开发工具完全集成在了VC++环境中,并且提供了一个CAA框架程序编译器,但同时也限制了VC++的部分功能。
可以说CATIACAA–RADE是目前所有高端CAD/CAM开发环境中最为复杂、同时也是功能最为强大的一个。
CAAV5RADE包括一系列工具:
TCK(ToolConfigurationKey)、MAB(多工作空间应用生成器)、CUT(C++单元调试管理器)、MKMK(CAA编译工具)、CID(C++交互式面板)等,以插件的形式与MSDevVC++集成到一起。
然后借助于这些工具在MSDev环境下开发自己的CAA组件。
TCK管理RADE环境,TCK命令是用来管理开发工具包的安装,用来创建一个工作环境。
当在WinowsNT上用CAAV5的可视化创建工具(以插件形式嵌入MicrosoftDeveloperStudio),tck_init和tck_profile命令在打开一个V5的工作区时被自动调用。
MKMK(多工作区应用编译器)是DS(DassaultSystems)原代码编译工具,它构建在平台无关(UNIX和WindowsNT)的标准编译器上,它支持面向组件的设计模式。
MKMK提供一种统一的工具来编译和连接CAA应用而不管是用的什么编程语言(Fortran,C,C++,IDL,Express,CIRCE,...)。
CUT是单元调试管理器,CUT用mkodt命令来运行传递给测试框架中的测试对象,通过选择不同的命令参数来决定选择测试一个对象或者所有对象。
CID即C++交互式面板,CID根据软件开发人员的需求,支持从设计、开发到测试、推广及维护的整个开发设计周期,CID提供对RADE产品的单点访问。
尽管CID在WindowsNT下运行,它能够产生Unix程序代码。
MAB多工作空间应用生成器产品,它为CATIAV5应用程序提供一个集成统一的编译、链接、编辑、生成环境。
MAB能够承担多工作空间编辑,链接,运行代码生成,以及各工作空间之间依赖性的有效管理。
MAB还可以监控任一工作空间的源代码的变更,在整个编译过程中显示跟踪该变更,使编译过程只需要编译更改部分即可。
添加Workbench
注意:
关于RADE中会用到的lib库,在vc中的目录为vc98/mfc/lib目录下,如果你调试出现问题,比如error没有找到mfc42u.lib或者别的你就要从安装盘里面把所有的lib里面的文件考到你的vc对应安装目录下。
1.新建工作空间
打开VS2005,文件——NewCAAV5Workspace,出现NewWorkspaceConfirmation对话框,选择复选框,以后新建工程就不会弹出该对话框,然后选择OK。
在NewCAAV5Workspace中,With选择Mkmk,事先建立好你的开发目录,在WorkspaceDirectory中指定你建立的工作目录,Toollevel选择你的版本,这里是V5R19_B19。
点击Next,出现Initializingtools对话框,在初始化完成后,点击Close,选择创建一个新的框架,点击Finish,弹出NewFramework对话框。
输入你的FrameworkName,这里为MyFrame1,其余关于Frameworktype和Frameworkfunction选择默认选项,Framework提供两种类型:
应用和接口,功能也有三种:
运用、测试和教学。
然后点击OK,弹出CAAV5Generation对话框,点击OK,就完成了。
完成后的文件视图如下图,此时生成了一个带有Framework的Workspace。
CAA的开发提供了两种模式:
批处理模式(BatchMode)和交互模式(InteractiveMode)。
我们开发主要用到的是交互模式。
在此模式下,可以创建两种交互界面:
Workshop(Workbench)和Addin。
前者是创建一个新的模块,在这个模块中除了标准的命令,其余均由用户开发。
后者指在已经存在的Workbench中插入新的工具条和命令,两种方法下面均会讲到。
在建立工程后,必须先制定CATIA的安装路径(这是打开或建立工程后的首要任务)以载入开发所必须的API函数。
点击CAAV5Workspace-LocatePrerequisiteWorkspaces,弹出Prerequisite对话框,点击Add,添加CATIA的安装路径。
也就是定义prerequisite,需要注意的是此路径为intel_a文件夹的上层路径。
在这里,如果要引用其他Workspace的接口(Interface),也可以在这里指定此Workspace的路径。
点击OK,弹出调入所需要的文件对话框如下,点击Close完成。
2、创建module
有了工作空间和框架,下面就是添加module了。
选择文件—AddCAAV5Project—NewModule,弹出NewModule对话框,输入你的ModuleName,这里是MyModule1。
ModuleInformation中选择Sharedobject,其中Shared选项表示模块共享,我们一般选择此选项,如果你做的是一个可执行的程序,如你的模块只有一个main函数,你就可以选择Excutable,点击OK。
弹出下面的产生文件对话框,你点击OK,就创建了一个新的Module,此时的文件视图如下:
下面讲解插入资源,即菜单、对话框等。
右键点击MyModule1.m,选择将其设为启动项目。
选择文件—ADDCAAV5Item—CATIAResource—CATIAPattern。
弹出InsertCATIAPattern对话框,选择Workshop,点击OK,弹出CreateWorkshop/Workbench对话框。
其中WorkObjecttype可以是Workshop或者Workbench,这里我们选择创建Workbench,输入WorkObjectName为MyWorkbench,AssociatedWorkshop选择PRDWorkshop,即为Product空间。
在新创建的Workbench中,会包含Product空间的一些基本标准命令,如插入产品等。
如果输入的是Part空间,则会包含Part空间的一些基本命令。
接着点击Next,弹出下图对话框,不用选择直接点击Next,弹出的对话框是让你选生成类的前缀,可以不用去管,然后点击finish弹出生成文件对话框,点击OK,即完成配置。
完成配置后即可看到文件视图变化如下:
更新工程删除多余的文件和修改mk文件。
在完成以上工作后,工程树的目录下并没有刚才建立的workbench,此时点击project->
SelectCAAV5Projects,弹出下面对话框:
选中所有复选框,点击OK完成对工程的更新,在总目录下也可以看到建立的workbench;
删除最开始创建的module,并在工程文件夹下将其删掉。
在更新一次工程,不会出现删掉的module文件即可;
(该module的作用是过度,在创建workbench添加pattern时,需要在module下才能添加)
工程配置
至此CATIA二次开发的workbench建立完成,但是进行开发时还有文件需要配置;
●IdentityCard.h的配置
在工程FrameWork的框架下有一个IdentityCard的文件夹,里面有一个IdentityCard.h文件,该文件包含的的是新建工程所调用的CATIA的内部组件,要在这里面声明,否则在编译时会出现错误。
:
示例代码如下:
●Makefile文件的配置:
在后面创建的模块(Module)都是单独或是合作完成某一项功能,在每个模块下都有一个Makefile文件;
makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,至于进行更复杂的功能操作。
在该文件里面也要添加该模块所连接的模块,作用于C++的头文件类似。
其示例代码如下:
(1)打开你的工作空间所在目录,找到你建立的frame框架文件夹,然后打开删除里面的第一次建立的Module,这里就是MyModule1.m,同时删除PublicInterface文件夹下对应的建立的module的头文件,这里就是MyModule1.h。
(2)修改.mk文件,因为里面未包含CATIAPRDWorkshopConfiguration.h这一个头文件的Module,以写字板方式打开MyFrame1-MyWorkbench.m中的Imakefile.mk文件后在后面添加下面代码:
LINK_WITH=$(WIZARD_LINK_MODULES)\
CATPrsWksPRDWorkshop
(注意:
每用一个新的API都得在相应的module下的Imakefile.mk添加其所在的模块名,在frame下的Identi