萬盛學電腦網

 萬盛學電腦網 >> 圖文處理 >> CAD >> CAD使用教程 >> 常見案例解析 >> 基於CATIA的界面二次開發方法與實例

基於CATIA的界面二次開發方法與實例

  本文介紹了在以Windows XP 為操作系統的微機上應用VC++ 6.0工具,基於Component Application Architecture(CAA) 組件應用架構的CATIA界面二次開發技術。並在此基礎上通過建立一個基於CATIA二次開發的五坐標數控機床的運動仿真系統,實例介紹了CATIA的二次開發的目前研究結果。

  一、引言

  CATIA(Computer Aided Three & Two Dimensional Interaction Application System,計算機輔助三維/二維交互式應用系統)V5是IBM/DS基於Windows核心開發的高端CAD/CAM軟件系統。目前CATIA最新的版本為V5R14。CATIA系統如今已經發展為集成化的CAD/CAE/CAM系統,它具有統一的用戶界面、數據管理以及兼容的數據庫和應用程序接口,並擁有20多個獨立的模塊。

  在國內,CATIA應用CAA 組件應用架構進行二次開發剛剛開始不久,相對人員比較少,資料不多,由於CATIA軟件功能的強大以及CAA二次開發功能的強大,探索和實現基於CATIA的二次開發技術具有很好的應用價值。

  二、CATIA的二次開發方式

  作為強大的工程軟件,CATIA具有很強的開放性能。用戶可以按照自己的需要,采用不同方式進行各種程度上的開發。

  CATIA二次開發接口是通過兩種方式與外部程序通信:進程內應用程序(In-process Application)方式和進程外應用程序(Out-Process Application)方式。進程內應用程序方式下,CATIA軟件與腳本運行在同一進程地址空間,比如宏方式(Macro)。在CATIA環境下通過菜單記錄宏(Record Macro),宏記錄後,生成VB腳本(Visual Basic Script)序列,當宏開始運行,CATIA就處於非激活狀態,因此不能宏調用之間存儲變量的值,這種方式比較簡單,在CATIA環境就中可完成。進程外應用程序方式下,CATIA與外部應用程序在不同進程地址空間運行。在CATIA運行的情況下,外部進程可以通過接口駕馭CATIA,創建、修改 CATIA環境和幾何形體的數據、尺寸等,同時支持對象連接與嵌入(OLE,Object Linking and Enbedding)。

  具體來說,CATIA的二次開發主要有兩種方法:使用宏對CATIA進行二次開發和使用組件應用架構(CAA-RADE)對CATIA進行二次開發。

  關鍵字: AutoCAD 2009 Photoshop手繪 AutoCAD對象 中望CAD AutoCAD三維造型

  本文介紹了在以Windows XP 為操作系統的微機上應用VC++ 6.0工具,基於Component Application Architecture(CAA) 組件應用架構的CATIA界面二次開發技術。並在此基礎上通過建立一個基於CATIA二次開發的五坐標數控機床的運動仿真系統,實例介紹了CATIA的二次開發的目前研究結果。

  1、 使用宏(Macro)對CATIA進行二次開發。

  可以用於自動化(Automation)組件,使用 VBScript作為編輯工具,這是一種交互方式的定制。可以記錄用戶的操作過程,自動生成代碼。CATIA提供了Automation API用於VBScript對CATIA的二次開發,Automation API具備了與任何OLE所兼容的平台進行通訊能力。自動化應用接口可以調用"InputBox"和"MsgBox"函數獲取用戶輸入信息和進行輸出,而對於NT用戶則可以應用Visual Basic來定義更為復雜的輸入輸出面板。運行的時候可以給宏關聯一個圖標,並置入CATIA顯示框架。這種方式的開發流程如圖1中所示。

基於CATIA的界面二次開發方法與實例 三聯

  圖1 使用VB進行CATIA二次開發的基本流程

  2、使用組件應用架構(CAA-RADE)對CATIA進行二次開發

  Component Application Architecture (CAA) 組件應用架構,是Dassault Systemes產品擴展和客戶進行二次開發的強有力工具。Dassault Systemes提供的CAA產品包括如下內容:

  CAA RADE 快速開發環境,基於Microsoft Visual Studio  & #61548;

  CAA CATIA V5 API, CATIA V5應用開發工具  & #61548;

  CAA ENOVIA LCA V5 API,ENOVIA LCA應用開發工具  & #61548;

  CAA DELMIA V5 API,DELMIA V5應用開發工具  & #61548;

  CAA ENOVIA PORTAL V5 API ,ENOVIA PORTAL V5應用開發工具

  快速應用研發環境Rapid Application Development Environment(RADE)是一個可視化的集成開發環境,它提供完整的編程工具組。RADE以Microsoft Visual C++6.0為載體,開發工具完全集成在了VC++環境中,並且提供了一個CAA框架程序編譯器,但同時也限制了VC++的部分功能。可以說CATIA CAA-RADE是目前所有高端CAD/CAM開發環境中最為復雜、同時也是功能最為強大的一個。

  關鍵字: AutoCAD 2009 Photoshop手繪

  本文介紹了在以Windows XP 為操作系統的微機上應用VC++ 6.0工具,基於Component Application Architecture(CAA) 組件應用架構的CATIA界面二次開發技術。並在此基礎上通過建立一個基於CATIA二次開發的五坐標數控機床的運動仿真系統,實例介紹了CATIA的二次開發的目前研究結果。

  CAA采用面向對象的程序語言,開發過程可看作是其組件對象的組合和擴展。CAA采用組件對象模型CAA采用面向對象的程序語言,開發過程可看作是其組件對象的組合和擴展。CAA采用組件對象模型(COM)和對象的連接和嵌入(OLE)技術,CAA的架構如圖2所示。

