【航空航天】CATIA二次開發(fā)-CAA基礎(共62頁)_第1頁
【航空航天】CATIA二次開發(fā)-CAA基礎(共62頁)_第2頁
【航空航天】CATIA二次開發(fā)-CAA基礎(共62頁)_第3頁
【航空航天】CATIA二次開發(fā)-CAA基礎(共62頁)_第4頁
【航空航天】CATIA二次開發(fā)-CAA基礎(共62頁)_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、CAA,第一章 安裝,1 安裝CATIA。在安裝CATIA時,要把它裝到根目錄下,文件夾名稱不能含有空格,(在此命名為CATIA)安裝完后,用crack文件下JS0GROUP.dll拷貝到d:CATIAB14intel_acodebin下的覆蓋。 2 安裝vc。裝vc時選自定義,把里面的所有組件都選上。 3 安裝CAA和rade。先裝CAA系統(tǒng)會自動安裝到CATIA文件夾下,再安裝rade不要裝在CATIA文件夾下,安裝方法和安裝CATIA一樣。安裝完后,把服務里面的 LaunchCommandServer和ReleaseClient停止,再把Rade的crack文件下JS0GROUP.dll

2、拷貝到d: radeB14intel_acodebin下覆蓋。啟動服務。,1.RADE產品的認證,通過命令啟動RADE Tools Licensing: d: radeB14intel_acodebin Tools Licensing,2.安裝聯(lián)機幫助,以便在RADE開發(fā)環(huán)境下提供CAA幫助(這是V5R14下的,也不知是與別的版本不一樣還是是我的軟件的問題,別人說第一項也要安裝的,我的是空的) : d: radeB14intel_acodebin Tools Licensing CATVBTSetup.exe,3 vc設定 Tools-customize,然后你就會發(fā)現(xiàn)VC的menu多了些東西

3、,第二章 CATIA V5 組件體系結構分析及其軟件工程思想,CATIA V5 是法國達索公司與IBM公司開發(fā)的新一代CAD/CAM產品。不同于老一代CAD/CAM產品,它采用了全新的、基于組件的開放式體系結構(Open Architecture Products)。應用了許多現(xiàn)代軟件工程思想,整個體系結構雖然十分龐大,但結構清晰、合理。維護、開發(fā)、擴展方便。有著相當優(yōu)良的擴展性能。它開放的組件應用架構允許更多的第三方供應商針對用戶的需要特別定制的應用解決方案。本文著重分析了CATIA V5的基礎體系結構(Architecture Infrastructure)及其軟件工程思想。以期對CATI

4、A V5的學習和二次開發(fā)以及理解其它基于相同體系結構的軟件如:ENOVIA LCA,DELMIA等有所幫助。,CATIA V5在開發(fā)之初就遵循面向對象的設計思想(OO),構建了完全基于組件的體系結構(PPR: Products,Process,Resource),有效地解決了維護、管理、擴展的困難,并大量使用了最新的計算機技術和標準以及軟件工程技術,其中包括基于組件架構思想的JAVA BEAN 、COM/OLE、CORBA 技術和Web技術、C+語言、Visual Basic Journaling 、STEP-SDAI、XML、OpenGL等,這使CATIA V5具有與眾不同的鮮明的特點:數(shù)據

5、結構單一,各個模塊全相關,某些模塊之間還是雙向相關;端到端的集成系統(tǒng),擁有強大的專業(yè)應用擴展能力。 1軟件組件結構(SCI: Software Component Infrastructure)的基本概念 軟件組件結構(SCI)是軟件工程繼過程模型和面向對象模型的下一代邏輯模型。面向對象技術已在許多重要應用中取得成功。 但是,隨著更多面向對象解決方法的開發(fā)和使用,很顯然的是,單單采用面向對象技術難以與軟件日益增長的復雜性抗衡。因為,對象只構成應用程序的一部分。它完全不能把握應用程序的結構(控制流)。只能通過重用類庫里有的類來實現(xiàn)有限的重用。但實際情況是,大量應用程序,特別是同一領域(DOMAI

6、N)中的應用程序,分享相似的結構。不同的程序員使用不同的技術去把握和實現(xiàn)這些相似的結構。結果,這些結構并沒有經過通常的面向對象技術而被重用。,面向對象技術只能通過重用類庫已有的類來實現(xiàn)有限的重用,而軟件組件結構(SCI)提供了最高層次的代碼重用。 軟件組件結構(SCI:Software Component Infrastructure)有三個基本的概念:框架(FRAMEWORK)、組件(Component)和對象總線(Products Bus)。 組件(Component):是軟件的基本量子(單元)。組件既應當足夠小,以便于維護;又應足夠大,可具備相當?shù)墓δ?,可以被打包和插用。由于傳統(tǒng)的客戶/

