|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
Catia CAA 二次开发加入菜单工具条最简单的入门教程
5 [' _" t* s7 b; w. x- Q& i5 J6 c9 N/ ^2 X
建立了一个空的Addin。在yourframe.dico文件中可以看到这个Addin的声明:1 Y+ L* h' V! r' A; C# |# U
NewAddin CATIPrtWksAddin libPartDesignAddin
* `4 I# l/ Q8 k! B但是,要创建一个工具条,我们还需要在这个类:NewAddin中添加一些函数。; T+ o: _. [) D- |- n H
在NewAddin类中添加两个Public函数声明:' P6 X, ?2 U/ w# Y7 N# i
void CreateCommands();. x% @3 B' F& t( H. s' i# b
CATCmdContainer * CreateToolbars();
6 O, u9 L1 ]; y; b$ E; s在NewAddin.cpp中添加宏定义:
/ M$ \' e: A1 j* X, b5 m$ f #include "CATCommandHeader.h" 1 s5 R9 l0 _+ I
MacDeclareHeader(PartCmdHeader); S" d6 z# [) O9 t: R6 g
这两个函数及宏都可以按ctrl+F1查到, CreateCommands里面的代码只是用 MacDeclareHeader生成的PartCmdHeader定义命令的header(不知道怎么翻译,就是工具条或菜单里面可以看到的执行命令的按钮了,这个命令是连接界面命令和实现代码的桥梁。)如: 4 i7 Y6 U% X; g4 ^
new PartCmdHeader(“point”,“CmdModule”,“TestCmd”,(void *)NULL);. l9 S, Z: `8 M
new PartCmdHeader("line","CmdModule","LinCmd",(void *)NULL);, [# f+ I' y# c! X
第一个参数是按钮的名字,第二、三个代表按钮执行的命令所在的module和命令的名字,参数四缺省就行了。& u3 } M: X7 R( Y. J
$ q4 T6 O0 i# }' p8 e CreateToolbars里面就是要建的工具条和菜单的主要内容:( S+ n2 T/ p* M/ ]7 ?* i- k5 B$ @) u
NewAccess(CATCmdContainer,pPartBenchTlb,PartBenchTlb);5 U1 V8 k* a4 o/ R
NewAccess(CATCmdStarter,pPointCmd,PointCmd);
! L# K- Y3 L( d SetAccessCommand(pPointCmd,"point");! `& a4 `4 x/ j. ~# N
SetAccessChild(pPartBenchTlb,pPointCmd);
9 y- {, W( K; \ NewAccess(CATCmdStarter,pLineCmd,LineCmd);
- s/ y. w. r4 u7 A, v/ e( n SetAccessCommand(pLineCmd,"line");
. S& L% e+ y1 h4 z; m SetAccessNext(pPointCmd,pLineCmd);
% u* _) S, T- i+ g7 ^' [0 o这三个函数都可以查到, NewAccess肯定是新建了,常用的类有CATCmdWorkbench(The workbench's access is a CATCmdContainer which contains containers: one for it's menubar and one for each toolbar. ) 、CATCmdContainer(Class to create the container's access like a menubar, a menu, a submenu, a toolbar or an icon box) 、 CATCmdStarter、(A starter is a leaf of the workshop's accesses tree. At each starter you attach a CATCommandHeader to launch the associated command.
4 T1 w! I+ P t" _! o)8 j9 d, `8 O! S$ k7 ]# J
2 D7 ]: n) N) L+ y8 B2 ^, }! m% S: l: D; I# C: p/ o
NewAccess, SetAccessCommand, SetAccessChild, SetAccessNext等几个命令的使用。其具体含义可以参看API文档的说明。( SetAccessCommand 就是将starter与上面的PartCmdHeader 建立的东西连接了,注意参数“line” )其他的顾名就可思义。8 t1 f. L+ g$ a( l9 B" Q* m
/ e; H$ l) V7 W) z; m
、此时编译,发生几个连接错误。主要是CATCmdContainer类型及Newaccess的定义的头文件及其Module的添加。在.h文件中加上:#include "CATCmdContainer.h"
7 t( m; L4 n0 D2 y$ O' {7 N在.cpp中加入:#include "CATCmdContainer.h"
; c0 o, b: p! a) F$ `#include "CATCreateWorkshop.h"
" [/ R+ ?" H- E1 S8 ]9 L在.mk文件中加入:WIZARD_LINK_MODULES = \6 P1 I2 \; ~% N, v c
JS0FM JS0GROUP PrtWorkshop MechanicalModelerUIUUID \6 ]8 b! {5 O$ ?+ @4 T g3 E1 S* j
CATApplicationFrame
4 r& o- v/ ^2 f0 J% w# END WIZARD EDITION ZONE
! X; p- [* l6 _* yLINK_WITH = $(WIZARD_LINK_MODULES) \
8 r4 v6 _8 u& {8 g" d# m+ x& A- U CATApplicationFrame * z4 n2 [: Y& W/ x$ N2 l+ r; P
在Identitycard.h中加入:' I4 j* l2 m5 h, F
AddPrereqComponent("ConstraintModelerUI",Protected);
4 _% I1 G& v9 \注意:每次换行时,都要加一斜线用来继续执行下面的module.
9 I+ a8 t0 K* A9 I) \5 v$ U1 V9 \6 r2 n2 b$ e/ Q
到此addin就做成了。剩下的就是定义资源文件,也就是换换名字或给按钮连接个图片。和前面的workbench一样工具条名字在“NewAddin.CATNIS”中进行定义:* c0 C- H& I6 q8 H
PartBenchTlb.Title=”测试工具条”;
$ R! O/ ^( _9 B1 T0 D- ?在NewAddin.CATRsc定义图片。 M% R. z- m5 _7 ~0 K; r. m" D$ Y
NewAddin.point.Icon.Normal = “I_CAAPoint” ;(图片一般放在cnext/resource graphic\ Icon\Normal文件加下 , NewAddin.CATRsc文件可能不会自动生成,你可以在相应的文件加下新建一个问本文档,把后缀改成CATRsc再在VC里刷新你的工程就有了)。3 {& S: ^5 Q4 M/ k8 m' I
0 D* z9 y& R5 v/ ~6 R! l, o4 b* k
1 r, V! o4 d& ^ |
|