|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
Catia CAA 二次开发加入菜单工具条最简单的入门教程1 P0 v( I0 ~, K( a$ i9 B# a( D
! Y- q' F8 k9 z! G i' _建立了一个空的Addin。在yourframe.dico文件中可以看到这个Addin的声明:
9 i: Z' A8 s2 y* N) ~; jNewAddin CATIPrtWksAddin libPartDesignAddin& Q2 J9 j9 `# L0 W
但是,要创建一个工具条,我们还需要在这个类:NewAddin中添加一些函数。
6 m- u, d) e# _6 L$ ?在NewAddin类中添加两个Public函数声明:
, {7 T$ a) b8 a& l% p void CreateCommands();
, U8 L0 j& s6 \6 ^CATCmdContainer * CreateToolbars();# N7 ]4 k d; T
在NewAddin.cpp中添加宏定义:
2 |& F0 U( W9 [* `1 \: N# Q. L m #include "CATCommandHeader.h"
4 F9 V* D# a' Q8 f7 a9 N7 KMacDeclareHeader(PartCmdHeader);
! C# f6 l, j. ~4 X5 X! f1 f4 {这两个函数及宏都可以按ctrl+F1查到, CreateCommands里面的代码只是用 MacDeclareHeader生成的PartCmdHeader定义命令的header(不知道怎么翻译,就是工具条或菜单里面可以看到的执行命令的按钮了,这个命令是连接界面命令和实现代码的桥梁。)如:
' C3 C2 I$ N% h$ G9 k/ Ynew PartCmdHeader(“point”,“CmdModule”,“TestCmd”,(void *)NULL);' M1 Y2 N( X0 c1 {
new PartCmdHeader("line","CmdModule","LinCmd",(void *)NULL);
7 w% z' f# B! w' M) y: \3 i第一个参数是按钮的名字,第二、三个代表按钮执行的命令所在的module和命令的名字,参数四缺省就行了。
5 l: u6 p+ M2 ], A- \5 N _5 a6 t# S9 c8 @5 x7 w
CreateToolbars里面就是要建的工具条和菜单的主要内容:+ E# N* d, a' o: J& |7 S% V
NewAccess(CATCmdContainer,pPartBenchTlb,PartBenchTlb);1 i x9 i7 ]$ M5 y/ S7 _) [
NewAccess(CATCmdStarter,pPointCmd,PointCmd);
! @9 U6 T3 [3 f* b, b5 U, y SetAccessCommand(pPointCmd,"point");1 B. c5 o' _6 I/ C$ r8 Z
SetAccessChild(pPartBenchTlb,pPointCmd);
* H, z' H) j& g7 C2 e NewAccess(CATCmdStarter,pLineCmd,LineCmd);% \1 l8 c* V: Y0 H4 s% d& b
SetAccessCommand(pLineCmd,"line");
7 T' u* i$ g* D SetAccessNext(pPointCmd,pLineCmd); 3 ]5 Y5 ]: ?/ l6 m
这三个函数都可以查到, 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.5 e8 P" g+ O5 o' [
)
" }2 W7 s, Z$ l' C! D3 Q/ ?* k/ p, e* W
{! D% {: T6 Y8 Y0 E9 h8 P
NewAccess, SetAccessCommand, SetAccessChild, SetAccessNext等几个命令的使用。其具体含义可以参看API文档的说明。( SetAccessCommand 就是将starter与上面的PartCmdHeader 建立的东西连接了,注意参数“line” )其他的顾名就可思义。
0 D- `% X5 N! A
8 i8 @' V. c; z: k& W、此时编译,发生几个连接错误。主要是CATCmdContainer类型及Newaccess的定义的头文件及其Module的添加。在.h文件中加上:#include "CATCmdContainer.h"
5 ~/ B8 [; v+ z在.cpp中加入:#include "CATCmdContainer.h", |( C, O$ c; m' x% [% H+ _/ a$ F
#include "CATCreateWorkshop.h"
0 L+ [6 z/ U+ X. B8 d3 I* W在.mk文件中加入:WIZARD_LINK_MODULES = \
0 ^: G$ ~- \! {' _! w W2 CJS0FM JS0GROUP PrtWorkshop MechanicalModelerUIUUID \4 G7 S p( s5 I" u+ p1 Y) @. U# r6 H0 @
CATApplicationFrame" Y' r! U; e- L' D8 V' m# L/ n
# END WIZARD EDITION ZONE
, |, R5 Y7 a6 o8 z! A3 {LINK_WITH = $(WIZARD_LINK_MODULES) \
) K5 x( g7 L/ S: i& M. y/ k CATApplicationFrame
. T4 N7 }7 F5 x' Z在Identitycard.h中加入:
+ L3 ]8 n- B+ P. o8 w2 ]AddPrereqComponent("ConstraintModelerUI",Protected);
1 w* ]" w& V3 k# o2 Q' E5 `' Z注意:每次换行时,都要加一斜线用来继续执行下面的module.) Y* ?# f% j% k3 ~5 C9 d
' h6 y3 P" n B/ _7 K2 Q W
到此addin就做成了。剩下的就是定义资源文件,也就是换换名字或给按钮连接个图片。和前面的workbench一样工具条名字在“NewAddin.CATNIS”中进行定义:" U& R5 L8 W$ E5 G: y
PartBenchTlb.Title=”测试工具条”;
* O! O, [& e% x* y U& [. I) V在NewAddin.CATRsc定义图片。 m0 ?+ y1 U! O' x$ [0 J3 @
NewAddin.point.Icon.Normal = “I_CAAPoint” ;(图片一般放在cnext/resource graphic\ Icon\Normal文件加下 , NewAddin.CATRsc文件可能不会自动生成,你可以在相应的文件加下新建一个问本文档,把后缀改成CATRsc再在VC里刷新你的工程就有了)。1 U& z9 m# G" @2 w! o3 d! m$ L
$ f. N- }6 l; X7 K! L% e: K: _' b0 k# H" _( x, E+ X
|
|