CAA框架概述和建立CATIA二次开发_第1页
CAA框架概述和建立CATIA二次开发_第2页
CAA框架概述和建立CATIA二次开发_第3页
CAA框架概述和建立CATIA二次开发_第4页
CAA框架概述和建立CATIA二次开发_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、f Public InterfacesProtected Interfaces1 Avails ble for every frameworkAvailable forevery moduleof theframeworkAvailable forWe moduleonly在 VC6.0 中新建一个 CAA 工程,其文件结构树如下图所示:图1.1文件树形结构每个 Workspace 至少需要包含一个图1.2 Framework的体系结构CAA工程概述和建立1 . CAA工程概述1.1.CAA工程的文件结构树Framework。一个 Framework包含了一个工程的所有需要的元素,也即是,一个

2、 Framework即可以是你的一个工程。可以将磁盘中的文件夹结构与上图对照。下面对Framework的几个文件夹及其文件作简单的一个介绍。Publicinterfaces :公共接口,在这个文件夹中是类的声明,即 .h 头文件。这些类可Framework的体系如下图:以为整个 Framework的各个模块共享,也可以被外部Framework使用。PretectedInterfaces:系统自动生成的 module.h头文件,供编译连接时使用。这些模 块只能在本Framework使用。IdentityCard.h :本文件定义了所有用于编译使用此Framework的预定义 Frameworko

3、即,在开发过程中你使用了系统或者外部的API ,你必须包含此 API 所在的头文件,module和 Framework,其中 Framework的预定义就在这个文件中进行。其格式如下:AddPrereqComponent( ApplicationFrame ,Protected);/ ApplicationFrame 即为所连接的 FrameworkCnext 文件夹:包含了 Resources 和 Code两部分,其具体的作用下文会具体阐述。 Module文件夹:Module为组织程序代码的一个基本容器。其结构如下图:图1.3 Module的结构图其中:LocalInterfaces 中是仅

4、供本模块使用的头文件集合;Src是所有本模块的.cpp 文件集合;Imakefile.mk文件是所有本模块所包含的头文件所在外部Module的定义。在上面提到的 IdentityCard.h中定义的是 API所在的 Framework,而相应的 Module即在此文件中 定义。在LINK_WITH 后面添加需要连接的 ModulesoImakefile.mkBUILT OBJECT TYPE=SHAREDLIBRARY1.Define the module typeDefine the build options common to all the OSOS = COMMONWIZARD LI

5、NK MODULES = JSOGROUP JSOFMCATApplicationFrameSpecific keyword used by the wizardsThe continuation character isDefines the shared libraries thatresolve the symbols you useWITH = t(WIZARD_LINK_ MODULES CAtDiabgEngineOS = A一一一SYS_ INCPATH =SYSJJBS = -IXm -IXt -IXmu -1X11 -ImSYS.LIBPATH = -L/usr/lppZX1

6、2 -Ubsrflpp/X11/Motifl .2/libDefine the build options specific to a given OS if necessary图1.4 .mk文件卜面为 VC中的文件视图:Workspace hanjieCAD1:12 project(s)+ 即CAAPstCornponentServices.nl iiles l Cre8terDg.nlfiles+ 副DaoguanFixtureDesign.m files +i lDalaManagemenLm files* 即DesignErweLmfiles .+: 0)DesignTools.m

7、files 1-ErWei.m files+ _| src+ _J Local Interfaces司Imakeiile.mlcI tixtureDesign files+ _l HrutecteamtenacesT _J Publicinterfaces3 _J IdentityCard司IdentityCard.h- H CNext+1 _J resources+ _code图1.5 VC中的文件视图1.2.CATIA的一些基本概念ModuleFrameworkWorkshop和 Workbench:它们为 CATIA 的功能模块的组织。CATIA将其功能细分,每个人都可以选择自己的模块进

