|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
Catia CAA 二次开发加入菜单工具条最简单的入门教程; s6 a7 v q1 [# l0 W& t
8 {2 M5 a0 E! y, {* Z
建立了一个空的Addin。在yourframe.dico文件中可以看到这个Addin的声明:
0 y* Q1 B3 k. v5 x: z# Y! ]NewAddin CATIPrtWksAddin libPartDesignAddin4 o" T: g- p0 Y& A: M+ ^) g5 I: g! d
但是,要创建一个工具条,我们还需要在这个类:NewAddin中添加一些函数。
8 P7 w/ Q! f# Q6 D% S; z+ ~在NewAddin类中添加两个Public函数声明:
+ d9 i' z( q. V$ b3 a% \2 @/ n' ]2 l5 f2 ] void CreateCommands();# g9 |4 ?& d5 B1 C
CATCmdContainer * CreateToolbars();; B, {& Z- k( U4 M1 ~$ l
在NewAddin.cpp中添加宏定义:
5 r0 o2 W' }1 A! ` D #include "CATCommandHeader.h" % M# j% S' u& z1 P1 O
MacDeclareHeader(PartCmdHeader);1 C/ `9 [) P1 W' a& i0 f
这两个函数及宏都可以按ctrl+F1查到, CreateCommands里面的代码只是用 MacDeclareHeader生成的PartCmdHeader定义命令的header(不知道怎么翻译,就是工具条或菜单里面可以看到的执行命令的按钮了,这个命令是连接界面命令和实现代码的桥梁。)如:
8 ^+ H/ _3 N- S" V; Inew PartCmdHeader(“point”,“CmdModule”,“TestCmd”,(void *)NULL); Q" A6 N7 x: o7 M* Y7 R! C) d
new PartCmdHeader("line","CmdModule","LinCmd",(void *)NULL);: A( n- s q, d: ]1 t, X' T
第一个参数是按钮的名字,第二、三个代表按钮执行的命令所在的module和命令的名字,参数四缺省就行了。$ W. _% {" ]& O# P( U
: N# N- f" F1 g% y3 e C8 M CreateToolbars里面就是要建的工具条和菜单的主要内容:
. r* X% w \1 q, @! n NewAccess(CATCmdContainer,pPartBenchTlb,PartBenchTlb);7 i, g0 Q0 n% E3 D
NewAccess(CATCmdStarter,pPointCmd,PointCmd);# F: \5 U; h6 o: K d* Z+ \. W* _
SetAccessCommand(pPointCmd,"point");
# M+ K6 h/ Q! R SetAccessChild(pPartBenchTlb,pPointCmd);
$ }+ O5 B/ A% A6 n/ [- K8 d NewAccess(CATCmdStarter,pLineCmd,LineCmd);
0 w2 v- V% N- ~4 _$ e7 O SetAccessCommand(pLineCmd,"line");, \# I% z3 f8 {& B
SetAccessNext(pPointCmd,pLineCmd);
' x& w7 Z) i5 Q4 f$ [这三个函数都可以查到, 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.- w0 E6 q& o7 j3 ~! r4 j
) R E" P2 W& Q w3 i& B* i
5 Q, L9 X! u2 m8 z: x$ p* `9 p" E
9 T$ x9 o a, D* V) B) pNewAccess, SetAccessCommand, SetAccessChild, SetAccessNext等几个命令的使用。其具体含义可以参看API文档的说明。( SetAccessCommand 就是将starter与上面的PartCmdHeader 建立的东西连接了,注意参数“line” )其他的顾名就可思义。0 \# ^; z4 y" O
$ C1 h7 b# M7 \1 g" l
、此时编译,发生几个连接错误。主要是CATCmdContainer类型及Newaccess的定义的头文件及其Module的添加。在.h文件中加上:#include "CATCmdContainer.h"
4 D2 D# F+ R0 H7 N- q/ q在.cpp中加入:#include "CATCmdContainer.h"
0 u( V. \2 [4 o5 n2 a( e#include "CATCreateWorkshop.h"" y, p: g1 e' O8 g( f( E2 f1 H, G
在.mk文件中加入:WIZARD_LINK_MODULES = \: n: l" Z1 ]) ?2 E7 ^
JS0FM JS0GROUP PrtWorkshop MechanicalModelerUIUUID \
) [1 }6 J8 g: B9 PCATApplicationFrame
+ q5 O3 T& e4 B& [/ ^# END WIZARD EDITION ZONE 9 M& v$ V; q9 Z9 B( v i
LINK_WITH = $(WIZARD_LINK_MODULES) \: m) R8 r* c4 @+ s$ [
CATApplicationFrame
! M$ M) E$ G1 n* K. M在Identitycard.h中加入:% }$ g/ \( M4 `5 G+ c# x- {
AddPrereqComponent("ConstraintModelerUI",Protected);
' B. }) z# E' N' R/ Z2 c9 o7 K$ F注意:每次换行时,都要加一斜线用来继续执行下面的module.# l% o- I u8 h h" R1 m( ~
; l s. c1 U7 p+ G( W2 s) j到此addin就做成了。剩下的就是定义资源文件,也就是换换名字或给按钮连接个图片。和前面的workbench一样工具条名字在“NewAddin.CATNIS”中进行定义:/ H7 q5 ?% ]1 o A# o: S$ \* C
PartBenchTlb.Title=”测试工具条”;8 ~3 R1 H( Y& v. p
在NewAddin.CATRsc定义图片。
9 m O8 r6 P4 ~- O, |" H/ MNewAddin.point.Icon.Normal = “I_CAAPoint” ;(图片一般放在cnext/resource graphic\ Icon\Normal文件加下 , NewAddin.CATRsc文件可能不会自动生成,你可以在相应的文件加下新建一个问本文档,把后缀改成CATRsc再在VC里刷新你的工程就有了)。
7 Q# k, I: L W8 ?1 P5 w" {$ O
% [% Z$ ~8 T/ J& z, i; X8 M |
|