查看: 3534|回复: 0

Catia CAA 二次开发加入菜单工具条最简单的入门教程

[复制链接]

2477

主题

1280

回帖

8万

积分

管理员

PLM之家站长

积分
82265
QQ
发表于 2017-1-16 17:14:52 | 显示全部楼层 |阅读模式

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

×
Catia CAA 二次开发加入菜单工具条最简单的入门教程
0 V1 W, \, A* _$ X  G# Z
! o, X6 F+ _% b- B7 m& ]建立了一个空的Addin。在yourframe.dico文件中可以看到这个Addin的声明:
1 c( K  a9 u, S9 x7 e+ T) ONewAddin        CATIPrtWksAddin        libPartDesignAddin
! X; {4 ~. U5 B8 r* _但是,要创建一个工具条,我们还需要在这个类:NewAddin中添加一些函数。
& q# a4 s$ E' p( L  S% |在NewAddin类中添加两个Public函数声明:
; y( ~2 X0 T/ h5 f: d2 D           void CreateCommands();% q; x/ l) T! W/ A1 l7 N+ @1 d
CATCmdContainer * CreateToolbars();4 X- l0 t* o1 d- B; _2 F3 o
在NewAddin.cpp中添加宏定义:: @" }* d$ \# L* Z* {3 \
       #include "CATCommandHeader.h"        7 t% g4 l  D# M6 z5 S. }
MacDeclareHeader(PartCmdHeader);: a& O) L$ c- J. u( G2 G
这两个函数及宏都可以按ctrl+F1查到, CreateCommands里面的代码只是用 MacDeclareHeader生成的PartCmdHeader定义命令的header(不知道怎么翻译,就是工具条或菜单里面可以看到的执行命令的按钮了,这个命令是连接界面命令和实现代码的桥梁。)如:        7 D& ]* c6 [! k* P8 M
new PartCmdHeader(“point”,“CmdModule”,“TestCmd”,(void *)NULL);7 i) W9 x; {0 v8 M2 R
new PartCmdHeader("line","CmdModule","LinCmd",(void *)NULL);+ z: u( e' O- Y& I) S
第一个参数是按钮的名字,第二、三个代表按钮执行的命令所在的module和命令的名字,参数四缺省就行了。
- G8 n% [1 T% {2 n  k6 Q* B; T* K: M  Y' m( q! W
CreateToolbars里面就是要建的工具条和菜单的主要内容:# f1 a' A* Q" y" w0 |# e
        NewAccess(CATCmdContainer,pPartBenchTlb,PartBenchTlb);! n+ M" \8 y1 r2 K4 I  S0 M
             NewAccess(CATCmdStarter,pPointCmd,PointCmd);
/ K* A' A) K; ]. x9 G5 d0 k         SetAccessCommand(pPointCmd,"point");( W/ @) L! o6 a
         SetAccessChild(pPartBenchTlb,pPointCmd);/ F0 \, Q, W& F* o3 X+ R
                 NewAccess(CATCmdStarter,pLineCmd,LineCmd);( W, ]0 Y" B' ^
         SetAccessCommand(pLineCmd,"line");6 M- X% C) q/ H! X) o
         SetAccessNext(pPointCmd,pLineCmd);
" {; w/ e/ B8 X3 q! D! W* h这三个函数都可以查到, 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.
4 W' H# y6 B4 P: ~3 p/ _7 d+ K7 m)# K4 q9 h7 I0 r9 G/ _) q
0 Y0 g! _$ ^; ?
( c$ f, @! B* Z6 n
NewAccess, SetAccessCommand, SetAccessChild, SetAccessNext等几个命令的使用。其具体含义可以参看API文档的说明。( SetAccessCommand 就是将starter与上面的PartCmdHeader 建立的东西连接了,注意参数“line” )其他的顾名就可思义。
5 W! I2 f* F3 B8 G* r5 t! g) @" p# \0 u( `# R0 D6 K
、此时编译,发生几个连接错误。主要是CATCmdContainer类型及Newaccess的定义的头文件及其Module的添加。在.h文件中加上:#include "CATCmdContainer.h"  U- G" l9 h2 ?: H2 V- n( j+ Y
在.cpp中加入:#include "CATCmdContainer.h"
+ u$ d2 d" l$ m, p( N0 y#include "CATCreateWorkshop.h"$ \& f* U8 f+ P7 m" U
在.mk文件中加入:WIZARD_LINK_MODULES =  \0 {0 k0 p9 x& o7 M5 w" w( I
JS0FM JS0GROUP PrtWorkshop MechanicalModelerUIUUID \
: }% w8 h0 R  [9 V6 A/ d1 B8 WCATApplicationFrame4 m2 h% z# ?5 T; f5 W
# END WIZARD EDITION ZONE 4 V( J3 R& T5 a' x
LINK_WITH = $(WIZARD_LINK_MODULES)  \
* [2 X$ k9 ?' q1 W+ G* i: L          CATApplicationFrame
% Z4 m0 ~7 J+ w& {% O9 q+ [7 Z! F. `在Identitycard.h中加入:1 c7 ]+ \$ ?  y' {- l
AddPrereqComponent("ConstraintModelerUI",Protected);
* B$ r6 N+ Q. Z, @% a注意:每次换行时,都要加一斜线用来继续执行下面的module.
3 R) t9 E* ^& w2 P4 z9 ^: v9 I; j2 J3 j
到此addin就做成了。剩下的就是定义资源文件,也就是换换名字或给按钮连接个图片。和前面的workbench一样工具条名字在“NewAddin.CATNIS”中进行定义:
" Q$ }3 D- q3 ^2 W8 kPartBenchTlb.Title=”测试工具条”;$ v" q. [7 A$ X
在NewAddin.CATRsc定义图片。3 W: l6 r8 Z& ~; v5 b, p1 S6 O
NewAddin.point.Icon.Normal = “I_CAAPoint” ;(图片一般放在cnext/resource graphic\ Icon\Normal文件加下 , NewAddin.CATRsc文件可能不会自动生成,你可以在相应的文件加下新建一个问本文档,把后缀改成CATRsc再在VC里刷新你的工程就有了)。) M% e" O; O& i( K3 X; Y* c8 V& r* ~
! }+ x2 Z0 p# I' y- h
/ t5 W7 N3 g3 c$ U7 q, F  w
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部