CATIA二次開發-CAA基礎-課件_第1頁
CATIA二次開發-CAA基礎-課件_第2頁
CATIA二次開發-CAA基礎-課件_第3頁
CATIA二次開發-CAA基礎-課件_第4頁
CATIA二次開發-CAA基礎-課件_第5頁
已閱讀5頁,還剩57頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

CAA

第一章安裝1安裝CATIA。在安裝CATIA時,要把它裝到根目錄下,文件夾名稱不能含有空格,(在此命名為CATIA)安裝完后,用crack文件下JS0GROUP.dll拷貝到d:\CATIA\B14\intel_a\code\bin下的覆蓋。2安裝vc。裝vc時選自定義,把里面的所有組件都選上。3安裝CAA和rade。先裝CAA系統會自動安裝到CATIA文件夾下,再安裝rade不要裝在CATIA文件夾下,安裝方法和安裝CATIA一樣。安裝完后,把服務里面的LaunchCommandServer和ReleaseClient停止,再把Rade的crack文件下JS0GROUP.dll拷貝到d:\rade\B14\intel_a\code\bin下覆蓋。啟動服務。1ppt課件1.RADE產品的認證,通過命令啟動RADEToolsLicensing:d:\rade\B14\intel_a\code\bin\ToolsLicensing2.安裝聯機幫助,以便在RADE開發環境下提供CAA幫助(這是V5R14下的,也不知是與別的版本不一樣還是是我的軟件的問題,別人說第一項也要安裝的,我的是空的):

d:\rade\B14\intel_a\code\bin\ToolsLicensing\CATVBTSetup.exe

2ppt課件3ppt課件4ppt課件3vc設定

Tools->customize然后你就會發現VC的menu多了些東西

5ppt課件

第二章CATIAV5組件體系結構分析及其軟件工程思想

CATIAV5是法國達索公司與IBM公司開發的新一代CAD/CAM產品。不同于老一代CAD/CAM產品,它采用了全新的、基于組件的開放式體系結構(OpenArchitectureProducts)。應用了許多現代軟件工程思想,整個體系結構雖然十分龐大,但結構清晰、合理。維護、開發、擴展方便。有著相當優良的擴展性能。它開放的組件應用架構允許更多的第三方供應商針對用戶的需要特別定制的應用解決方案。本文著重分析了CATIAV5的基礎體系結構(ArchitectureInfrastructure)及其軟件工程思想。以期對CATIAV5的學習和二次開發以及理解其它基于相同體系結構的軟件如:ENOVIALCA,DELMIA等有所幫助。6ppt課件CATIAV5在開發之初就遵循面向對象的設計思想(OO),構建了完全基于組件的體系結構(PPR:Products,Process,Resource),有效地解決了維護、管理、擴展的困難,并大量使用了最新的計算機技術和標準以及軟件工程技術,其中包括基于組件架構思想的JAVABEAN、COM/OLE、CORBA技術和Web技術、C++語言、VisualBasicJournaling、STEP-SDAI、XML、OpenGL等,這使CATIAV5具有與眾不同的鮮明的特點:數據結構單一,各個模塊全相關,某些模塊之間還是雙向相關;端到端的集成系統,擁有強大的專業應用擴展能力。

1.軟件組件結構(SCI:SoftwareComponentInfrastructure)的基本概念軟件組件結構(SCI)是軟件工程繼過程模型和面向對象模型的下一代邏輯模型。面向對象技術已在許多重要應用中取得成功。但是,隨著更多面向對象解決方法的開發和使用,很顯然的是,單單采用面向對象技術難以與軟件日益增長的復雜性抗衡。因為,對象只構成應用程序的一部分。它完全不能把握應用程序的結構(控制流)。只能通過重用類庫里有的類來實現有限的重用。但實際情況是,大量應用程序,特別是同一領域(DOMAIN)中的應用程序,分享相似的結構。不同的程序員使用不同的技術去把握和實現這些相似的結構。結果,這些結構并沒有經過通常的面向對象技術而被重用。7ppt課件

面向對象技術只能通過重用類庫已有的類來實現有限的重用,而軟件組件結構(SCI)提供了最高層次的代碼重用。軟件組件結構(SCI:SoftwareComponentInfrastructure)有三個基本的概念:框架(FRAMEWORK)、組件(Component)和對象總線(ProductsBus)。組件(Component):是軟件的基本量子(單元)。組件既應當足夠小,以便于維護;又應足夠大,可具備相當的功能,可以被打包和插用。由于傳統的客戶/服務器應用不能應付軟件應用日益增加的復雜性。它們不能加入到即插即用的環境之中。組件的特征提供了將一個應用程序分成若干個組件的機制。每個組件提供了一個相當專門的功能,它向框架的其余部分描述自己,以便別的組件能夠訪問它的功能。描述是通過說明性語言如IDL實現的,它本質上是把組件的接口與實現分離開來。由于組件是可單獨維護、升級的,因此,組件不直接與別的組件通信是至關重要的。它必須通過使用框架或對象總線來實現組件之間的交互。框架(FRAMEWORK):框架提供對所有應用程序有用的功能(如接口、存儲)。它提供了統一的總設計。框架是對相似應用程序集合的一個部分(統一但不完整)解決方案。開發者的任務是用這不完整的解決方案加上必要的代碼建立完整的應用。在領域(DOMAIN)內的一個應用包括不變部分和可變部分。不變部分由框架把握,一般可占到80%,可變部分由開發者把握,一般可占到20%。開發者通過向框架添加變化部分的代碼把握其動作,而形成新的特定應用。框架根據是否針對特殊領域還是若干領域,可分為水平框架、垂直框架、復合文擋框架。

8ppt課件

對象總線:對象總線是基本的中間件。它允許成千上萬能夠相互理解接口定義語言IDL的對象相互發生作用。這種作用對對象來說是完全透明的。對象總線把組件和框架的能力擴展到開放網絡和其它伙伴應用程序。它使成千上萬獨立的軟件單元在由不同操作系統、語言、硬件平臺和編譯工具組成的環境下互相無縫地交互運作。對象總線不僅提供對象之間的連接,它還提供對在總線上所有對象都有用的核心服務集(對象服務)。如:生命周期服務程序、安全性、持久性、命名等。

通過組件構造/修改軟件,用框架把握軟件結構,用對象總線連接事務,支持即插即用(Plug&Play)功能的擴展。

2.CATIAV5體系結構(ArchitectureInfrastructure)

CATIAV5的體系結構(ArchitectureInfrastructure)是一種面向行業應用的垂直框架體系結構,組件是CAD/CAM系統的各種幾何特征和管理、分析單元。框架是一些應用如:2D/3D建模、分析、混合建模、制圖、數控加工等,CATIAV5也稱為領域(DOMAIN)或應用(APPLICATION)。并通過3DPLMPPR(PRODUCTS,PROCESS,RESOURCE)HUB產品總線連接起來。其架構如下圖:9ppt課件CATIAV5的一些框架:

FrameworkAdministration

FrameworkAdvancedMathematics

FrameworkAdvancedTopologicalOpe

FrameworkAnalysisMeshingModel

FrameworkApplicationFrame

FrameworkAutomationInterfaces

FrameworkBasicTopologicalOpe

FrameworkCATAnalysisBase

FrameworkCATAnalysisGPSInterfaces

FrameworkCATAnalysisInterfaces

FrameworkCATAnalysisResources

FrameworkCATAnalysisVisuInterfaces

FrameworkCATAssemblyInterfaces

FrameworkCATFunctSystemItf

FrameworkCATHVDiagramInterfaces

FrameworkCATHullConceptualInterfaces

FrameworkCATIAApplicationFrame

FrameworkCATIAV4Interfaces

FrameworkCATMatInterfaces

框架通過公用接口來實現對象之間的交互。下圖是混合建模(HybridShape)的部分對象及其繼承關系。