7、服務器應用不能應付軟件應用日益增加的復雜性。它們不能加入到即插即用的環(huán)境之中。組件的特征提供了將一個應用程序分成若干個組件的機制。每個組件提供了一個相當專門的功能,它向框架的其余部分描述自己,以便別的組件能夠訪問它的功能。描述是通過說明性語言如IDL實現(xiàn)的,它本質上是把組件的接口與實現(xiàn)分離開來。由于組件是可單獨維護、升級的,因此,組件不直接與別的組件通信是至關重要的。它必須通過使用框架或對象總線來實現(xiàn)組件之間的交互。 框架(FRAMEWORK):框架提供對所有應用程序有用的功能(如接口、存儲)。它提供了統(tǒng)一的總設計??蚣苁菍ο嗨茟贸绦蚣系囊粋€部分(統(tǒng)一但不完整)解決方案。開發(fā)者的任務是用這

8、不完整的解決方案加上必要的代碼建立完整的應用。在領域(DOMAIN)內的一個應用包括不變部分和可變部分。不變部分由框架把握,一般可占到80%,可變部分由開發(fā)者把握,一般可占到20% 。開發(fā)者通過向框架添加變化部分的代碼把握其動作,而形成新的特定應用??蚣芨鶕欠襻槍μ厥忸I域還是若干領域,可分為水平框架、垂直框架、復合文擋框架。,對象總線:對象總線是基本的中間件。它允許成千上萬能夠相互理解接口定義語言IDL的對象相互發(fā)生作用。這種作用對對象來說是完全透明的。對象總線把組件和框架的能力擴展到開放網絡和其它伙伴應用程序。它使成千上萬獨立的軟件單元在由不同操作系統(tǒng)、語言、硬件平臺和編譯工具組成的環(huán)境下

9、互相無縫地交互運作。對象總線不僅提供對象之間的連接,它還提供對在總線上所有對象都有用的核心服務集(對象服務)。如:生命周期服務程序、安全性、持久性、命名等。 通過組件構造/修改軟件,用框架把握軟件結構,用對象總線連接事務,支持即插即用(Plug Play)功能的擴展。 2CATIA V5體系結構(Architecture Infrastructure) CATIA V5的體系結構(Architecture Infrastructure)是一種面向行業(yè)應用的垂直框架體系結構,組件是CAD/CAM系統(tǒng)的各種幾何特征和管理、分析單元??蚣苁且恍萌纾?D/3D建模、分析、混合建模、制圖、數(shù)控加工等

10、,CATIA V5也稱為領域(DOMAIN)或應用(APPLICATION)。并通過3D PLM PPR(PRODUCTS,PROCESS, RESOURCE)HUB產品總線連接起來。其架構如下圖:,CATIA V5 的一些框架: Framework Administration Framework AdvancedMathematics Framework AdvancedTopologicalOpe Framework AnalysisMeshingModel Framework ApplicationFrame Framework AutomationInterfaces Framewo

11、rk BasicTopologicalOpe Framework CATAnalysisBase Framework CATAnalysisGPSInterfaces Framework CATAnalysisInterfaces Framework CATAnalysisResources Framework CATAnalysisVisuInterfaces Framework CATAssemblyInterfaces Framework CATFunctSystemItf Framework CATHVDiagramInterfaces Framework CATHullConcept

12、ualInterfaces Framework CATIAApplicationFrame Framework CATIAV4Interfaces Framework CATMatInterfaces 框架通過公用接口來實現(xiàn)對象之間的交互。下圖是混合建模(HybridShape)的部分對象及其繼承關系。,3CATIA V5體系結構的特點分析 CATIA V5采用了多種支持組件技術的軟件技術如:JAVA、COM/DCOM、CORBA等,內部模塊全部采用CNEXT(CATIA 內部使用的一種C+語言)實現(xiàn),結構單一。提供了多種開發(fā)接口,支持C+/JAVA、Automation API ,支持各種開

13、發(fā)工具:CAA C+,JAVA ,VB,腳本語言。采用單繼承,對象之間關系明確,體系結構嚴謹,維護容易。 根據CAD軟件的特點和實際需要,CATIA 的設計模式比較簡單,主要有工廠模式、層模式等。在面向對象的編程中,工廠模式是一種經常被使用到的模式。根據工廠模式實現(xiàn)的類可以根據提供的數(shù)據生成一組類中某一個類的實例,通常這一組類有一個公共的抽象父類并且實現(xiàn)了相同的方法,但是這些方法針對不同的數(shù)據進行了不同的操作。 圖2 CATIA中的具體實現(xiàn)如下例所示: 如要做一條垂直于曲面的線,由對象繼承關系如下 +-CATBaseUnknown | +-CATBaseDispatch | +-AnyObje

