PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

PLM之家PLMHome-国产软件践行者

[资料] CATIA二次开发入门教程---10 添加Add in菜单和工具条

[复制链接]

2019-4-9 11:30:42 6908 1

admin 发表于 2017-1-19 22:46:47 |阅读模式

admin 楼主

2017-1-19 22:46:47

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

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

x
CATIA二次开发入门教程---10 添加Add in菜单和工具条
% ^$ `3 b9 O$ m: v6 g( L* X+ {+ {( g) O# h5 b
所谓Addin,是在系统已有的Workbench中插入新的工具条或者菜单。& X9 p3 Z, }4 L8 R
我们来在PartDesign中插入一个工具条。: C+ ^, L6 n" v5 a4 R
1、新建一个module命名为myPartAddin,并将它设为active。; L% @+ t7 s- z/ r& \
2、做接口CATIPrtWksAddin的implemention, insert->component,弹出对话框
9 j& X7 ^  T( k0 e( D  o输入addin的名字,点击add再点击浏览选择要执行的接口,如图:

( X6 u8 u9 d3 H* F0 k" D! c) ?- X addmin.png   [7 X, O) t. T& H! R2 x
1)接口可以多选。2)除了 CATIPrtWksAddin 外,还有四个最常用的接口,, N6 i" S5 j) l5 ?8 [! K# Y
CATIPRDWorkshopAddin 表示当前工具条在装配环境下显示;CATIDrwAddin 表示当前0 H8 J3 ?! {/ {' S6 g
工具条在工程制图工作台下显示;CATIAMGProgramAddin 表示当前工具条在 AMG 工作
6 w3 }( U+ k: w0 E6 V- P+ Q) {5 E台下显示;CATIAfrGeneralWksAddin 对应普通工作台,即打开 CATIA 后,任何 Workbench3 E( f- J0 V" ^; h
下都显示当前工具条。
$ U% A/ J! _- g- @
  3、此时建立了一个空的Addin。在myframe.dico文件中可以看到这个Addin的声明:
* p( e! ^: C3 j# O3 J myAddin CATIPrtWksAddin libmyModule8 B2 w+ f' k: \" `! Z5 L
但是,要创建一个工具条,我们还需要在这个类:NewAddin中添加一些函数。5 E, V/ F( Y2 X
在NewAddin类中添加两个Public函数声明:

3 i" h5 V9 j6 I  B+ z9 r5 Zvoid CreateCommands();. P9 V3 H2 @0 H2 i1 T& r
CATCmdContainer * CreateToolbars();

& X: @6 ^3 q+ t! ?在NewAddin.cpp中添加宏定义:8 Z1 g1 s7 {9 x; }
#include "CATCommandHeader.h"        
, X1 v3 n: r; C  F6 U2 L- q8 g4 c8 dMacDeclareHeader(PartCmdHeader);
0 k8 O. h5 O% D) V# J
这两个函数及宏都可以按ctrl+F1查到, CreateCommands里面的代码只是用 MacDeclareHeader生成的PartCmdHeader定义命令的header(不知道怎么翻译,就是工具条或菜单里面可以看到的执行命令的按钮了,这个命令是连接界面命令和实现代码的桥梁。)如: + u, V7 k5 Q( K7 A+ l7 K6 q
new PartCmdHeader("Create Point","CmdModule","PointCmd",(void *)NULL);
. _$ ~+ s% J, V; Inew PartCmdHeader("Create Line","CmdModule","LineCmd",(void *)NULL);
# l9 U( Q1 b% h/ ^
第一个参数是按钮的名字,第二、三个代表按钮执行的命令所在的module和命令的名字,参数四缺省就行了。4 o. I9 s7 S. @

4 R% ~2 p2 i; p& w  c' uCreateToolbars里面就是要建的工具条和菜单的主要内容:
8 Y3 E  Z' H# y/ @& g! K0 v" D+ D6 M* _! @. s
* h& f& A! q6 d8 p
//设置工具条
- O- W" n9 c6 f1 f5 \7 V NewAccess(CATCmdContainer,pPartBenchTlb,PartBenchTlb);
+ R, G5 L5 b7 l+ y   AddToolbarView(pPartBenchTlb,1,Right);
8 q  b, }. a, Q* _; Q5 I; p
NewAccess(CATCmdStarter,pPointCmd,PointCmd);
" \8 K; C" |: Z" N+ t SetAccessCommand(pPointCmd,"Create Point");! [( ?( S  V0 \3 u" R* n3 W
SetAccessChild(pPartBenchTlb,pPointCmd);% O) T) U3 g8 W# ~
NewAccess(CATCmdStarter,pLineCmd,LineCmd);1 z, f% P$ g0 B5 U
SetAccessCommand(pLineCmd,"Create Line");/ C* H! y! f9 r6 Q/ g
SetAccessNext(pPointCmd,pLineCmd);
5 r, |- T' c9 E( F6 K5 T

