|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
Catia CAA 二次开发加入菜单工具条最简单的入门教程
7 ~$ C, A; m! u) m# u9 N' @- q* k. i$ k% z0 O
建立了一个空的Addin。在yourframe.dico文件中可以看到这个Addin的声明:
* Y8 M- P$ n% g: [# hNewAddin CATIPrtWksAddin libPartDesignAddin5 D8 q$ W" q6 } `- J
但是,要创建一个工具条,我们还需要在这个类:NewAddin中添加一些函数。$ p* K6 y `8 o* ~: b4 h0 G" @
在NewAddin类中添加两个Public函数声明:
7 M. C+ J' s+ Z- W: |7 Z* y/ I void CreateCommands();+ n/ b c% G& z- e+ K( q O
CATCmdContainer * CreateToolbars();. s% y1 @. E+ u( J
在NewAddin.cpp中添加宏定义:
* S2 s1 [% A) E6 |8 f, q #include "CATCommandHeader.h"
: r% [" d4 C* I1 tMacDeclareHeader(PartCmdHeader);
Q/ r& c% z% ?这两个函数及宏都可以按ctrl+F1查到, CreateCommands里面的代码只是用 MacDeclareHeader生成的PartCmdHeader定义命令的header(不知道怎么翻译,就是工具条或菜单里面可以看到的执行命令的按钮了,这个命令是连接界面命令和实现代码的桥梁。)如: 5 i; Z! C3 s: g1 Q5 ~# \, X& `
new PartCmdHeader(“point”,“CmdModule”,“TestCmd”,(void *)NULL);
7 ]* C* s. o. [) u% ^+ r! lnew PartCmdHeader("line","CmdModule","LinCmd",(void *)NULL);
# {" w. s" R; B3 l# A( o第一个参数是按钮的名字,第二、三个代表按钮执行的命令所在的module和命令的名字,参数四缺省就行了。1 V5 Y' p0 [% |8 j3 j. W7 p8 s
]- z, R' k1 k' k
CreateToolbars里面就是要建的工具条和菜单的主要内容:
( M4 ?/ o" p# I3 g7 @& B2 E. K NewAccess(CATCmdContainer,pPartBenchTlb,PartBenchTlb);/ l; h' q8 q: k5 u/ H5 s2 C
NewAccess(CATCmdStarter,pPointCmd,PointCmd);
" U1 p S; U% e8 L \+ x i2 K SetAccessCommand(pPointCmd,"point");6 w7 C! A& h. B# o
SetAccessChild(pPartBenchTlb,pPointCmd);
9 D1 i4 Q) C# i4 a0 D NewAccess(CATCmdStarter,pLineCmd,LineCmd);8 h6 d B2 w( I
SetAccessCommand(pLineCmd,"line");
0 s% P7 m/ s; b- v' Z" E) x6 C( R SetAccessNext(pPointCmd,pLineCmd); , y* G& s/ u" d i
这三个函数都可以查到, 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.
% F+ I/ U9 o4 F; U)
7 ?( X3 G$ q8 _5 K" {3 H, w5 y# Q! J! q4 l6 Z
! G; I$ Z. \6 x% w; s, K; a/ G- L* iNewAccess, SetAccessCommand, SetAccessChild, SetAccessNext等几个命令的使用。其具体含义可以参看API文档的说明。( SetAccessCommand 就是将starter与上面的PartCmdHeader 建立的东西连接了,注意参数“line” )其他的顾名就可思义。
8 Q% n8 I4 X: A$ N8 `* X
# `% s6 }/ b z. [# `& e F、此时编译,发生几个连接错误。主要是CATCmdContainer类型及Newaccess的定义的头文件及其Module的添加。在.h文件中加上:#include "CATCmdContainer.h"
" k+ S D. f/ R1 N7 E在.cpp中加入:#include "CATCmdContainer.h"
) y+ t: a" _% [#include "CATCreateWorkshop.h"
% G( Y0 ]4 c% K3 ?$ y! F' q. {在.mk文件中加入:WIZARD_LINK_MODULES = \. n2 j7 U$ j2 X- F) {
JS0FM JS0GROUP PrtWorkshop MechanicalModelerUIUUID \
0 l% G* \# K/ q% G+ ]0 ? T; RCATApplicationFrame# R9 B4 e9 J4 C) h
# END WIZARD EDITION ZONE
3 X. ~2 f Z7 ^% `6 ZLINK_WITH = $(WIZARD_LINK_MODULES) \( _0 u$ i; F. a2 T6 B+ E5 Q* v( v4 ?
CATApplicationFrame 1 V" X4 l+ c5 S
在Identitycard.h中加入:
7 p/ B$ ]# r7 \/ |AddPrereqComponent("ConstraintModelerUI",Protected);& z$ r+ B8 J( d$ {2 u( Y
注意:每次换行时,都要加一斜线用来继续执行下面的module.! B' c6 j7 u/ x% n4 @5 x
; Z5 J0 y; y# I- Y到此addin就做成了。剩下的就是定义资源文件,也就是换换名字或给按钮连接个图片。和前面的workbench一样工具条名字在“NewAddin.CATNIS”中进行定义:
$ @) w& R" ?7 Z" pPartBenchTlb.Title=”测试工具条”;" a* f. x/ t$ h
在NewAddin.CATRsc定义图片。 ?% V6 h' T' ]( G8 k- A
NewAddin.point.Icon.Normal = “I_CAAPoint” ;(图片一般放在cnext/resource graphic\ Icon\Normal文件加下 , NewAddin.CATRsc文件可能不会自动生成,你可以在相应的文件加下新建一个问本文档,把后缀改成CATRsc再在VC里刷新你的工程就有了)。/ O! E5 O) F+ F: G: g
% [ m5 g$ q: h1 U
& G4 A9 f( E. e! T0 n) a
|
|