14、ct | +-HybridShape | +-Line | +-HybridShapeLineNormal,工廠的繼承關系: +-CATBaseUnknown | +-CATBaseDispatch | +-AnyObject | +-Factory | +-HybridShapeFactory 先在HybridShapeLineNormal對象設定做這條線的屬性參數(shù)如:點、參考面,在公共抽象層Line中設定線的共同屬性如坐標、法矢等,然后調用HybridShapeFactory中的AddNewLineNormal方法進行對象實例化。 CATIA V5 的產品總線PPR不是真正意義上的對象總線

15、,缺乏真正對象總線的一些特征。它主要注重其它伙伴應用如EVOVIA LCA、DELMIA的互操作和集成,因此稱之為“產品總線”。產品總線分層的,如機械設計基于Mechanical Modeler / ApplicationFrame即為所連接的Framework l Cnext文件夾:包含了Resources和Code兩部分,其具體的作用下文會具體闡述。 Module文件夾:Module為組織程序代碼的一個基本容器。其結構如下圖:,其中:LocalInterfaces中是僅供本模塊使用的頭文件集合;Src是所有本模塊的.cpp文件集合;Imakefile.mk文件是所有本模塊所包含的頭文件所在

16、外部Module的定義。在上面提到的IdentityCard.h中定義的是API所在的Framework,而相應的Module即在此文件中定義。在LINK_WITH后面添加需要連接的Modules。,下面用一個例子來說明程序的過程。下面的例子,我們在MechenicalDesign(機械設計)中插入一個名為“test”的Workbench。具體步驟如下: 1.在上面創(chuàng)建的workbace下繼續(xù)做,創(chuàng)建一個New Module:選擇“Project” “New Module”命令: shared選項表示模塊共享,我們一般都選此選項,如果你做的是一個可執(zhí)行的程序,如你的模塊只有一個main函數(shù),你

17、就可以選Executable.輸入module名,點OK.,進入確定界面,顯示此Module信息: 點擊OK后,創(chuàng)建了一個新的Module。此時VC中的文件視圖(FileView)如下:,生成的Module,添加的頭文件,在建立工程后,必須先指定CATIA的安裝路徑,(這是在打開或建立工程后的首要任務)以搜索開發(fā)所需要的API資源。點擊“CAAV5 Workspace” “Locate Prerequisite Workspace”,添加CATIA的安裝路徑。點擊“Add”添加,如下圖所示:,2. 右鍵點擊Module1.m,將其設為當前工作Project(Set As Active Proj

18、ect)。選擇“Insert” “CATIA Resource” “CATIA Pattern”,響應如下: 選擇Workshop,點擊OK。 3. Workshop或者Workbench選擇。選擇創(chuàng)建Workbench,并輸入其名稱。,第二個edit是讓你輸入workbench所在的workshop 4. 點擊接口瀏覽按鈕,選擇與Workbench所連接的Workshop。這里選擇PRDWorkshop,即為Product空間。在新創(chuàng)建的Workbench中,會包含Product空間的一些基本標準命令,如插入產品等。如果選擇Part空間,則會包含Part空間的一些基本命令。,5.上述步驟結束

19、后點擊Next,進入參數(shù)設置界面,直接進入NEXT。在這一步我不喜歡選前綴,原因我記不清了。反正不爽。,點擊Finish,設置完成,如下圖。 OK后,生成名為TestWb.m的module及其頭文件。,6.在文件夾中刪除該Moudle文件夾,以及ProtectedInterfaces文件夾下的Module1.h頭文件 ,此時編譯會出現(xiàn)一個錯: CATMeWorkbench.obj : error LNK2001: unresolved external symbol _declspec(dllimport) struct_GUIDIID_CATIPRDWorkshopConfiguration

20、(_imp_?IID_CATIPRDWorkshopConfiguration3U_GUIDA) 這實際上是找不到外部連接,在.mk文件中未注明包含CATIPRDWorkshopConfiguration.h這一個頭文件的Module,這一個Module名可查API。所以在.mk文件中加入: LINK_WITH = $(WIZARD_LINK_MODULES) CATPrsWksPRDWorkshop 注:我每用一個新的API都得在相應的module下的imakfile.mk里添加其所在的模塊名,在frame下的identitycard.h里添加其所在的frame名。,下面是幾個值得注意的地方

21、(也就是定義資源,同一個frame下的所有的資源都放在Cnext/resource/msgcatalog下): l在文件:TestWb.CATNIS中,可以定義此Workbench以及其工具條、菜單的所有名字(Title),定義格式為: TestWb.Title=”test”; l 在文件:TestWb.CATRsc中,可以定義此Workbench的圖標(Icons)和其放置路徑(Category)。前者暫不說明,后者說明如下: TestWb.Category=Infrastructure; Category可以為:Infrasturcture,MechanicalDesign,Shape,。