10ppt課件3.CATIAV5體系結構的特點分析

CATIAV5采用了多種支持組件技術的軟件技術如:JAVA、COM/DCOM、CORBA等,內部模塊全部采用CNEXT(CATIA內部使用的一種C++語言)實現,結構單一。提供了多種開發接口,支持C++/JAVA、AutomationAPI,支持各種開發工具:CAAC++,JAVA,VB,腳本語言。采用單繼承,對象之間關系明確,體系結構嚴謹,維護容易。

根據CAD軟件的特點和實際需要,CATIA的設計模式比較簡單,主要有工廠模式、層模式等。在面向對象的編程中,工廠模式是一種經常被使用到的模式。根據工廠模式實現的類可以根據提供的數據生成一組類中某一個類的實例,通常這一組類有一個公共的抽象父類并且實現了相同的方法,但是這些方法針對不同的數據進行了不同的操作。

圖2

CATIA中的具體實現如下例所示:

如要做一條垂直于曲面的線,由對象繼承關系如下

+---CATBaseUnknown

|

+---CATBaseDispatch

|

+---AnyObject

|

+---HybridShape

|

+---Line

|

+---HybridShapeLineNormal

11ppt課件工廠的繼承關系:

+---CATBaseUnknown

|

+---CATBaseDispatch

|

+---AnyObject

|

+---Factory

|

+---HybridShapeFactory

先在HybridShapeLineNormal對象設定做這條線的屬性參數如:點、參考面,在公共抽象層Line中設定線的共同屬性如坐標、法矢等,然后調用HybridShapeFactory中的AddNewLineNormal方法進行對象實例化。

CATIAV5的產品總線PPR不是真正意義上的對象總線,缺乏真正對象總線的一些特征。它主要注重其它伙伴應用如EVOVIALCA、DELMIA的互操作和集成,因此稱之為“產品總線”。產品總線分層的,如機械設計基于MechanicalModeler&Sketcher,產品功能定義、EBOM、DMU,知識工程等與MechanicalModeler&Sketcher基于3DPLMPPRHUBOPENGATEWAY而文檔管理,PDM應用集成,配置管理等基于3DPLMENTERPRISEARCHITECTURE。(見圖1)并且全部應用都是基于CORBA,DCOM或J2EE之上。以實現真正意義上的對象總線功能。12ppt課件CATIA的一些基本概念l

Workshop和Workbench:它們為CATIA的功能模塊的組織。CATIA將其功能細分,每個人都可以選擇自己的模塊進入進行設計,簡化了界面。

如下圖:ModuleWorkbenchWorkshopFramework13ppt課件Catia對話框14ppt課件

對話框架包含在類CATInteractiveApplication下,此類如下:publicclassCATInteractiveApplication

,交互式應用的基類,作用:交互應用程序的基類,進化論是在單文檔,多文檔或者模態對話框,如catiav5版本那樣。為了創建你的交互式應用程序,你應該,創建一個從CATInteractiveApplication派生的類,并且重載BeginApplicationandEndApplication方法,但是不要直接實例化這個類對話框架主要包括兩個主要的類類型:

1:容器,主要包括組件對象的布置,容器即可見也可不可見,其本身并不和用戶打交道,除了重新配置和重新定義窗口大小。

2:組件:是填充容器的基本要素,其中大多數和用戶交互,包括控件,菜單,其它的包括分割條以及對其它控件的命名等的指標控件。下面介紹容器(Containers)

1容器主要用來包括幾個對話組件,比如窗口布置目標的組,可分類如下:窗口派生于抽象基類CATDlgWindow

15ppt課件16ppt課件CATDlgDialog:17ppt課件CATDlgNotifyCATDlgFile18ppt課件Boxes派生于抽象基類CATDlgBox.其用于包括幾個對話框架對象CATDlgContainerCATDlgSplitterCATDlgTabContainer19ppt課件CATDlgFrameCATDlgIconBox20ppt課件BarsCATDlgToolBar

