文档章节

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

枫言风语
 枫言风语
发布于 2016/04/10 13:32
字数 827
阅读 106
收藏 0
点赞 1
评论 0

注:本文在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 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部分

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

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

 

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

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

Cancel:命令被撤销时的动作


本文转载自:http://www.cnblogs.com/ayanamistltz/archive/2012/11/29/2793947.html

共有 人打赏支持
枫言风语
粉丝 4
博文 41
码字总数 7796
作品 0
武汉
CATIA V5R19 CAA RADE 资源及详细安装过程

注意:以下只供学习之用,不可用于商业用途,如果下载有问题,可联系我,谢谢! 一、资源准备 开始安装前准备以下资源: 1、catia V5R19版本及破解文件:可在沐风网下载:http://www.mfcad....

枫言风语 ⋅ 2016/04/10 ⋅ 0

【Qt笔记】添加动作

本节,我们将在前面主窗口基础之上,添加菜单和工具栏等的动作。虽然 Qt Creator 已经帮我们实现了主窗口的框架代码,但是具体的功能,还是需要我们一行行添加。 Qt 使用类作为动作。顾名思义...

大道无名 ⋅ 2016/07/29 ⋅ 0

[ExtJs5.1.0系列-第4天]工具栏和菜单栏(1)-工具栏介绍

工具栏和菜单栏 前两节的内容,我们介绍了信息提示框和进度条,对ExtJs组件的配置及使用有了一定认识。本节内容将介绍工具栏(Ext.toolbar.Toolbar)组件和菜单(Ext.menu.Menu)组件的使用。 (本...

LSantorini ⋅ 2015/09/17 ⋅ 0

采用ActionSets创建插件菜单与工具栏

第一步、定义工作台窗口菜单 1)打开插件清单编辑器,选择Extensions选项卡,并点击【adding...】按钮。 2)在扩展点列表中选择"org.eclipse.ui.actionSets",并点击【确定】按钮。 3)右键点...

寒山石 ⋅ 2013/01/22 ⋅ 0

Web Search Pro

用您喜欢的方式搜索互联网。 特性: 采用一种搜索网页的新方式: 拖放——只需在任意网页上拖动文本,并且将其放在您的16个完全自定义放置区之一,您的搜索就开始了。 采用快速类型搜索:简单...

匿名 ⋅ 2008/09/19 ⋅ 0

ABBYY FineReader中工具栏怎样进行自定义

ABBYY FineReader的主窗口中有几个工具栏。工具栏按钮提供对程序命令的快捷访问。使用程序菜单或快捷键可以执行同样的命令,但通过工具栏能帮助我们更加方便的实现程序命令的快速访问,那么在...

ABBYY ⋅ 2015/10/12 ⋅ 0

BCGControlBar中文教程之Ribbon Bar(1/3)

BCGControlBar Pro for MFC最新试用版下载请猛戳>>> 介绍 "Ribbon"控件在Office 2007中通过微软引入的。这不仅仅只是一个新控件,还是一个全新的用户界面思想。Ribbon控件取代了传统的具有标...

Miss_Hello_World ⋅ 2016/08/09 ⋅ 0

Quick Preference Button

通过菜单栏的按钮来完成常用设置。包括下载和显示设置、标签设置、代理设置、用户代理欺骗(用户代理切换)、开启/关闭 Adblock 扩展等等。 初次安装后按钮会默认添加到菜单栏。如果你更喜欢...

匿名 ⋅ 2008/09/19 ⋅ 0

[IBM DW] 实战 Safari 扩展开发

简介: 今年 6 月 , Apple 刚刚发布了最新版本的 Safari 5, 其中很重要的一项功能就是扩展 (extension) 功能。 至此 , Firefox/Chrome/Safari 三大浏览器均已具备扩展支持 , 本文将详细介绍 ...

红薯 ⋅ 2010/11/13 ⋅ 0

BCGControlBar工具栏编辑器教程之菜单

BCGControlBar Pro for MFC最新试用版下载请猛戳>>> 工具栏编辑器允许您轻松地创建和管理应用程序工具栏。您可以为各种颜色模式、屏幕分辨率和具有命令ID的相关按钮添加工具栏按钮、创建并编...

Miss_Hello_World ⋅ 2016/11/04 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 34分钟前 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 54分钟前 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 今天 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

Spring boot 项目打包及引入本地jar包

Spring Boot 项目打包以及引入本地Jar包 [TOC] 上篇文章提到 Maven 项目添加本地jar包的三种方式 ,本篇文章记录下在实际项目中的应用。 spring boot 打包方式 我们知道,传统应用可以将程序...

Os_yxguang ⋅ 昨天 ⋅ 0

常见数据结构(二)-树(二叉树,红黑树,B树)

本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自coursera上普林斯顿的课程《Algorithms, Part I》中的Slides 相关命题的证明可参考《算法(第...

浮躁的码农 ⋅ 昨天 ⋅ 0

android -------- 混淆打包报错 (warning - InnerClass ...)

最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations are missing corresponding EnclosingMember annotation......

切切歆语 ⋅ 昨天 ⋅ 0

eclipse酷炫大法之设置主题、皮肤

eclipse酷炫大法 目前两款不错的eclipse 1.系统设置 Window->Preferences->General->Appearance 2.Eclipse Marketplace下载【推荐】 Help->Eclipse Marketplace->搜索‘theme’进行安装 比如......

anlve ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部