22、分別對應于已有的Workshop。我們將其改為:MechanicalDesign。 在文件:MyFrame1.dico中( Cnext/resource/code/dictionary ),定義了此Workbench的連接庫。 一個完整的Workbench創(chuàng)建完畢。編譯運行,結果如下:,下面簡單介紹addin的制作: 所謂Addin,是在系統(tǒng)已有的Workbench中插 入新的工具條或者菜單。下面的例子, 我們來在PartDesign中插入一個工具條 。 1、新建一個module命名為PartAddin, 并將它設為active。 2、做接口CATIPrtWksAddin的implementi

23、on, insert-component,彈出對話框如圖: 輸入addin的名字,點擊add再點擊瀏覽選擇要執(zhí)行的接口,如圖:,要選擇的接口為CATIPrtWksAddin注意Search workspace為你的CATIA安裝路徑,并將下面的單選框設為空。點ok完成。文件相應的試圖如下:,3、此時建立了一個空的Addin。在yourframe.dico文件中可以看到這個Addin的聲明: NewAddinCATIPrtWksAddinlibPartDesignAddin 但是,要創(chuàng)建一個工具條,我們還需要在這個類:NewAddin中添加一些函數(shù)。 在NewAddin類中添加兩個Public函

24、數(shù)聲明: void CreateCommands(); CATCmdContainer * CreateToolbars(); 在NewAddin.cpp中添加宏定義: #include CATCommandHeader.h MacDeclareHeader(PartCmdHeader); 這兩個函數(shù)及宏都可以按ctrl+F1查到, CreateCommands里面的代碼只是用 MacDeclareHeader生成的PartCmdHeader定義命令的header(不知道怎么翻譯,就是工具條或菜單里面可以看到的執(zhí)行命令的按鈕了,這個命令是連接界面命令和實現(xiàn)代碼的橋梁。)如: new PartC

25、mdHeader(“point”,“CmdModule”,“TestCmd”,(void *)NULL); new PartCmdHeader(line,CmdModule,LinCmd,(void *)NULL);第一個參數(shù)是按鈕的名字,第二、三個代表按鈕執(zhí)行的命令所在的module和命令的名字,參數(shù)四缺省就行了。,CreateToolbars里面就是要建的工具條和菜單的主要內容: NewAccess(CATCmdContainer,pPartBenchTlb,PartBenchTlb); NewAccess(CATCmdStarter,pPointCmd,PointCmd); SetAcc

26、essCommand(pPointCmd,point); SetAccessChild(pPartBenchTlb,pPointCmd); NewAccess(CATCmdStarter,pLineCmd,LineCmd); SetAccessCommand(pLineCmd,line); SetAccessNext(pPointCmd,pLineCmd); 這三個函數(shù)都可以查到, NewAccess肯定是新建了,常用的類有CATCmdWorkbench(The workbenchs access is a CATCmdContainer which contains containers:

27、one for its menubar and one for each toolbar. ) 、CATCmdContainer(Class to create the containers access like a menubar, a menu, a submenu, a toolbar or an icon box) 、 CATCmdStarter、(A starter is a leaf of the workshops accesses tree. At each starter you attach a CATCommandHeader to launch the associa

28、ted command. ),NewAccess, SetAccessCommand, SetAccessChild, SetAccessNext等幾個命令的使用。其具體含義可以參看API文檔的說明。( SetAccessCommand 就是將starter與上面的PartCmdHeader 建立的東西連接了,注意參數(shù)“l(fā)ine” )其他的顧名就可思義。 4、此時編譯,發(fā)生幾個連接錯誤。主要是CATCmdContainer類型及Newaccess的定義的頭文件及其Module的添加。在.h文件中加上:#include CATCmdContainer.h 在.cpp中加入:#include CA

29、TCmdContainer.h #include CATCreateWorkshop.h 在.mk文件中加入:WIZARD_LINK_MODULES = JS0FM JS0GROUP PrtWorkshop MechanicalModelerUIUUID CATApplicationFrame # END WIZARD EDITION ZONE LINK_WITH = $(WIZARD_LINK_MODULES) CATApplicationFrame 在Identitycard.h中加入: AddPrereqComponent(ConstraintModelerUI,Protected); 注意:每次換行時,都要加一斜線用來繼續(xù)執(zhí)行下面的module.,到此addin就做成了。剩下的就是定義資源文件,也就是換換名字或給按鈕連接個圖片。和前面的workbench一樣工具條名字在“NewAddin.CATNIS”中進行定義: PartBenchTlb.Title=”測試工具條”; 在NewAddin.CATRsc定義圖片。 NewAddin.point.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論