许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  通过CAA在CATIA中创建自定义工具栏按钮和菜单

通过CAA在CATIA中创建自定义工具栏按钮和菜单

阅读数 29
点赞 0
article_banner


    注:本文在CATIA P3 V5R19和VS2005下实现,文中的链接请自己在CAADoc中寻找
   


    Command(命令) 和 Access(按钮/菜单) 通过 Command Header联系起来
   


    各个标识符的命名习惯请参考 Checklist for CAA V5 C++ Naming Rules

一、准备工作


    1. 创建Workspace
   


    2. Locate Prerequisite Workspaces
   


    3. 创建Framework,Implementation / Development
   

二、创建Addin


    1.创建Module,shared object
   


    2. 插入Component
   


    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
   


三、创建Command


    1. 创建Module,shared object
   


    2. 插入Command
   


    见下图,各选项作用具体见 Working with the RADE Dashboards - Part 2


四、代码实现——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 HeadersCreating 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部分


     重载以下三个函数,完成需要实现的功能。
   


     (注意,我们选择的Command类型是Basic Command,相当于一个勾选框。如果要实现其他类型的按钮,可以选择Statechart Command)
   


    Activate():按钮激活时的动作
   


    Desactivate ():按钮失去焦点时的动作
   


    Cancel:命令被撤销时的动作
   
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空