; V. @6 e) L" @8 H0 J //设置菜单

: ?) `5 n7 r( L' R; ]$ F- J NewAccess(CATCmdContainer,pPartBenchMun,PartBenchMun);; Q: n0 c& a0 H  L6 j
NewAccess(CATCmdContainer,pPartBenchSmu,PartBenchSmu);
# p( ^5 J2 }2 Y. ]  @3 F( s NewAccess(CATCmdStarter,pPointCmdm,PointCmdm);# {  ]& Q0 r7 P
SetAccessCommand(pPointCmdm,"Create Point");
" q, M0 u- N# X: A5 e0 Y0 W    NewAccess(CATCmdStarter,pLineCmdm,LineCmdm);
$ S1 h! d) D7 K" b    SetAccessCommand(pLineCmdm,"Create Line");7 g4 a9 f- |6 w) b0 l" a/ ~0 W" B
- ?* o- r. g2 A7 n4 I* f
SetAccessChild(pPartBenchMun,pPartBenchSmu);
/ W' G3 K  C% k: E8 o$ D    SetAccessChild(pPartBenchSmu,pPointCmdm);: T5 \) {4 R# y  C# q! N
SetAccessNext(pPointCmdm,pLineCmdm);
) W# m" j$ H5 L/ q3 Q6 @1 a; g    SetAddinMenu(pPartBenchTlb,pPartBenchMun);
' o7 `# c4 V. A$ ?工作台、工具条、菜单栏中常见的一些宏 NewAccess()、SetAccessCommand()、
9 M# z5 s* F4 e, O) HSetAccessChild() 、 SetAccessNext() 、 AddToolbarView() 、 SetWorkbenchMenu() 、9 r# Y4 ]; C/ y% F
SetWorkshopMenu()、SetAddinMenu()等- i0 q# i% N) \5 H
NewAccess 的函数定义如下: 8 d4 m, d4 C* y6 M* r2 M
Macro NewAccess (className,variableName,objectName)
. c$ U! H+ j  p  I* V9 D其中:className 包括 CATCmdContainer(表示菜单条、菜单、子菜单或者工具条)、" {* Z2 M+ p" N* l6 t
CATCmdWorkshop、CATCmdWorkbench、CATCmdStarter(表示命令)、CATCmdSeparator(表& x- p6 ?  a6 h: G4 g3 \
示分隔符)

! Z2 L! Z$ p% X* ^0 I+ O+ O' {2 `1 `4 T$ q1 j' ?
NewAccess, SetAccessCommand, SetAccessChild, SetAccessNext等几个命令的使用。其具体含义可以参看API文档的说明。其他的顾名就可思义。1 ^) k+ P7 Y4 l
4、此时编译,发生几个连接错误。主要是CATCmdContainer类型及Newaccess的定义的头文件及其Module的添加。在.h文件中加上:#include "CATCmdContainer.h"
7 O9 F9 _6 T1 b5 s; o5 R7 y, t在.cpp中加入:#include "CATCmdContainer.h"
! L/ T- b7 M1 V+ p# N. P#include "CATCreateWorkshop.h"
0 r) r( P: a% L8 P在.mk文件中加入:WIZARD_LINK_MODULES =  \
; P2 K0 v- s# O& i# |+ ^! _8 \JS0FM JS0GROUP PrtWorkshop MechanicalModelerUIUUID \
( b! j8 H2 M# [$ I( T  ^CATApplicationFrame/ N: o! f4 E/ W9 R9 A. d3 t6 B* C7 X
# END WIZARD EDITION ZONE / J8 h  S$ J5 y" a# T* n
LINK_WITH = $(WIZARD_LINK_MODULES)  \4 A, L! O$ I  W( ?
          CATApplicationFrame & S+ u$ ?9 C4 k- G
在Identitycard.h中加入:" Q2 b) ^7 s# F: @
AddPrereqComponent("ConstraintModelerUI",Protected);5 d6 n% z3 z' n  f/ W- p' ]  k
注意:每次换行时,都要加一斜线用来继续执行下面的module.

; {: V5 C+ |7 `0 J* O/ S, I; e8 u1 S4 G
' x: g2 u1 Q$ l- v. W( o/ d. P
重新进入编译后,可以看到结果如下:+ m* J& j3 L' t# G! }: x' K
2 ]) W: i" |; q5 f
tool.jpg 2 {1 N/ E. z2 J& y; j
: O2 a: F/ x. @/ _, L2 U7 I1 ]. I

" d; Z( p" o3 e( {0 Z; p( A
% T2 K9 g3 T( x( J- |2 Y+ w7 [) S* E& [5 W! s3 Z1 K& X" ^8 H$ ?- n2 }

" E3 g( J# b3 K: p
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复1

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了