注:本文在CATIA P3 V5R19和VS2005下實現,文中的連接請本身在CAADoc中尋找函數
Command(命令) 和 Access(按鈕/菜單) 經過 Command Header聯繫起來工具
各個標識符的命名習慣請參考Checklist for CAA V5 C++ Naming Rules ui
1. 建立Workspacespa
2. Locate Prerequisite Workspaces設計
3. 建立Framework,Implementation / Development指針
1. 建立Module,shared objectcode
2. 插入Componentorm
Component name:Addin名字接口
Interfaces adhesion:附着的接口。BOA/TIE/TIE chain爲三種模式,具體區別見pdf和CAADoc中的Working with the RADE Dashboards - Part 2。(請選擇TIE,BOA在運行時會出錯)資源
3. 選擇Interface
Search Workspace:CATIA的安裝路徑,注意最下面的複選框不要勾上
Interface 決定了工具欄/按鈕出如今哪一個 Workshop/ Workbench 中,如CATIPrtWksAddin則出如今零件設計中
具體見CAADoc——C++ API——Object/Class Hierarchy
1. 建立Module,shared object
2. 插入Command
見下圖,各選項做用具體見Working with the RADE Dashboards - Part 2
大部分代碼已自動生成,須要本身添加的以下:
.h文件中:
預編譯部分
class CATCmdContainer; // 聲明類,下面要用到返回值類型CATCmdContainer*
類聲明public部分:
//------------------------添加建立Toolbar和Command Header的函數----------------------// void CreateCommands(); CATCmdContainer * CreateToolbars(); //-----------------------------------------------------------------------------------//
.cpp文件中:
預編譯部分
#include "CATCmdContainer.h" #include "CATCreateWorkshop.h" // 包含管理 Access 的一系列宏 #include "CATCommandHeader.h" MacDeclareHeader(WorkblankHdr); // 該宏用於建立 command header class,一個class內可建立(new)多個command header
函數實現部分
void WorkblankToolbar::CreateCommands() { new WorkblankHdr( "Generate", // command header標識符(也用於定義顯示的文本或圖標等資源) "WorkblankCmds", // 所關聯command的代碼在哪一個模塊/庫/DLL裏 "GenerateCmd", // 所關聯的command名(即類名) (void *)NULL); // 可選的傳遞參數(傳遞給command,肯定不一樣的操做)} CATCmdContainer* WorkblankToolbar::CreateToolbars() { NewAccess ( CATCmdContainer, pWorkblankTlb, WorkblankTlb ); // 參數1:工具欄CATCmdContainer的實例 // 參數2:指向該工具欄的句柄指針 // 參數3:該工具欄的標識符 // 2和3本身命名,保證標識符惟一 NewAccess ( CATCmdStarter, pWorkblankStr, WorkblankStr ); // 按鈕是CATCmdStarter的實例,後兩個同上 SetAccessCommand ( pWorkblankStr, "Generate" ); // 關聯(按鈕句柄,Command Header標識符) SetAccessChild ( pWorkblankTlb , pWorkblankStr ); // 設置父子關係(父句柄,子句柄) // 若在該工具欄上再添加一個按鈕,則第三行改成設置鄰接關係: // SetAccessNext (WorkblankStr, 按鈕句柄); AddToolbarView ( pWorkblankTlb , 1 , Left ); // 參數1:工具欄句柄 // 參數2:1 工具欄可見,-1(默認) 不可見 // 參數3:工具欄固定在右邊 return pWorkblankTlb; }
更多實例請參見 Creating Standard Command Headers 和 Creating an Add-in
1. Addin模塊的 Imakefile.mk 中添加
LINK_WITH = $(WIZARD_LINK_MODULES) CATApplicationFrame
2. Framework的 IdentityCard.h 中添加
AddPrereqComponent ("ApplicationFrame",Protected);
3. mkmk
4. Create/Update Runtime View
5. Open Runtime Windows
輸入 cnext,等待CATIA打開
若此前 Addin 附着的接口是 CATIPrtWksAddin,則此時進入 零件設計 或線框和曲面設計,將看到剛纔創建的按鈕或菜單
重載如下三個函數,完成須要實現的功能。
(注意,咱們選擇的Command類型是Basic Command,至關於一個勾選框。若是要實現其餘類型的按鈕,能夠選擇Statechart Command)
Activate():按鈕激活時的動做
Desactivate ():按鈕失去焦點時的動做
Cancel:命令被撤銷時的動做