CATDlgStatusBar

MenusCATDlgMenuCATDlgSubMenu

21ppt課件CATDlgContextualMenu

22ppt課件IndicatorsCATDlgSeparatorCATDlgLabelCATDlgProgress23ppt課件ControltoTriggeranActionCATDlgPushButton24ppt課件ControlstoSetOptionsCATDlgRadioButton

CATDlgCheckButton

ControlstoEnterorSelectTextsorValuesCATDlgSelectorList

25ppt課件CATDlgCombo

CATDlgEditor

26ppt課件CATDlgSpinner

CATDlgSlider

CATDlgMultiList

27ppt課件CATDlgScrollBaMenuItemsCATDlgPushItem

CATDlgRadioItem

28ppt課件CATDlgCheckItem

CATDlgSeparatorItem29ppt課件

第三章程序組成及調試1程序打開與調試1.1啟動VC

File-->OpenCAAV5Workspace

選擇當前CATIA的版本,要選到CATIA\B14這一目錄。30ppt課件1.2等程序自動運行完后,點close這時會提示你的frame下沒有模塊,點OK,會彈出對話框讓你選擇模塊。根據需要選擇。點OK。會彈出一下提示。31ppt課件這是提示你沒有定義prerequisite,選擇命令如下圖彈出以下對話框32ppt課件點擊add,找到CATIA的路徑添加到里面,如d:\CATIA\B14,點擊OK,會彈出。點擊close33ppt課件1.3編譯程序

選擇編譯命令MKMK會彈出下面左半部分對話框,選擇要編譯的模塊,第一次編譯一般要全選,以后只對修改的模塊進行編譯就可。

34ppt課件35ppt課件2程序的建立2.1工程(Workspace)的建立

2.1.1在VC“File”菜單中選擇“NewCAAV5Workspace…”,出現對話框:

在工程路徑中選擇或創建路徑,選擇“ToolLevel”為“V5R14_B14”,點擊Next。

選擇或創建工程路徑選擇或創建工程路徑36ppt課件

2.1.2創建Framework選項。系統提供了4個可用選項,可以不選擇或選擇第二項。

37ppt課件2.1.3若上面選擇了第二項,則顯示下面對話框。輸入Framework名字和選擇其類型。Framework提供兩種類型:應用和接口。功能也有三種:運用、測試和教學。Framework名稱類型選擇38ppt課件2.1.4確定Workspace的創建:

39ppt課件確定后VC文件視圖(FileView)如下:此時生成了一個帶有一個Framework的Workspace。CAA的開發提供了兩種模式:批處理模式(BatchMode)和交互模式(InteractiveMode)。我們開發主要用到的是交互模式。在此模式下,可以創建兩種交互界面:Workshop(Workbench)和Addin。前者是創建一個新的模塊,在這個模塊中除了標準的命令,其余均由用戶開發。后者指在已經存在的Workbench中插入新的工具條和命令。下面分別進行示例。40ppt課件

在建立工程后,必須先指定CATIA的安裝路徑,以搜索開發所需要的API資源。點擊“CAAV5Workspace”

“LocatePrerequisiteWorkspace…”,添加CATIA的安裝路徑。也就是定義prerequisite,具體步驟在打開文件時已經講過。需要注意的是注意此路徑為Intele_a文件夾的上層路徑。在這里,如果要引用其他Workspace的接口(Interface),也可以在這里指定此Workspace的路徑。41ppt課件2CAA工程的文件結構樹

每個WorkSpace至少需要包含一個Framework。一個Framework包含了一個工程的所有需要的元素,也即是,一個Framework即可以是你的一個工程。Framework的體系如下圖:42ppt課件l

PublicInterfaces:公共接口,在這個文件夾中是類的聲明,即.h頭文件。這些類可以為整個Framework的各個模塊共享,也可以被外部Framework使用。l

PretectedInterfaces:系統自動生成的module.h頭文件,供編譯連接時使用。這些模塊只能在本Framework使用。l

