|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
Catia CAA 二次开发加入菜单工具条最简单的入门教程/ M5 Q/ J+ |: r0 }8 ?% v" r
5 G8 l9 N1 c: n2 W+ V8 m建立了一个空的Addin。在yourframe.dico文件中可以看到这个Addin的声明:6 P& P+ O9 F {, ]
NewAddin CATIPrtWksAddin libPartDesignAddin- j1 f6 N0 }- J: z% \
但是,要创建一个工具条,我们还需要在这个类:NewAddin中添加一些函数。
( v1 N8 K* |; Y7 Y4 N+ b# S* F# ~) `7 J在NewAddin类中添加两个Public函数声明:4 W( K- z5 l# n. u6 _8 Z" z
void CreateCommands();
. Z$ t2 h m& n* R4 ICATCmdContainer * CreateToolbars();
, e, C$ y7 K v6 R1 R' L; [在NewAddin.cpp中添加宏定义: m, I: _+ e" ~7 G* b
#include "CATCommandHeader.h" 7 s ^1 Y/ ~; W/ _
MacDeclareHeader(PartCmdHeader);) I3 K1 [) Y1 U2 g- @! X8 q
这两个函数及宏都可以按ctrl+F1查到, CreateCommands里面的代码只是用 MacDeclareHeader生成的PartCmdHeader定义命令的header(不知道怎么翻译,就是工具条或菜单里面可以看到的执行命令的按钮了,这个命令是连接界面命令和实现代码的桥梁。)如:
( z# ~1 g/ Z& F6 L7 unew PartCmdHeader(“point”,“CmdModule”,“TestCmd”,(void *)NULL);+ h; }* l; {* i9 B
new PartCmdHeader("line","CmdModule","LinCmd",(void *)NULL);2 y! o( j7 I+ m2 }5 P. K- _
第一个参数是按钮的名字,第二、三个代表按钮执行的命令所在的module和命令的名字,参数四缺省就行了。& @1 A* F q: I: m- M) t4 r
8 ~8 Y- x! M. t4 E- Q CreateToolbars里面就是要建的工具条和菜单的主要内容:8 D% v5 n; w+ o; V
NewAccess(CATCmdContainer,pPartBenchTlb,PartBenchTlb);1 S$ s. q, R/ O3 G; h( n: C7 {
NewAccess(CATCmdStarter,pPointCmd,PointCmd);+ }/ O' Y4 G. ]# q! I
SetAccessCommand(pPointCmd,"point");7 c' N: K0 V) }" j. ^
SetAccessChild(pPartBenchTlb,pPointCmd);0 s3 }& F* y( u; Y9 |
NewAccess(CATCmdStarter,pLineCmd,LineCmd);8 ^; X7 b% g5 Z
SetAccessCommand(pLineCmd,"line");
/ k5 a7 Z, T9 R; z SetAccessNext(pPointCmd,pLineCmd); 4 J3 [4 t+ ?& i2 K: u) n. b
这三个函数都可以查到, 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.! l2 r" @" P) c# b
)
; n# s7 h0 P' `
% m& X6 P$ X. ^$ n; O1 K Z1 K: ]6 E& @" _
NewAccess, SetAccessCommand, SetAccessChild, SetAccessNext等几个命令的使用。其具体含义可以参看API文档的说明。( SetAccessCommand 就是将starter与上面的PartCmdHeader 建立的东西连接了,注意参数“line” )其他的顾名就可思义。! c/ h' @3 {8 Q) d% o
7 S( U0 H+ o. g9 P
、此时编译,发生几个连接错误。主要是CATCmdContainer类型及Newaccess的定义的头文件及其Module的添加。在.h文件中加上:#include "CATCmdContainer.h"
4 y! C8 B' z+ o6 X1 f+ [ Q在.cpp中加入:#include "CATCmdContainer.h"
) e) ^+ q' x" a* x/ t) O# V+ Y. L$ p#include "CATCreateWorkshop.h"
' C* d! L3 u" a+ M在.mk文件中加入:WIZARD_LINK_MODULES = \
7 ^/ i- z& D9 S/ oJS0FM JS0GROUP PrtWorkshop MechanicalModelerUIUUID \3 z# ~2 F* Q& p4 V u0 e" I# Y0 u
CATApplicationFrame& h# H8 ?, a# w
# END WIZARD EDITION ZONE $ Q! B5 L! y$ x2 L- r: B
LINK_WITH = $(WIZARD_LINK_MODULES) \ i, }5 k9 J' h( ]* r* `; t
CATApplicationFrame
6 E4 j/ R8 S+ V# `在Identitycard.h中加入:
! Q* S7 T3 T0 J" O3 a# aAddPrereqComponent("ConstraintModelerUI",Protected);
! s/ p8 n. p( \% |/ l注意:每次换行时,都要加一斜线用来继续执行下面的module.
/ r. s, B( B9 L* P( D$ a( R% _% K, A
' v8 W) l1 b# b7 v; Q' m到此addin就做成了。剩下的就是定义资源文件,也就是换换名字或给按钮连接个图片。和前面的workbench一样工具条名字在“NewAddin.CATNIS”中进行定义:% y5 W. I. c" I! g. O
PartBenchTlb.Title=”测试工具条”;1 H2 I; v9 B5 c" _: P
在NewAddin.CATRsc定义图片。4 h8 W5 {* k4 h# r( f. h1 F% q: m `
NewAddin.point.Icon.Normal = “I_CAAPoint” ;(图片一般放在cnext/resource graphic\ Icon\Normal文件加下 , NewAddin.CATRsc文件可能不会自动生成,你可以在相应的文件加下新建一个问本文档,把后缀改成CATRsc再在VC里刷新你的工程就有了)。% C: W4 L- P: d- C% ?, p* ]8 W
3 u0 Y. T0 ]0 p3 \- I# A- u& V% ~+ v8 {! W
|
|