经过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:命令被撤销时的动做

相关文章
相关标签/搜索