|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
Catia CAA 二次开发加入菜单工具条最简单的入门教程, O. G. {9 T4 W8 ^: p1 D
( j) X% @" j' P7 x3 L/ c1 i
建立了一个空的Addin。在yourframe.dico文件中可以看到这个Addin的声明:0 q T5 x- A- h3 h1 @" d
NewAddin CATIPrtWksAddin libPartDesignAddin3 h1 L8 J6 D2 k$ j2 I0 _6 q
但是,要创建一个工具条,我们还需要在这个类:NewAddin中添加一些函数。0 A- v1 Z* Y% B7 n
在NewAddin类中添加两个Public函数声明:( F" J! |5 s$ W4 Y
void CreateCommands();
a. m2 L" Q- h3 l. a NCATCmdContainer * CreateToolbars();4 X; K; l: s$ _% A" ]; p
在NewAddin.cpp中添加宏定义:' Q' v( G% I- W" e) k( G
#include "CATCommandHeader.h" % k' ~/ _0 @2 a+ s; [
MacDeclareHeader(PartCmdHeader);4 U6 m/ X$ L! A% j
这两个函数及宏都可以按ctrl+F1查到, CreateCommands里面的代码只是用 MacDeclareHeader生成的PartCmdHeader定义命令的header(不知道怎么翻译,就是工具条或菜单里面可以看到的执行命令的按钮了,这个命令是连接界面命令和实现代码的桥梁。)如:
# R1 m/ G. i0 m9 N2 u* O! a, [/ x7 Wnew PartCmdHeader(“point”,“CmdModule”,“TestCmd”,(void *)NULL);
, a* @ B: b, L! Onew PartCmdHeader("line","CmdModule","LinCmd",(void *)NULL);% b! E I1 {4 {& z9 e- @9 G2 C6 y& |
第一个参数是按钮的名字,第二、三个代表按钮执行的命令所在的module和命令的名字,参数四缺省就行了。
7 i" z0 ~% s) j; T. q) [( h; t
% A% L$ C9 Z" {, J% j6 e# P+ M- \ CreateToolbars里面就是要建的工具条和菜单的主要内容:& f+ g( x. @! I
NewAccess(CATCmdContainer,pPartBenchTlb,PartBenchTlb);
. K% y2 z) }4 L& W: \ NewAccess(CATCmdStarter,pPointCmd,PointCmd);
$ l7 U7 e( D& P) G& O5 Q& |3 P SetAccessCommand(pPointCmd,"point");
3 Q" ?1 J8 U h+ @" G SetAccessChild(pPartBenchTlb,pPointCmd);/ v* b5 o2 Y( e
NewAccess(CATCmdStarter,pLineCmd,LineCmd);, I4 F' Y# d* S# Q
SetAccessCommand(pLineCmd,"line");
! |0 l; e, m2 }. w$ |) Q/ @9 d SetAccessNext(pPointCmd,pLineCmd);
8 o8 h4 L9 K. r这三个函数都可以查到, 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.% j4 S5 }. [+ ?) N; q
)
9 ]1 b' c R, G6 ]3 D- R) y$ I2 e' d, d6 @5 W2 m
% }- Z2 N& \7 f2 F% ^NewAccess, SetAccessCommand, SetAccessChild, SetAccessNext等几个命令的使用。其具体含义可以参看API文档的说明。( SetAccessCommand 就是将starter与上面的PartCmdHeader 建立的东西连接了,注意参数“line” )其他的顾名就可思义。' L( A' `9 n' Z
2 {# g" ]8 h) |! J \( R3 ]、此时编译,发生几个连接错误。主要是CATCmdContainer类型及Newaccess的定义的头文件及其Module的添加。在.h文件中加上:#include "CATCmdContainer.h"4 j/ G: m) {" m% C& K5 x
在.cpp中加入:#include "CATCmdContainer.h"
& o. a( c1 x! e0 e9 {#include "CATCreateWorkshop.h" r$ l% T5 [# I
在.mk文件中加入:WIZARD_LINK_MODULES = \( k1 O* m4 A, v& Q
JS0FM JS0GROUP PrtWorkshop MechanicalModelerUIUUID \
; s; @6 h% r% l7 ~4 H$ MCATApplicationFrame7 l, Q3 W; e- a: F `6 j- q# ~9 T
# END WIZARD EDITION ZONE
# |+ u$ M1 {; ^, ~. G" R$ Z: F2 P: FLINK_WITH = $(WIZARD_LINK_MODULES) \
; |! ?2 f |/ B7 y, v. V1 ? CATApplicationFrame
6 M$ B2 M9 d6 _- ?$ D( @在Identitycard.h中加入:
" b- }# N; n+ m1 J1 {; JAddPrereqComponent("ConstraintModelerUI",Protected);
' R! ~7 g7 }2 V/ T- [$ j+ d注意:每次换行时,都要加一斜线用来继续执行下面的module.- o6 j1 p8 U; b9 s% h
6 ^% b1 Y0 B: u& _' C3 h; }
到此addin就做成了。剩下的就是定义资源文件,也就是换换名字或给按钮连接个图片。和前面的workbench一样工具条名字在“NewAddin.CATNIS”中进行定义:/ N" m8 H9 z, j D: T
PartBenchTlb.Title=”测试工具条”;
8 C, F8 f* E X& ?# Q在NewAddin.CATRsc定义图片。
' U0 x8 K" A& w: jNewAddin.point.Icon.Normal = “I_CAAPoint” ;(图片一般放在cnext/resource graphic\ Icon\Normal文件加下 , NewAddin.CATRsc文件可能不会自动生成,你可以在相应的文件加下新建一个问本文档,把后缀改成CATRsc再在VC里刷新你的工程就有了)。
- x4 C, m, I( N
6 o, r9 U) t Q; }) I$ J
+ k' b$ F' l- Y: a |
|