經過CAA在CATIA中建立本身的工具欄按鈕和菜單

注:本文在CATIA P3 V5R19和VS2005下實現,文中的連接請本身在CAADoc中尋找函數

 

Command(命令) 和 Access(按鈕/菜單) 經過 Command Header聯繫起來工具

各個標識符的命名習慣請參考Checklist for CAA V5 C++ Naming Rules ui

1、準備工做

1. 建立Workspacespa

2. Locate Prerequisite Workspaces設計

3. 建立Framework,Implementation / Development指針

2、建立Addin

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

 

 

3、建立Command

1. 建立Module,shared object

2. 插入Command

    見下圖,各選項做用具體見Working with the RADE Dashboards - Part 2

 

4、代碼實現——Addin部分

大部分代碼已自動生成,須要本身添加的以下:

.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

 

6、編譯連接

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,則此時進入 零件設計 或線框和曲面設計,將看到剛纔創建的按鈕或菜單

 

7、代碼實現——Command部分

重載如下三個函數,完成須要實現的功能。

(注意,咱們選擇的Command類型是Basic Command,至關於一個勾選框。若是要實現其餘類型的按鈕,能夠選擇Statechart Command)

 

Activate():按鈕激活時的動做

Desactivate ():按鈕失去焦點時的動做

Cancel:命令被撤銷時的動做

相關文章
相關標籤/搜索