PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

PLM之家PLMHome-国产软件践行者

[资料] CATIA二次开发入门教程---10 添加Add in菜单和工具条

[复制链接]

2019-4-9 11:30:42 6649 1

admin 发表于 2017-1-19 22:46:47 |阅读模式

admin 楼主

2017-1-19 22:46:47

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
CATIA二次开发入门教程---10 添加Add in菜单和工具条9 B- _# }, `/ j/ s$ v! p

; Q" }! a: c! _" |/ f. U$ X所谓Addin,是在系统已有的Workbench中插入新的工具条或者菜单。
3 g! y$ x" M+ `我们来在PartDesign中插入一个工具条。+ o2 A; A# c8 e7 D$ t  t
1、新建一个module命名为myPartAddin,并将它设为active。
/ [$ G, v& P% }, u( @ 2、做接口CATIPrtWksAddin的implemention, insert->component,弹出对话框
4 d- p: {" d! n1 ?" M输入addin的名字,点击add再点击浏览选择要执行的接口,如图:

- u0 d0 M& _6 P1 a2 W4 T) o addmin.png
' o" n0 H+ \2 e) m+ p% t9 }, X3 K1)接口可以多选。2)除了 CATIPrtWksAddin 外,还有四个最常用的接口,
: K( P$ E, T4 E5 Y9 LCATIPRDWorkshopAddin 表示当前工具条在装配环境下显示;CATIDrwAddin 表示当前  A! r- y0 @6 Y( y( [
工具条在工程制图工作台下显示;CATIAMGProgramAddin 表示当前工具条在 AMG 工作
6 L2 \! m4 o7 @8 ~+ v  ~1 O$ ~台下显示;CATIAfrGeneralWksAddin 对应普通工作台,即打开 CATIA 后,任何 Workbench( O0 Y$ x$ C$ r- A# v
下都显示当前工具条。
6 J5 k% T1 b5 }+ E1 k1 m
  3、此时建立了一个空的Addin。在myframe.dico文件中可以看到这个Addin的声明:. G5 k: p5 i( b. C- s
myAddin CATIPrtWksAddin libmyModule
9 p& y# k) M1 k4 a但是,要创建一个工具条,我们还需要在这个类:NewAddin中添加一些函数。
+ N1 S+ _8 D' J在NewAddin类中添加两个Public函数声明:
6 ]) K, ?$ R& }( s
void CreateCommands();
! O5 s1 _  e1 a6 \1 D( E0 A' ^3 YCATCmdContainer * CreateToolbars();

. P+ Y1 n+ ^* w7 @) ^) F* t/ b在NewAddin.cpp中添加宏定义:
1 a% k( s& U7 |' ~% H#include "CATCommandHeader.h"        
" z5 E" P& r/ t7 b) bMacDeclareHeader(PartCmdHeader);

, x. z' v) ~  b1 q这两个函数及宏都可以按ctrl+F1查到, CreateCommands里面的代码只是用 MacDeclareHeader生成的PartCmdHeader定义命令的header(不知道怎么翻译,就是工具条或菜单里面可以看到的执行命令的按钮了,这个命令是连接界面命令和实现代码的桥梁。)如: " z5 ^# I5 I+ [
new PartCmdHeader("Create Point","CmdModule","PointCmd",(void *)NULL);
" ~' D( n) M3 B5 w/ onew PartCmdHeader("Create Line","CmdModule","LineCmd",(void *)NULL);

% q; W- F& O3 z+ {: ?* t( ~) Q% c第一个参数是按钮的名字,第二、三个代表按钮执行的命令所在的module和命令的名字,参数四缺省就行了。
7 Z5 k: E& a8 Q' A" X
* r4 F6 H7 Q' \. \) _CreateToolbars里面就是要建的工具条和菜单的主要内容:
7 _5 K  e5 M7 h, t  G" A6 `; k4 I2 d- i
3 [2 n/ ~0 o5 s0 E2 c0 O3 J
//设置工具条
' T: Q0 K, h) R  S7 Z# @ NewAccess(CATCmdContainer,pPartBenchTlb,PartBenchTlb);0 ]; e1 K2 k9 T3 h( ~0 @
   AddToolbarView(pPartBenchTlb,1,Right);
! G- W/ j! X! a1 J! m1 \
NewAccess(CATCmdStarter,pPointCmd,PointCmd);0 c4 l# |' {1 y, I- J, b
SetAccessCommand(pPointCmd,"Create Point");" `3 u# B! \3 X! \$ U. }
SetAccessChild(pPartBenchTlb,pPointCmd);
8 b( i7 w/ x0 q: { NewAccess(CATCmdStarter,pLineCmd,LineCmd);
/ ^' P8 B2 @5 t" w SetAccessCommand(pLineCmd,"Create Line");( g  a/ R& z, p4 C" N
SetAccessNext(pPointCmd,pLineCmd);
5 o7 ~* E! X* M+ l, r
2 z2 Y# k! ]% ?: @/ F8 e5 V# e
//设置菜单

8 E+ Y, c- K* z$ ^) X6 Y$ Q/ g: Y NewAccess(CATCmdContainer,pPartBenchMun,PartBenchMun);
4 l& a- J1 p6 d1 i0 P$ _6 D6 @ NewAccess(CATCmdContainer,pPartBenchSmu,PartBenchSmu);
7 ~& G! X+ [0 N8 r  M NewAccess(CATCmdStarter,pPointCmdm,PointCmdm);
, P3 \# H! t9 a  k) `% } SetAccessCommand(pPointCmdm,"Create Point");  Q# K' B+ V# |4 q1 j2 q! _
    NewAccess(CATCmdStarter,pLineCmdm,LineCmdm);* a8 |( |, l* _% F
    SetAccessCommand(pLineCmdm,"Create Line");
, c; J  d' s- E6 @9 P+ B. e) |- ~ & x& N* k4 }6 H6 d: z
SetAccessChild(pPartBenchMun,pPartBenchSmu);! ?0 r% [, Y' D5 T3 P
    SetAccessChild(pPartBenchSmu,pPointCmdm);% f- s0 m# K6 X
SetAccessNext(pPointCmdm,pLineCmdm);
) G2 Z1 q; F* e$ o, _7 W    SetAddinMenu(pPartBenchTlb,pPartBenchMun);
: j2 x: A$ @& z" ^工作台、工具条、菜单栏中常见的一些宏 NewAccess()、SetAccessCommand()、
( F3 t0 R2 e! X+ Y( N8 c$ W5 OSetAccessChild() 、 SetAccessNext() 、 AddToolbarView() 、 SetWorkbenchMenu() 、
7 U& N9 q9 Y2 VSetWorkshopMenu()、SetAddinMenu()等
2 p& C% N' u0 K) D  ?) p: t3 oNewAccess 的函数定义如下: * P/ Q+ ]2 k- p. f( r1 `7 J! N
Macro NewAccess (className,variableName,objectName)
' l5 n+ w$ _& C& y3 e其中:className 包括 CATCmdContainer(表示菜单条、菜单、子菜单或者工具条)、
" e$ }( J& O! w% Q) ^5 rCATCmdWorkshop、CATCmdWorkbench、CATCmdStarter(表示命令)、CATCmdSeparator(表' s/ n) m# ?7 x) A
示分隔符)

0 ^$ ^2 C' G/ \& }
$ J7 ?2 f4 Y2 ~5 I2 zNewAccess, SetAccessCommand, SetAccessChild, SetAccessNext等几个命令的使用。其具体含义可以参看API文档的说明。其他的顾名就可思义。
5 {0 f; `& P! |; |( ^# u4、此时编译,发生几个连接错误。主要是CATCmdContainer类型及Newaccess的定义的头文件及其Module的添加。在.h文件中加上:#include "CATCmdContainer.h"5 \( k8 ]2 l/ e+ ~# Z" Y, F
在.cpp中加入:#include "CATCmdContainer.h"
) k9 r: O9 O1 w6 [8 J#include "CATCreateWorkshop.h"7 w0 z  j5 d9 c$ s) i
在.mk文件中加入:WIZARD_LINK_MODULES =  \
( R  d+ z/ _/ U, s; XJS0FM JS0GROUP PrtWorkshop MechanicalModelerUIUUID \- Y' f$ C! F/ N, F' I
CATApplicationFrame+ j# h$ l; r/ s4 ]) y) r
# END WIZARD EDITION ZONE
4 ?6 K, o( Q1 q, x$ t" T- y1 `8 ]LINK_WITH = $(WIZARD_LINK_MODULES)  \3 a) i9 }& D7 P2 J2 S, R, z
          CATApplicationFrame # L% O7 l4 L5 I7 L
在Identitycard.h中加入:
1 w1 m) j  r, PAddPrereqComponent("ConstraintModelerUI",Protected);' s7 `& V, D" ], b9 a. p% u& g6 J0 {
注意:每次换行时,都要加一斜线用来继续执行下面的module.
; ~$ l3 j9 e. }+ h9 Z

, C* G( u' O  V6 e" o5 u% J
7 \6 a" w) X% Q7 |: {重新进入编译后,可以看到结果如下:
6 V4 B- I7 K0 ^- R0 S( p9 E7 ]; s0 `) v4 M# K& \
tool.jpg
) @( l7 l& k; N( M, m5 J4 s+ h1 D
3 q$ W* u* ]* }" ?( X
, `! J* j+ I* S: d/ g+ p( F  K% H6 J
6 C" Z8 A' P; _* f

$ B( U, b, L/ P. D  Z  ^3 ~' ]% k6 @# I
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复1

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了