基於CATIA的界面二次開發方法與實例(2)

  圖2 CAA架構

  三、使用組件應用架構的CATIA界面二次開發方法

  下面的例子說明了如何使用CAA C++開發方式來建立一個CATIA內部程序。實現的功能是新建一個獨立的工作台(workbench),並在其下面實現添加自定義菜單,添加工具條以及按鈕圖標,插入CATIA風格的對話框。並生成對界面功能的響應,建立command,實現調用對話框,以及通過輸入參數直接用代碼生成一個三維模型,並在CATIA主窗口中顯示。

  1、 新建獨立的workbench

  CATIA V5將某類包含一系列交互命令的一些工具條分組顯示在不同的工作台(workbench)中,這樣有利於工具的查找和使用。通過自己新建的 workbench可以將自己二次開發形成的一系列命令集中顯示在一個工作台中,便於以後的操作。工作台的建立需要以下幾個步驟。

  創建工作台廠(factory)的接口(interface);

  創建工作台廠;

  創建工作台描述類;

  創建響應命令(command)的標題;

  創建工作台並排列圖標按鈕響應;

  提供圖片及提示等資源並將新建的工作台插入開始菜單;

  創建工作台的顯示界面。

  插入新建的工作台MyWorkBench後的CATIA開始菜單如圖3所示,它與CATIA現有的模塊成為並列關系。現在進入MyWorkBench工作台裡面沒有任何工具條及按鈕,下面添加這部分工具。

  關鍵字: AutoCAD 2009 Photoshop手繪 AutoCAD對象 中望CAD AutoCAD三維造型

  本文介紹了在以Windows XP 為操作系統的微機上應用VC++ 6.0工具,基於Component Application Architecture(CAA) 組件應用架構的CATIA界面二次開發技術。並在此基礎上通過建立一個基於CATIA二次開發的五坐標數控機床的運動仿真系統,實例介紹了CATIA的二次開發的目前研究結果。

  生成的新的工作台

  2、 添加工具條及按鈕

  首先創建按鈕的描述類 CAAAfrGeoCreationWkb,派生於CATBaseUnknown類。CATBaseUnknown是創建用戶界面並實現界面的基類,所有的接口都是從IUnknown/CATBaseUnknown繼承的。這個類中建立了兩個函數分別為CATCmdWorkbench *的CreateWorkbench()函數和無返回值類型的CreateCommands()。前面的函數是用來實現順序插入工具條、按鈕圖標以及菜單,後面的函數是實現對插入按鈕以及菜單和響應函數的關聯。

  在CreateWorkbench()函數中用到了宏 NewAccess(className,variableName,objectName)。CATIA的工作場(workshop)或者工作台 (workbench)可以被看作是一個入口的集合包,使用NewAccess宏可以創建一個這樣的入口。使用 SetAccessChild(variableName,childName)以及SetAccessNext (variableName,nextName)這兩個宏則可以連接入口。其中className表示被創建類的類型,包括以下幾種類型:CATCmdContainer,CATCmdWorkshop,CATCmdSeparator,CATCmdStarter。下面就是創建了一個按鈕的容器,也就是工具條,並在其中添加按鈕的部分代碼。

  NewAccess(CATCmdContainer,pCAAAfrTB1EltTlb,CAAAfrTB1EltTlb);//創建工具條pCAAAfrTB1EltTlb

  SetAccessChild(pCAAAfrGeoCreationWkb, pCAAAfrTB1EltTlb); //工具條加入工作台

  //創建按鈕cmd1,並設置其響應宏為CAAAfrCmd1Hdr,最後將其加入工具條TB1中

  NewAccess(CATCmdStarter,pCAAAfrTTB1EltCmd1Str,CAAAfrTTB1EltCmd1Str);

  SetAccessCommand(pCAAAfrTTB1EltCmd1Str,"CAAAfrCmd1Hdr");

  SetAccessChild(pCAAAfrTB1EltTlb,pCAAAfrTTB1EltCmd1Str);

  接下來繪制一個圖標,並在CAAAfrGeoCreationWkbHeader.CATRsc中將其關聯,具體如下,則cmd1按鈕顯示的是CAACmd1.Bmp圖標。本文介紹了在以Windows XP 為操作系統的微機上應用VC++ 6.0工具,基於Component Application Architecture(CAA) 組件應用架構的CATIA界面二次開發技術。並在此基礎上通過建立一個基於CATIA二次開發的五坐標數控機床的運動仿真系統,實例介紹了CATIA的二次開發的目前研究結果。

  CAAAfrGeoCreationWkbHeader.CAAAfrCmd1Hdr.Icon.Normal = "I_CAACmd1"

copyright © 萬盛學電腦網 all rights reserved