查看: 3567|回复: 0

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

[复制链接]

2477

主题

1280

回帖

8万

积分

管理员

PLM之家站长

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

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

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

×
Catia CAA 二次开发加入菜单工具条最简单的入门教程
5 Q' |! V. g& j9 H0 I9 R/ I
* K, V$ N# N" s, q4 Q* }% P建立了一个空的Addin。在yourframe.dico文件中可以看到这个Addin的声明:, f  B( `2 ]5 M- A$ b' \3 I* W4 t
NewAddin        CATIPrtWksAddin        libPartDesignAddin
' \6 l/ H: b  X( I7 |但是,要创建一个工具条,我们还需要在这个类:NewAddin中添加一些函数。
+ A$ K( G  c% g; G9 K9 O% ^在NewAddin类中添加两个Public函数声明:" O2 c. p. t3 @1 t7 a& @
           void CreateCommands();: ?" t2 ~$ C! D4 K" }4 x2 ^, Q, L( }
CATCmdContainer * CreateToolbars();7 p5 l) s7 C+ u2 U7 [
在NewAddin.cpp中添加宏定义:
2 d& u4 d  D$ z: h  L( x, D5 T       #include "CATCommandHeader.h"        
+ |8 e% C. Z2 A7 cMacDeclareHeader(PartCmdHeader);. K9 n* A& I/ {+ A3 ?* {2 |/ L
这两个函数及宏都可以按ctrl+F1查到, CreateCommands里面的代码只是用 MacDeclareHeader生成的PartCmdHeader定义命令的header(不知道怎么翻译,就是工具条或菜单里面可以看到的执行命令的按钮了,这个命令是连接界面命令和实现代码的桥梁。)如:       
) w+ F- O( O9 q$ y, Dnew PartCmdHeader(“point”,“CmdModule”,“TestCmd”,(void *)NULL);
# \5 P) |! n. onew PartCmdHeader("line","CmdModule","LinCmd",(void *)NULL);
3 R& K/ s  e% h+ l5 q( x- U4 ~第一个参数是按钮的名字,第二、三个代表按钮执行的命令所在的module和命令的名字,参数四缺省就行了。" V) o+ w+ R4 D5 b) W3 W' w" p
$ K8 v" A. `2 U4 E
CreateToolbars里面就是要建的工具条和菜单的主要内容:) ]; D: a/ y! S4 O2 W  w; s1 h9 D- B
        NewAccess(CATCmdContainer,pPartBenchTlb,PartBenchTlb);: A  W0 ]! m. `
             NewAccess(CATCmdStarter,pPointCmd,PointCmd);
; ]3 R" D# x. R* m# K6 \         SetAccessCommand(pPointCmd,"point");1 p( Z2 \- R. _. q1 I7 m
         SetAccessChild(pPartBenchTlb,pPointCmd);
/ |5 [# ~( @( D- F/ b5 k. {                 NewAccess(CATCmdStarter,pLineCmd,LineCmd);
1 e8 a" e& S- W1 f         SetAccessCommand(pLineCmd,"line");5 ]8 l1 ~9 Q, R! ^9 \: Q
         SetAccessNext(pPointCmd,pLineCmd);
8 V4 N* C; S5 C/ M, t+ \0 s0 P4 _这三个函数都可以查到, 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 k0 {7 M8 ~% \$ y+ c3 g% f
)( S  S+ @  t! Q1 j1 S3 b

  B% m0 h" _7 I, n* j
8 b7 m' {, C4 C4 f5 ^4 k8 G4 q& zNewAccess, SetAccessCommand, SetAccessChild, SetAccessNext等几个命令的使用。其具体含义可以参看API文档的说明。( SetAccessCommand 就是将starter与上面的PartCmdHeader 建立的东西连接了,注意参数“line” )其他的顾名就可思义。0 v! {5 g% V  N
7 g4 o- d9 {7 N+ A+ [: s, t
、此时编译,发生几个连接错误。主要是CATCmdContainer类型及Newaccess的定义的头文件及其Module的添加。在.h文件中加上:#include "CATCmdContainer.h"/ ^1 p+ W0 R0 k: x$ e. V
在.cpp中加入:#include "CATCmdContainer.h"
; N' w- J1 l8 _6 Y& t#include "CATCreateWorkshop.h"3 ?9 v2 D4 z  \* C/ ~  g1 _
在.mk文件中加入:WIZARD_LINK_MODULES =  \% A+ V$ k$ u, l
JS0FM JS0GROUP PrtWorkshop MechanicalModelerUIUUID \
0 j6 [! g# s/ R3 p7 V# hCATApplicationFrame
# B% `" T" D  r+ Y' \; U/ E( i, M7 H( U7 q# END WIZARD EDITION ZONE
5 `5 A' o5 H9 ]+ [. x. W; qLINK_WITH = $(WIZARD_LINK_MODULES)  \+ A2 h% v9 h: s! j7 s2 l" p; u
          CATApplicationFrame . A+ e  r" R% s5 \  Z5 ^
在Identitycard.h中加入:
0 a. j6 H5 m* o$ D( w: ]3 hAddPrereqComponent("ConstraintModelerUI",Protected);
" F9 Q; E; f- D: {注意:每次换行时,都要加一斜线用来继续执行下面的module.
) v! L+ y- F" U  v
& S  ?/ m9 v+ }; J" e' R( D5 `到此addin就做成了。剩下的就是定义资源文件,也就是换换名字或给按钮连接个图片。和前面的workbench一样工具条名字在“NewAddin.CATNIS”中进行定义:  |, u% T9 ^4 x
PartBenchTlb.Title=”测试工具条”;8 a  i. ]1 p+ d
在NewAddin.CATRsc定义图片。+ o- x5 a* E, P( U$ T' e0 @' P
NewAddin.point.Icon.Normal = “I_CAAPoint” ;(图片一般放在cnext/resource graphic\ Icon\Normal文件加下 , NewAddin.CATRsc文件可能不会自动生成,你可以在相应的文件加下新建一个问本文档,把后缀改成CATRsc再在VC里刷新你的工程就有了)。5 c) D3 p% T7 E

  z* S/ N& |1 @/ [/ h6 X/ A6 M& ]$ C8 _! C2 D' D/ ~4 R
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

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

本版积分规则

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