IdentityCard.h:本文件定義了所有用于編譯使用此Framework的預定義Framework。即,在開發過程中你使用了系統或者外部的API,你必須包含此API所在的頭文件,module和Framework,其中Framework的預定義就在這個文件中進行。其格式如下:

AddPrereqComponent("ApplicationFrame",Protected);//ApplicationFrame即為所連接的Frameworkl

Cnext文件夾:包含了Resources和Code兩部分,其具體的作用下文會具體闡述。Module文件夾:Module為組織程序代碼的一個基本容器。其結構如下圖:

43ppt課件其中:LocalInterfaces中是僅供本模塊使用的頭文件集合;Src是所有本模塊的.cpp文件集合;Imakefile.mk文件是所有本模塊所包含的頭文件所在外部Module的定義。在上面提到的IdentityCard.h中定義的是API所在的Framework,而相應的Module即在此文件中定義。在LINK_WITH后面添加需要連接的Modules。44ppt課件

下面用一個例子來說明程序的過程。下面的例子,我們在MechenicalDesign(機械設計)中插入一個名為“test”的Workbench。具體步驟如下:

1.在上面創建的workbace下繼續做,創建一個NewModule:選擇“Project”

“NewModule…”命令:

shared選項表示模塊共享,我們一般都選此選項,如果你做的是一個可執行的程序,如你的模塊只有一個main函數,你就可以選Executable.輸入module名,點OK.45ppt課件進入確定界面,顯示此Module信息:點擊OK后,創建了一個新的Module。此時VC中的文件視圖(FileView)如下:

46ppt課件生成的Module添加的頭文件在建立工程后,必須先指定CATIA的安裝路徑,(這是在打開或建立工程后的首要任務)以搜索開發所需要的API資源。點擊“CAAV5Workspace”

“LocatePrerequisiteWorkspace…”,添加CATIA的安裝路徑。點擊“Add”添加,如下圖所示:47ppt課件48ppt課件2.右鍵點擊Module1.m,將其設為當前工作Project(SetAsActiveProject)。選擇“Insert”

“CATIAResource”

“CATIAPattern…”,響應如下:選擇Workshop,點擊OK。3.Workshop或者Workbench選擇。選擇創建Workbench,并輸入其名稱。

49ppt課件第二個edit是讓你輸入workbench所在的workshop4.點擊接口瀏覽按鈕,選擇與Workbench所連接的Workshop。這里選擇PRDWorkshop,即為Product空間。在新創建的Workbench中,會包含Product空間的一些基本標準命令,如插入產品等。如果選擇Part空間,則會包含Part空間的一些基本命令。50ppt課件5.上述步驟結束后點擊Next,進入參數設置界面,直接進入NEXT。在這一步我不喜歡選前綴,原因我記不清了。反正不爽。

51ppt課件點擊Finish,設置完成,如下圖。

OK后,生成名為TestWb.m的module及其頭文件。

52ppt課件

6.在文件夾中刪除該Moudle文件夾,以及ProtectedInterfaces文件夾下的Module1.h頭文件,此時編譯會出現一個錯:

CATMeWorkbench.obj:errorLNK2001:unresolvedexternalsymbol"__declspec(dllimport)struct_GUIDIID_CATIPRDWorkshopConfiguration"(__imp_?IID_CATIPRDWorkshopConfiguration@@3U_GUID@@A)這實際上是找不到外部連接,在.mk文件中未注明包含CATIPRDWorkshopConfiguration.h這一個頭文件的Module,這一個Module名可查API。所以在.mk文件中加入:LINK_WITH=$(WIZARD_LINK_MODULES)\CATPrsWksPRDWorkshop

注:我每用一個新的API都得在相應的module下的imakfile.mk里添加其所在的模塊名,在frame下的identitycard.h里添加其所在的frame名。53ppt課件下面是幾個值得注意的地方(也就是定義資源,同一個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,……。分別對應于已有的Workshop。我們將其改為:MechanicalDesign。在文件:MyFrame1.dico中(Cnext/resource/code/dictionary),定義了此Workbench的連接庫。一個完整的Workbench創建完畢。編譯運行,結果如下:54ppt課件

下面簡單介紹addin的制作:所謂Addin,是在系統已有的Workbench中插入新的工具條或者菜單。下面的例子,我們來在PartDesign中插入一個工具條。

1、新建一個module命名為PartAddin,并將它設為active。

2、做接口CATIPrtWksAddin的implemention,insert->component,彈出對話框如圖:輸入addin的名字,點擊add再點擊瀏覽選擇要執行的接口,如圖:55ppt課件要選擇的接口為CATIPrtWksAddin注意Searchworkspace為你的CATIA安裝路徑,并將下面的單選框設為空。點ok完成。文件相應的試圖如下:56ppt課件

3、此時建立了一個空的Addin。在yourframe.dico文件中可以看到這個Addin的聲明:NewAddin CATIPrtWksAddin libPartDesignAddin但是,要創建一個工具條,我們還需要在這個類:NewAddin中添加一些函數。在NewAddin類中添加兩個Public函數聲明:

voidCreateCommands();CATCmdContainer*CreateToolbars();在NewAddin.cpp中添加宏定義:

#include"CATCommandHeader.h"MacDeclareHeader(PartCmdHeader);這兩個函數及宏都可以按ctrl+F1查到,CreateCommands里面的代碼只是用

MacDeclareHeader生成的PartCmdHeader定義命令的header(不知道怎么翻譯,就是工具條或菜單里面可以看到的執行命令的按鈕了,這個命令是連接界面命令和實現代碼的橋梁。)如: newPartCmdHeader(“point”,“CmdModule”,“TestCmd”,(void*)NULL);newPartCmdHeader("line","CmdModule","LinCmd",(void*)NULL);第一個參數是按鈕的名字,第二、三個代表按鈕執行的命令所在的module和命令的名字,參數四缺省就行了。57ppt課件CreateToolbars里面就是要建的工具條和菜單的主要內容:

NewAccess(CATCmdContainer,pPartBenchTlb,PartBenchTlb); NewAccess(CATCmdStarter,pPointCmd,PointCmd);SetAccessCommand(pPointCmd,"point");SetAccessChild(pPartBenchTlb,pPointCmd); NewAccess(CATCmdStarter,pLineCmd,LineCmd);SetAccessCommand(pLineCmd,"line");SetAccessNext(pPointCmd,pLineCmd);這三個函數都可以查到,NewAccess肯定是新建了,常用的類有CATCmdWorkbench(Theworkbench'saccessisaCATCmdContainerwhichcontainscontainers:oneforit'smenubarandoneforeachtoolbar.)

、CATCmdContainer(Classtocreatethecontainer'saccesslikeamenubar,amenu,asubmenu,atoolbaroraniconbox)、CATCmdStarter、(Astarterisaleafoftheworkshop'saccessestree.AteachstarteryouattachaCATCommandHeadertolaunchtheassociatedcommand.)58ppt課件NewAccess,SetAccessCommand,SetAccessChild,SetAccessNext等幾個命令的使用。其具體含義可以參看API文檔的說明。(SetAccessCommand

就是將starter與上面的PartCmdHeader

建立的東西連接了,注意參數“line”

)其他的顧名就可思義。4、此時編譯,發生幾個連接錯誤。主要是CATCmdContainer類型及Newaccess的定義的頭文件及其Module的添加。在.h文件中加上:#include"CATCmdContainer.h"在.cpp中加入:#include"CATCmdContainer.h"#include"CATCreateWorkshop.h"在.mk文件中加入:WIZARD_LINK_MODULES=\JS0FMJS0GROUPPrtWorkshopMechanicalModelerUIUUID\CATApplicationFrame#ENDWIZARDEDITIONZONE

LINK_WI

溫馨提示

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

評論

0/150

提交評論