8、入进行设计,简化了界面。如下图:图1.6 CATIA的Workshop和WorkbenchWorkbench1.3.CAA中的资源1.4.CAA学习安装了 API和 RADE 后,系统提供了在线帮助,即CAA V5 Encyclopedia。在现阶段 资料缺乏的情况下,这是最重要的学习途径。在线帮助的主页在目录:CATIA安装路径B11CAADocDoconlineCAACenV5Default.htm 下。它包含了几个部分的内容:技术文章 (TenichelArticles ),实例(Use Case),接口参考(Quick Reference )。技术文章对系统构架作了详细说明,实例提供了

9、大量代码,接口参考提供了CAA 的所有 API 函数和类。在开发工程中可以使用上下文帮助(Context Help ),选择检索的关键词后按Ctrl + F1,可以在系统API中检索这个关键词。注意,必须先定义 CATIA 路径才能进行此操作。定义方法见 2.1.2。2 . CAA工程的建立2.1.交互界面的建立2.1.1.X程(Workspace的建立Stepl:在 VC File”菜单中选择 “ New CAA V5 Workspace , ”,出现对话框:工程路径创建或选定在工程路径中选择或创建路径,选择“ Tool Level”为“V5R11 T11 ”,点击 Next。Step2:创

10、建 Framework选项。系统提供了 4个可用选项,可以不选择或选择第二项。Step3:若上面选择了第二项,则显示下面对话框。输入 Framework名字和选择其类型Framework提供两种类型:应用和接口。功能也有三种:运用、测试和教学。CancelFramework类型选择Step4:确定 Workspace 的创建:New FrameworkNewFramewFramework type:Create anewFramework.(* Implement ati 01L InterAFrameworkFrameworlEon: f*-BevelspmentL Test Educati

11、onFramework预定义Director? D; VmytestVMyFrajnelFramework 名称Framework name: |MyFrairil|类型选择Framework infrinati onL IDL suppor-CdThe CAA V5 wizwd will generate theY*u willUE & inplennt&tion framework wi xardFramework : MyFramslGenerated Files :+ Framework I dent i tyC ar d :,VfflyFrajmelVldent i

12、tyC ar dI denti tyCard, h+ Framework Dictionary :,MyFr e 1 CBex t Veodedi cti oiiaryVMyFr ame 1. di coCoide Generat ionConinents will b i ns er ted. in the codeWorkspace :B: mytestj&iuihiuialuuihiuiaiuuiub OK ;lCaiic elWorkspace基本情况提示确定后 VC文件视图(File View )如下:菇Workspace *mytest: 1 project(s由摩MyFr

13、amel files-白IdentityCardI 阔Identity Card.h(=)由由CNext L 1 resources -q codeFtJ dictionaryR MyFrameLdico所建立Workspace的文件视图此时生成了一个带有一个Framework 的 WorkspaceoCAA的开发提供了两种模式:批处理模式(Batch Mode)和交互模式(InteractiveMode)。我们开发主要用到的是交互模式。在 此模式下,可以创建两种交互界面:Workshop (Workbench)和 Addin。前者是创建一个新的模块,在这个模块中除了标准的命令,其余均由用户开

14、发。后者指在已经存在的 WorkbenchCAA V5 Generation中插入新的工具条和命令。下面分别进行示例。2.1.2.新建工程与CATIA系统接口的连接在建立工程后,必须先指定CATIA的安装路径,以搜索开发所需要的API资源。点击CAAV5 Workspace” Locate Prerequisite Workspace,,添加 CATIA 的安装路径。点 击“Add”添加,如下图所示:2.1.3.Workshop或Workbench的创建下面的例子,我们在 MechenicalDesign (机械设计)中插入一个名为测试工作台”的Workbencho具体步骤如下:Stepl:创

15、建一个 New Module :选择Project -New Module ,命令:Workspace 的接口New Module对话框输入 Module名字后点击 OK。Step2:进入确定界面,显示此 Module信息:新建Module信息点击 OK后,创建了一个新的Module。此时 VC 中的文件视图(FileView )如下:Workspace myteM: ? projects :-i图Modulekm tiles司Imakelile.mkTProtectedlnteriacesXI Module 1 .h-白3 IdentityCard添加的头文件司IdentityCard.h日

16、CNext1 resources二n code-_j dictionaryS MyFramel .dico创建新Module后文件视图Step3:右键点击 Modulel.m ,将其设为当前工作 Project (Set As Active Project)。选择Insert” CATIAResource ” CATIA Pattern ,”,响应如下:SBttngs. *,Add to Source Control。Docking Vie* tinteCS* Properties在选择 Workshop,点击 OK。Step4:Workshop或者 Workbench 选择。选择创建 Wor

17、kbench ,并输入其名称。-S3 MyFramel files生成的 Module_ JModule中插入CATIA PatternBuildBuild (selBctjcn only)Qtear (selection only)Qj New Folder.Add Files to Project.Upload ProjectWorkshop wizwd: Step 1 of 3CAA V5 Vizard Hw WorkshopWorldJbJact typ:tfcrkOhj ectNse :AESOCIatad Workshop:Workbench定义Step5:点击接口浏览按钮, 选择

18、与 Workbench所连接的 Workshop。这里选择 PRDWorkshop , 即为 Product空间。在新创建的Workbench中,会包含 Product空间的一些基本标准命令,如插入产品等。如果选择Part空间,则会包含 Part空间的一些基本命令。CDCCGRCS0WK5DeskWorkshopDHIVZDDRWBGFRAMEDRWCUloulFKANIEDEWFRAMEKncwledgsAdvi scrKwoWarkshopM at &ri alW orkshoFREVrkshcPrtWksS制&k%S clicksS舞gUr洲ksSWKB odyElem

19、ent MMTFSCaptureWSUBWSFKDCAssociatedWorkshop定义Step6:上述步骤结束后点击Next,进入参数设置界面,直接进入Ava i labdeworkslopsxlNEXT。厂WorkshopCancelChoi sir un workshop:代码参数选择点击 Finish ,设置完成,如下图。CAA V5 GenerationThe CAA V5 wizard will genwir&tw thCATIA tforkbarbch zi rardFile Tree :Framework : MyPramelNodul : T?slWL. mGii

20、erated Filas :+ Workbench module Imakefile :-HyFramel VTestH rnilmikefile mk+ or kb sncli modul & symbol defini ti on :-MyFr响S kProtectsdlnterfaceskTestWt h+ W or kb such dictionary file :-NfFruel CNes tVcodeX di cti onaryAlhrTr al. di co+ Workbnch factor/ file :.MyFraffiel CUestc5dedi cti cnary

21、Testffb, t+ W or kb such setup:_.MyFramel TestWt, mLociLInter f4Cesorkshop. h+ Comm and header filesHyFramel TestWL, mVsrcVCWTestWbCmdKadfir. cpp.MyFr amel TestWL. mkLocallnter facesVHeaderDsclarf+ CORithand-rorkshop inclusion.MyFr1 VTestttb. mkLocallnter f ac esVHftader s. h+ Workbench interfac -le

22、finiii ons and ti.MyFr amel TestWb. mLocslInter acftiVCATITestbTf01.HyFramel iTestll.(hsrcCATIT4stffbWorkb&nchFactot.MlyFr arnal TqtWL- msr cT!E_CATIT t sor kb enckF *+ Workbench ddin itit4rfC4TUI Workspace :D: Vm/testi-iuui-iuiaiuui-i,OK ; Caiicel新创建Workbench基本信息OK后,生成名为 TestWb.m的 module及其头文件。W

23、orkspace mytest1: 3 projectfs S犀I Modulel .m files -MyFramel HiesFlProtected InterfacesS CATITestWbAddin.h匡1 MqdulM .h头文件ID TestWb.h |i+ |_J IdentityCard自J CNextb. 3 resourcesb msgcatalogfCATTestWbCmdHeaderXATNIs :g TestWbXATNIsgTestWb.CATRsc白 code白二3 dictionaryj|匐|MyFfmeLdicoBl TestWbJacfbd TestWb.

24、m filesl src1+ LJ Locallnterfaces i+ |_J Interfaces圄|Imakefile.mk创建Workbench后文件视图此时编译,会有两个外部连接错误。(1)CATMeWorkbench.obj : error LNK2001: unresolved external symbol _declspec(dllimport)struct_GUIDIID_CATIPRDWorkshopConfiguration_imp_?IID_CATIPRDWorkshopConfiguration3U_GUIDA)这实际上是找不到外部连接,在 .mk文件中未注明包含C

25、ATIPRDWorkshopConfiguration.h这一个头文件的 Module,这一个 Module名可查 API。所以在.mk 文件中加入:LINK_WITH = $(WIZARD_LINK_MODULES) CATPrsWksPRDWorkshop(2) mkCAA V5Licensing.obj : error LNK2001: unresolved external symbol _declspec(dllimport) void_cdecl AbortProcCAA(char const *) (_imp_?AbortProcCAAYAXPBDZ)这实际是由于开始时候新建的M

26、odule1是一个空的 Module ,用以插入 Workbench,但是完成插入后它实际上仍然是空的Module,所以发生编译错误。在文件夹中删除该 Moudle文件夹,以及 ProtectedInterfaces 文件夹下的 Module1.h头文件,刷新后重新编译,即可编译通 过。下面是几个值得注意的地方:在文件:TestWb.CATNIS 中,可以定义此 Workbench以及其工具条、菜单的所有名字(Title),定义格式为:TestWb.Title= ”测试工作台”;在文件:TestWb.CATRsc中,可以定义此Workbench的图标(Icons)和其放置路径(Category

27、)o前者暂不说明,后者说明如下:TestWb.Category=Infrastructure”;Category 可以为:Infrasturcture , MechanicalDesign , Shape,。分别对应于已有的Workshopo我们将其改为:MechanicalDesign。在文件:MyFrame1.dico 中,定义了此 Workbench 的连接库。好,一个完整的 Workbench创建完毕。编译运行,结果如下:F1 CATIA V5- Product1京-并始_= sJjcJ= 5j.iIHMMH氐二 r 芋.-登析与竹因维:工厂鼠制造字模型所备题系统观的敕字流程QElMf

28、Ai础第构 人体工学迎计与分析宣籍软件A j. Prodi: tl重出ai试E作台* 修 PtCKlKt Functional Taler-anchg & Amotatnn, Id Design* 乏堕相 Tooling Desm:必 SJUCHi日哗, 蠢女祯脚昨 Core & 匚凯 tty tes qri$ , tjealng AsstantShgei Metal DesignAerosjiacs Eb=et Metal Design感 J 计 v*rPrRUttcn朝CwnpDsjiK Design wrfi-ama and Wfece Cwign盘 曝凶 如闵制巳邕 I

29、 Design 陛圳 堂 FunctionalToteirancirgSi ArratenionHa 鳖屋垦_欢7土孔H顼?i.住血仲七乳晦瓣叩小令您宾房曳匿W ?凋盅工作台1旦是国堑辱F .引出,10 47fiftbes,.叫.ZA.早莲.创建新Workbench后的CATIA运行界面.2.1.4.Addin的创建所谓 Addin,是在系统已有的 Workbench中插入新的工具条或者菜单。下面的例子,我 们来在 PartDesign中插入一个工具条,名字为“工程管理”。Stepl:新建一个 Module,名为 PartDesignAddin。Step2:将此 Module 设为当前活动 P

30、roject,选择Insert” aComponent,”命令。插入组件输入 Component name,选择 Implement 的接口为:CATIPrtWksAddin。选择窗口如下:选择Interface注意 Search workspace 为你的 CATIA安装路径,并将下面的单选框设为空。Insert Componenl:Component naina:New Addin组件名称XjDerived|C AT B as eVrJm ownZ/C AT B as eOb jFile inform at i on接口选择yroevrrk:ModuleMeaderMyFrwelPartD

31、eEipkAddin. mILocal Inter face s3OKStep4:设置完成。CAA VS GenerationTh CAA V5 wi d willthYem will use an implementation wizajrdFl-amework : MyFramel&td Fil&s :+ implement&tiheader file :. MyFr:am e 1 .F ax tB e s i gnAddi it. mLocalInt er facesNewkddi+ implemsifttati enEil畦:.MyFr ame 1 .Par t

32、Desi gnAddin. ms.rcHewAddin, cppTrwon t bt instrttd inCd* Gtnr :C-&minrits will be ins4ritd in the codW erkspac:D;myt stOK d Cancel插入组件信息相应的文件视图如下:11 Workspace mytest1: 3 projectfs日暮I MyFramel files-心心Protecledlntertaces-BjCATITestWbAddin.h是1 PartDesignAddin,h) TestWb.h回。IdentityCard j 13 OCNexf

33、 i-摩PartDesignAddin.m tiles白骨ST匚匐NewAddin.cpp曰 疽LocallnterfaccsBl NewAddinkh国makefile.mk3 Bl TestWb.m files文件视图Step4:此时建立了一个空的Addin。在 MyFrame.dico文件中可以看到这个 Addin的声明:NewAddin CATIPrtWksAddin libPartDesignAddin但是,要创建一个工具条,我们还需要在这个类:NewAddin中添加一些函数。在 NewAddin类中添加两个 Public函数声明:void CreateCommands();CATC

34、mdContainer * CreateToolbars ();在 NewAddin.cpp中添加宏定义:#include CATCommandHeader.hMacDeclareHeader(PartCmdHeader);我们开始来定义工具条:在函数 CreateToolbars ()中加入函数体:NewAccess(CATCmdContainer,pPartBenchTlb,PartBenchTlb);AddToolbarView(pPartBenchTlb,1, Right);return pPartBenchTlb;此时编译,发生几个连接错误。主要是CATCmdContainer类型及

35、Newaccess的定义的头文件及其Module的添加。在.h文件中加上:#include CATCmdContainer.h在.cpp中加入:#include CATCmdContainer.h#include CATCreateWorkshop.h在.mk文件中加入:WIZARD_LINK_MODULES =JS0FM JS0GROUP PrtWorkshop MechanicalModelerUIUUID CATApplicationFrame# END WIZARD EDITION ZONELINK_WITH = $(WIZARD_LINK_MODULES) CATConstraint

36、ModelerUI在 Identitycard.h 中加入:AddPrereqComponent( ConstraintModelerUI ,Protected);2.1.5.工具条、菜单的建立和显示主要是 NewAccess, SetAccessCommand, SetAccessChild, SetAccessNext 等几个命令的使 用。其具体含义可以参看API 文档的说明。下面我们来在新创建的Workbench中创建一个菜单,其名字为“测试工具条”,其上有一个命令(Command),名为测试命令”。在文件:Workshop.h”中加入代码:SetficcessChild(Cft!Cnd

37、Workbenchl,CATCmdContainer1);/HeuAccessf CATCndContainerpplestNbr,TestHbr);HeuHccess(CATCndC(intairier,pTestMenufTestMenu);SetficcessChild(pTestMbr .pTestMPnll);NewAcce55(CATCndStarter9pTest M,Test JI);SetAccssConnand C测试命令”);SetAccessChild(pTestMenu fpTest_M);SetWorkbenchMenu CCATCmdUorkbnchl,pTest

38、Mbr);/下面创建一个工具条,名称与命令同上。在文件 Workshop.h”中加入代码:Ht?vAccess(CATCmdContainerTCATCmdContainer1rCATNeuIoolBar601Tlb);/N?vAccess(CA ICmdStarter , pTcst, Test);Set AccessConniand(pTest,,寸则试命令);SetficcessChild(CATCmdContainer1,plest):/AddToolbarUiew(CATCn)dContairier1,1,Right);SetAccessChlld(CATCmdllorkbench1 ,CATCndContainert);上述代码中被“ /”围绕的为新加入代码。菜单、工具条名字的修改在TestWb.CATNIS 中:牧ToolBar961TlD.TitleK测试工具条,;TestHenu.Title-M测试菜单”;编译运行如下:创建菜单工具条在 Addin中,只能插入新的工具条,无法插入菜单。如我们在 PartDesign中新插入一个名为“测试工具条”的工具条,上有命令“测试命令”:在文件“NewAddin.cpp ”中:CATCndCiontainr * NeuAdd

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论