|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
Catia CAA 二次开发加入菜单工具条最简单的入门教程
1 {% }: g! J8 N+ o. [
0 F: K3 Q1 \. [' j建立了一个空的Addin。在yourframe.dico文件中可以看到这个Addin的声明:5 e# V; n( l7 v$ h* {$ `8 X
NewAddin CATIPrtWksAddin libPartDesignAddin
6 O& l3 o0 a* ] O但是,要创建一个工具条,我们还需要在这个类:NewAddin中添加一些函数。
' U7 j* q r. }. G在NewAddin类中添加两个Public函数声明:
. ]2 I) u' i6 L M- J! @ void CreateCommands();
4 Z% K: Q. C9 R4 G ACATCmdContainer * CreateToolbars();- q0 N/ p6 u6 o; e
在NewAddin.cpp中添加宏定义:
1 ^/ O- t" W' O7 S: m #include "CATCommandHeader.h" # f3 ~. M( e4 P5 t
MacDeclareHeader(PartCmdHeader);
% }% d) T! ~9 x* N& N1 y这两个函数及宏都可以按ctrl+F1查到, CreateCommands里面的代码只是用 MacDeclareHeader生成的PartCmdHeader定义命令的header(不知道怎么翻译,就是工具条或菜单里面可以看到的执行命令的按钮了,这个命令是连接界面命令和实现代码的桥梁。)如:
* d2 F) {% Q. b% ^8 ]new PartCmdHeader(“point”,“CmdModule”,“TestCmd”,(void *)NULL);" R3 M, b/ B: h
new PartCmdHeader("line","CmdModule","LinCmd",(void *)NULL);. H, _# J8 r4 x! q7 A: `
第一个参数是按钮的名字,第二、三个代表按钮执行的命令所在的module和命令的名字,参数四缺省就行了。
2 L! |. }5 C+ J; R# C7 f. N6 v' J! k8 ^( o. L* ?' s7 l! ?
CreateToolbars里面就是要建的工具条和菜单的主要内容:: s' { [/ L4 J
NewAccess(CATCmdContainer,pPartBenchTlb,PartBenchTlb);
( h- j' { Z! h9 Y NewAccess(CATCmdStarter,pPointCmd,PointCmd);# }2 H8 D8 ?6 ~2 D; N- V: s: t
SetAccessCommand(pPointCmd,"point");
/ V. J9 F& r/ q2 j7 Y; p8 N, o SetAccessChild(pPartBenchTlb,pPointCmd);
$ [! [$ R& {, D' t$ w, g6 z2 O% g NewAccess(CATCmdStarter,pLineCmd,LineCmd);% p! z+ K) X- ~9 N
SetAccessCommand(pLineCmd,"line");
: e% ~1 E& a% B SetAccessNext(pPointCmd,pLineCmd); : e* v/ Q6 I4 o# g# d- r! l# q. 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.) [) t( I7 U l6 {; ]1 y
)
5 X( S- ]* q% N4 Q2 K9 \/ s, @; s6 ~2 |, E: j# Y+ } h
8 ?: W! S. X6 F- k/ F
NewAccess, SetAccessCommand, SetAccessChild, SetAccessNext等几个命令的使用。其具体含义可以参看API文档的说明。( SetAccessCommand 就是将starter与上面的PartCmdHeader 建立的东西连接了,注意参数“line” )其他的顾名就可思义。6 J$ q4 N; ^. Z) Y# T- O2 G4 p
0 B' w2 @0 e7 ~# }+ ]$ j. n
、此时编译,发生几个连接错误。主要是CATCmdContainer类型及Newaccess的定义的头文件及其Module的添加。在.h文件中加上:#include "CATCmdContainer.h"; Q1 m# n, `# j j' Y
在.cpp中加入:#include "CATCmdContainer.h"3 m3 t7 r0 w0 {# G' T: b3 n
#include "CATCreateWorkshop.h"" ?! _# v/ h9 A" U, S! j9 F
在.mk文件中加入:WIZARD_LINK_MODULES = \, f0 [9 a8 ]. ]) o' n! D/ B) q8 y
JS0FM JS0GROUP PrtWorkshop MechanicalModelerUIUUID \
4 n& o$ G9 E6 J2 Y& J# RCATApplicationFrame) Y, i1 ?7 ` e2 C4 s( g! Q
# END WIZARD EDITION ZONE
$ z. t# `5 S+ I" G+ uLINK_WITH = $(WIZARD_LINK_MODULES) \
/ u& Z4 a4 j! P& h9 P5 Q c+ l CATApplicationFrame $ r& M$ Q6 b2 P
在Identitycard.h中加入:
# g8 y, |9 M! J0 N: m5 H( y: F: bAddPrereqComponent("ConstraintModelerUI",Protected);4 \8 h$ a0 s: j
注意:每次换行时,都要加一斜线用来继续执行下面的module.. E1 I. J" ?- T h$ m& U
9 m" y5 P: M( {: m# K- ]4 M: P到此addin就做成了。剩下的就是定义资源文件,也就是换换名字或给按钮连接个图片。和前面的workbench一样工具条名字在“NewAddin.CATNIS”中进行定义:# P- R1 t V% d( W' {& F/ u4 R
PartBenchTlb.Title=”测试工具条”;0 D% F; b- l- C9 @" h0 q3 z
在NewAddin.CATRsc定义图片。
8 k5 R) F# v/ M N( h! RNewAddin.point.Icon.Normal = “I_CAAPoint” ;(图片一般放在cnext/resource graphic\ Icon\Normal文件加下 , NewAddin.CATRsc文件可能不会自动生成,你可以在相应的文件加下新建一个问本文档,把后缀改成CATRsc再在VC里刷新你的工程就有了)。4 N# y- n W/ Z6 m0 y- c
' ?$ b3 y4 v7 \, W+ i8 d3 P* b. n s9 ^. u
|
|