|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
Catia CAA 二次开发加入菜单工具条最简单的入门教程
. Z5 W6 Q) h' K+ T7 u% ~3 Y9 ~" [* Q+ c1 B
建立了一个空的Addin。在yourframe.dico文件中可以看到这个Addin的声明:
: \7 Z5 h) j+ GNewAddin CATIPrtWksAddin libPartDesignAddin
5 N. q2 v+ b* C0 L5 J# k但是,要创建一个工具条,我们还需要在这个类:NewAddin中添加一些函数。9 J: D. U2 J8 p8 ~ G$ A9 B
在NewAddin类中添加两个Public函数声明:# z3 f4 Q5 g+ h- ?/ z; t
void CreateCommands();
1 y; T0 y. z9 V9 I% S' sCATCmdContainer * CreateToolbars();5 _: j3 k6 v$ Z& {8 C! p9 E
在NewAddin.cpp中添加宏定义:+ e6 C7 U+ X! t2 k
#include "CATCommandHeader.h" $ g, ~6 \4 y: n K+ _) F
MacDeclareHeader(PartCmdHeader);
7 {( R/ q% k% q: }5 O3 M/ B这两个函数及宏都可以按ctrl+F1查到, CreateCommands里面的代码只是用 MacDeclareHeader生成的PartCmdHeader定义命令的header(不知道怎么翻译,就是工具条或菜单里面可以看到的执行命令的按钮了,这个命令是连接界面命令和实现代码的桥梁。)如: % O C' B" N+ |; u5 p7 `
new PartCmdHeader(“point”,“CmdModule”,“TestCmd”,(void *)NULL);0 t u" D" P/ i( D3 p
new PartCmdHeader("line","CmdModule","LinCmd",(void *)NULL);
: V d+ b' n) e) Y, h6 B: Z第一个参数是按钮的名字,第二、三个代表按钮执行的命令所在的module和命令的名字,参数四缺省就行了。2 m) L2 T: X! h
& { j$ L" m$ R; l: V' h
CreateToolbars里面就是要建的工具条和菜单的主要内容:
" q/ C' I4 s2 [% k NewAccess(CATCmdContainer,pPartBenchTlb,PartBenchTlb);
9 B2 K5 _, o7 P$ S d# c( ^ NewAccess(CATCmdStarter,pPointCmd,PointCmd);* U5 q" ~: @* {9 Q3 z* ~1 D1 v2 V
SetAccessCommand(pPointCmd,"point");% Z: Q4 Q5 x; k) Q/ y: \/ G0 l- r
SetAccessChild(pPartBenchTlb,pPointCmd);- D, J7 V) S, z( T- L0 i8 @+ C
NewAccess(CATCmdStarter,pLineCmd,LineCmd);
) D4 L/ c' C1 G8 x5 g% } s SetAccessCommand(pLineCmd,"line");
6 A+ Q9 Y* q+ W% o SetAccessNext(pPointCmd,pLineCmd);
5 \9 T6 E& c1 Z这三个函数都可以查到, 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.
1 V F8 y, p0 u6 T8 T& t)
$ g+ h0 s9 f( r+ |
5 v- l3 v( Z, P# g& A# B
R$ z8 K" x: e! @7 GNewAccess, SetAccessCommand, SetAccessChild, SetAccessNext等几个命令的使用。其具体含义可以参看API文档的说明。( SetAccessCommand 就是将starter与上面的PartCmdHeader 建立的东西连接了,注意参数“line” )其他的顾名就可思义。
! U# m: C1 S7 m2 P
9 g: }) y4 |3 n, s6 ]6 ]) I、此时编译,发生几个连接错误。主要是CATCmdContainer类型及Newaccess的定义的头文件及其Module的添加。在.h文件中加上:#include "CATCmdContainer.h"0 F; q3 n, m' ~
在.cpp中加入:#include "CATCmdContainer.h"
7 a7 H' ]7 J. u* Q#include "CATCreateWorkshop.h"2 m5 `: D( x5 F; f
在.mk文件中加入:WIZARD_LINK_MODULES = \* J' o( h6 h5 b5 e2 ]6 N w
JS0FM JS0GROUP PrtWorkshop MechanicalModelerUIUUID \
; O" u# U+ H1 [3 d6 I7 B" H6 {( o& r, YCATApplicationFrame ]( z. G# t, q7 p* n
# END WIZARD EDITION ZONE
" `& Y5 a7 F' f. _$ S& E, uLINK_WITH = $(WIZARD_LINK_MODULES) \
" g. r* T9 J7 y CATApplicationFrame 3 u- {2 `- a: C9 U( W
在Identitycard.h中加入:. \' A; k9 V3 v% M9 w
AddPrereqComponent("ConstraintModelerUI",Protected);
! Z g4 N- j+ l0 f注意:每次换行时,都要加一斜线用来继续执行下面的module.' {# g% H9 ]3 W
( M0 M- G Q/ e$ h4 x7 U) `! E到此addin就做成了。剩下的就是定义资源文件,也就是换换名字或给按钮连接个图片。和前面的workbench一样工具条名字在“NewAddin.CATNIS”中进行定义:
0 e" H5 R* \) fPartBenchTlb.Title=”测试工具条”;, h6 g* O# `9 i' B* X! p
在NewAddin.CATRsc定义图片。& T4 C3 B3 @2 Q6 ]3 }. ~
NewAddin.point.Icon.Normal = “I_CAAPoint” ;(图片一般放在cnext/resource graphic\ Icon\Normal文件加下 , NewAddin.CATRsc文件可能不会自动生成,你可以在相应的文件加下新建一个问本文档,把后缀改成CATRsc再在VC里刷新你的工程就有了)。( p/ @% p4 N8 I/ e
8 [+ g% Q: D5 c( }8 y6 }$ x9 A3 n- {1 h
|
|