|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
Catia CAA 二次开发加入菜单工具条最简单的入门教程
; `" s' N4 I, m# j& H+ X8 D) Z; j) a# ]6 [
建立了一个空的Addin。在yourframe.dico文件中可以看到这个Addin的声明: Z: ]$ U1 ]4 h) C& V6 c" L- t
NewAddin CATIPrtWksAddin libPartDesignAddin
- |- U/ s% l$ A/ K. N ?0 F9 B但是,要创建一个工具条,我们还需要在这个类:NewAddin中添加一些函数。% R( O. Q/ Z2 d# b- c9 O
在NewAddin类中添加两个Public函数声明:5 |; W" D: ?$ G1 U1 q; {: y
void CreateCommands();
1 H% H# u3 t7 L2 E' F p' uCATCmdContainer * CreateToolbars();
6 l" V) m! Y! w# Z在NewAddin.cpp中添加宏定义:: _5 c! j, W) ~$ b' {6 r+ O( h
#include "CATCommandHeader.h" " U, n. Y2 m. R8 @
MacDeclareHeader(PartCmdHeader);# h0 D) e" `2 n% k- M s1 n4 K
这两个函数及宏都可以按ctrl+F1查到, CreateCommands里面的代码只是用 MacDeclareHeader生成的PartCmdHeader定义命令的header(不知道怎么翻译,就是工具条或菜单里面可以看到的执行命令的按钮了,这个命令是连接界面命令和实现代码的桥梁。)如:
/ l4 Q# }9 h) dnew PartCmdHeader(“point”,“CmdModule”,“TestCmd”,(void *)NULL);
7 {& g) U! l/ ]0 E$ O1 Y+ @new PartCmdHeader("line","CmdModule","LinCmd",(void *)NULL);
6 u2 \$ m+ E* x& x4 s第一个参数是按钮的名字,第二、三个代表按钮执行的命令所在的module和命令的名字,参数四缺省就行了。" f8 _' Q0 ^, `2 m3 @4 t
|8 C f9 c! P2 l; f7 v
CreateToolbars里面就是要建的工具条和菜单的主要内容:; ~& {# O: c5 @" m
NewAccess(CATCmdContainer,pPartBenchTlb,PartBenchTlb);. B1 a( W* [ v4 Y/ h
NewAccess(CATCmdStarter,pPointCmd,PointCmd);4 ?0 r: E7 ]1 g% q- k' Z
SetAccessCommand(pPointCmd,"point");
X8 ^9 f/ `4 d. h SetAccessChild(pPartBenchTlb,pPointCmd);, ~1 z# `- t% K7 m' P
NewAccess(CATCmdStarter,pLineCmd,LineCmd);" N3 C) l! Z# u/ V& s: h1 `
SetAccessCommand(pLineCmd,"line");: R* k5 T- z1 ~# g% M4 u1 ?
SetAccessNext(pPointCmd,pLineCmd);
4 {1 ^9 W+ M0 z0 }+ n- V- b$ Z. G这三个函数都可以查到, 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.
3 [# \ O/ e: ^- [)5 N; o( @% q- D" k2 e
! G$ u; O$ }/ L* c" C
- O1 N) }' Z9 B! F- D, RNewAccess, SetAccessCommand, SetAccessChild, SetAccessNext等几个命令的使用。其具体含义可以参看API文档的说明。( SetAccessCommand 就是将starter与上面的PartCmdHeader 建立的东西连接了,注意参数“line” )其他的顾名就可思义。. r$ X. y% `0 s" I
* n! J7 K5 \+ j- p7 {* Z) s
、此时编译,发生几个连接错误。主要是CATCmdContainer类型及Newaccess的定义的头文件及其Module的添加。在.h文件中加上:#include "CATCmdContainer.h"
& d, E6 {6 A3 d9 K$ N在.cpp中加入:#include "CATCmdContainer.h"
" P7 W" B' u% y#include "CATCreateWorkshop.h"0 Y. K/ W1 \* P4 v b
在.mk文件中加入:WIZARD_LINK_MODULES = \
3 t$ O0 |4 _* @JS0FM JS0GROUP PrtWorkshop MechanicalModelerUIUUID \
6 v# L: O- X, k3 YCATApplicationFrame3 `5 v. ~% S$ [2 L. A
# END WIZARD EDITION ZONE . P, {- T0 d( _" S# V3 Y. a
LINK_WITH = $(WIZARD_LINK_MODULES) \
+ a' R! @9 P- Q CATApplicationFrame 1 F6 E# l. G# P1 V
在Identitycard.h中加入:
, K: H' |3 W" ~- K6 EAddPrereqComponent("ConstraintModelerUI",Protected);
# [( C3 a! Q. [* i- ~# V' R注意:每次换行时,都要加一斜线用来继续执行下面的module.2 Y- C& {( D, A0 H+ r
9 w; M& i- o9 `# S% _: v1 d到此addin就做成了。剩下的就是定义资源文件,也就是换换名字或给按钮连接个图片。和前面的workbench一样工具条名字在“NewAddin.CATNIS”中进行定义:
, c% Q* I; N8 ePartBenchTlb.Title=”测试工具条”;
% ^8 [) _3 M2 ~在NewAddin.CATRsc定义图片。
; q+ F- k( {& j( N! l+ j* KNewAddin.point.Icon.Normal = “I_CAAPoint” ;(图片一般放在cnext/resource graphic\ Icon\Normal文件加下 , NewAddin.CATRsc文件可能不会自动生成,你可以在相应的文件加下新建一个问本文档,把后缀改成CATRsc再在VC里刷新你的工程就有了)。% r/ W# |7 c8 C# t: @" E! B" R
+ H2 x8 O7 l; M" K" a+ C$ S
: C T8 g' w4 z( b; Y |
|