CATIA CAA:在CATIA中创建自己的工具栏按钮和菜单 |
您所在的位置:网站首页 › catia工具栏位置乱跑 › CATIA CAA:在CATIA中创建自己的工具栏按钮和菜单 |
原文链接 注:本文在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 二、创建Addin1. 创建Module,shared object 2. 插入Component Component name:Addin名字 Interfaces adhesion:附着的接口。BOA/TIE/TIE chain为三种模式,具体区别见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 image image 三、创建Command1. 创建Module,shared object 2. 插入Command 见下图,各选项作用具体见Working with the RADE Dashboards - Part 2 image 四、代码实现——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 六、编译链接1. Addin模块的 Imakefile.mk 中添加 LINK_WITH = $(WIZARD_LINK_MODULES) CATApplicationFrame2. 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:命令被撤销时的动作 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |