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 6878 1

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

admin 楼主

2017-1-19 22:46:47

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

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

x
CATIA二次开发入门教程---10 添加Add in菜单和工具条6 ^. i  w" j9 b! l" V+ S9 z

2 Y  \9 c+ j3 G  m  u9 H, d7 L所谓Addin,是在系统已有的Workbench中插入新的工具条或者菜单。0 f: Q* V/ t- F) f6 V
我们来在PartDesign中插入一个工具条。% }+ X. ?' K/ ~  |0 z
1、新建一个module命名为myPartAddin,并将它设为active。
) h, S! H5 O5 ` 2、做接口CATIPrtWksAddin的implemention, insert->component,弹出对话框; x3 c/ |+ H$ e
输入addin的名字,点击add再点击浏览选择要执行的接口,如图:
# A2 [) A0 t- E& J
addmin.png ! d: X; M& g& n! H) M
1)接口可以多选。2)除了 CATIPrtWksAddin 外,还有四个最常用的接口,
2 _; L! i9 h5 y: C" T! r4 k: r' ICATIPRDWorkshopAddin 表示当前工具条在装配环境下显示;CATIDrwAddin 表示当前# Q6 `: E3 O* G5 D
工具条在工程制图工作台下显示;CATIAMGProgramAddin 表示当前工具条在 AMG 工作
* p( t: V) s8 l' o& @4 F台下显示;CATIAfrGeneralWksAddin 对应普通工作台,即打开 CATIA 后,任何 Workbench
9 L: k) t; [7 B8 k5 h下都显示当前工具条。
! S1 E2 e0 E* f7 u+ M' S: Q7 p
  3、此时建立了一个空的Addin。在myframe.dico文件中可以看到这个Addin的声明:5 n7 W3 B# U  I# M( |$ |
myAddin CATIPrtWksAddin libmyModule2 l  Z, f+ @* }. K4 }, F  V
但是,要创建一个工具条,我们还需要在这个类:NewAddin中添加一些函数。
5 @6 P( [  k9 T! _5 D/ i在NewAddin类中添加两个Public函数声明:

' P' o3 p. c! W* _void CreateCommands();
6 S* R7 |% ?3 u$ ?: zCATCmdContainer * CreateToolbars();
% B5 f& N3 i7 B; x- ~
在NewAddin.cpp中添加宏定义:
5 R* k/ R) X. x#include "CATCommandHeader.h"        " I6 K4 a& B- S9 o, K) @
MacDeclareHeader(PartCmdHeader);
0 K# H9 h; E' j5 S3 \! x1 z( t7 n
这两个函数及宏都可以按ctrl+F1查到, CreateCommands里面的代码只是用 MacDeclareHeader生成的PartCmdHeader定义命令的header(不知道怎么翻译,就是工具条或菜单里面可以看到的执行命令的按钮了,这个命令是连接界面命令和实现代码的桥梁。)如:
' ?& h& ]# a# ?; f9 K& rnew PartCmdHeader("Create Point","CmdModule","PointCmd",(void *)NULL);; Y! p" |& `3 I# q0 h  ~
new PartCmdHeader("Create Line","CmdModule","LineCmd",(void *)NULL);
! r% y2 i9 x  e/ X2 v9 a- Z/ V
第一个参数是按钮的名字,第二、三个代表按钮执行的命令所在的module和命令的名字,参数四缺省就行了。, J. g; u7 C, g/ V3 f
5 F' H; B1 p8 ]$ I6 v
CreateToolbars里面就是要建的工具条和菜单的主要内容:6 _" v+ C8 y8 G% d$ a

/ W% F( q0 ?- [# P" {. b1 B% s- ^
# A7 G8 ^  [3 R  e; M6 N
//设置工具条
5 B: f7 Y4 u' _) A+ L NewAccess(CATCmdContainer,pPartBenchTlb,PartBenchTlb);
9 _% i, J: t% V   AddToolbarView(pPartBenchTlb,1,Right);

" R. Z$ o, I4 I: M% @7 @0 R' j0 k# ] NewAccess(CATCmdStarter,pPointCmd,PointCmd);
8 j, v" f: Q- V SetAccessCommand(pPointCmd,"Create Point");
* V; g# ~: U& }+ X3 d SetAccessChild(pPartBenchTlb,pPointCmd);; q; z$ ]& o7 T" L1 L9 m
NewAccess(CATCmdStarter,pLineCmd,LineCmd);5 n# p4 F, W% R* V9 L! G
SetAccessCommand(pLineCmd,"Create Line");( C8 m6 V" V5 ~
SetAccessNext(pPointCmd,pLineCmd);

2 _- e) }8 n% }9 R
1 L; k+ B  P, s( I //设置菜单

- r9 p+ z" A0 G1 ], c NewAccess(CATCmdContainer,pPartBenchMun,PartBenchMun);0 |: B6 q7 r# B6 J' S
NewAccess(CATCmdContainer,pPartBenchSmu,PartBenchSmu);* d8 u; o, s8 t  T& B9 T
NewAccess(CATCmdStarter,pPointCmdm,PointCmdm);. c- L; }3 G: O
SetAccessCommand(pPointCmdm,"Create Point");( z2 ^1 e( m0 S  z
    NewAccess(CATCmdStarter,pLineCmdm,LineCmdm);
( D1 c  M# }5 m6 \8 C  G3 G) ]    SetAccessCommand(pLineCmdm,"Create Line");5 x1 h) X) c3 s% u( V

; m* P& k2 s* S) K SetAccessChild(pPartBenchMun,pPartBenchSmu);( D& y# Y! B' c9 j, k/ w1 |
    SetAccessChild(pPartBenchSmu,pPointCmdm);, w$ E# G5 q( ^
SetAccessNext(pPointCmdm,pLineCmdm);
3 x4 Z0 p* I/ {4 T    SetAddinMenu(pPartBenchTlb,pPartBenchMun);
7 f; X# P3 X5 X4 t) w" J0 N工作台、工具条、菜单栏中常见的一些宏 NewAccess()、SetAccessCommand()、6 p2 \; N* d9 N: a3 |9 ?
SetAccessChild() 、 SetAccessNext() 、 AddToolbarView() 、 SetWorkbenchMenu() 、2 J- e7 D2 O, D- n5 {
SetWorkshopMenu()、SetAddinMenu()等6 S6 ~9 a, k" H
NewAccess 的函数定义如下:
3 x. A: _; x0 ^8 U* o) nMacro NewAccess (className,variableName,objectName)
& x  B! Y, M6 b其中:className 包括 CATCmdContainer(表示菜单条、菜单、子菜单或者工具条)、
; K, w# H: o. A4 y$ UCATCmdWorkshop、CATCmdWorkbench、CATCmdStarter(表示命令)、CATCmdSeparator(表" C" x5 o8 N2 i
示分隔符)

. x' h2 P7 Y9 h) w% I
. K6 h# U; ], V. b, _: INewAccess, SetAccessCommand, SetAccessChild, SetAccessNext等几个命令的使用。其具体含义可以参看API文档的说明。其他的顾名就可思义。5 K* @+ {7 j! n
4、此时编译,发生几个连接错误。主要是CATCmdContainer类型及Newaccess的定义的头文件及其Module的添加。在.h文件中加上:#include "CATCmdContainer.h"
" \" [( S0 i! w' d/ R6 y- x在.cpp中加入:#include "CATCmdContainer.h"! L2 K) \* Q' w
#include "CATCreateWorkshop.h"/ w- U2 Z, ?! ~$ X" d3 I
在.mk文件中加入:WIZARD_LINK_MODULES =  \
" d; h1 q# N7 Z3 N/ JJS0FM JS0GROUP PrtWorkshop MechanicalModelerUIUUID \1 V; ~- @8 s7 ?# S- L
CATApplicationFrame$ e) a4 ?$ {; v* U; I8 q7 H
# END WIZARD EDITION ZONE 2 S' g; \! U5 a6 Y, ^0 L, a
LINK_WITH = $(WIZARD_LINK_MODULES)  \
/ E3 R6 V8 ~/ r" D          CATApplicationFrame 7 a  }0 O/ ?* i  ^- c8 y3 x: h
在Identitycard.h中加入:
$ ]9 Y3 x$ k0 ]& jAddPrereqComponent("ConstraintModelerUI",Protected);5 Y/ C' Y3 t8 r. E$ v
注意:每次换行时,都要加一斜线用来继续执行下面的module.
( j9 t( z: y% u/ }5 e1 n

* v) L9 R0 q) F3 |# r
. f0 k. Y4 H: o$ e3 [重新进入编译后,可以看到结果如下:
( M! R' H# k% ?& V  l1 n( M# a: C0 ^5 ?2 O6 t
tool.jpg
2 a& i, b% n: ~/ y8 {; ?1 d6 v8 F5 f2 `

5 E' D3 h7 K7 C8 ?9 l
1 s/ I) _& }, m& f! q/ T3 I5 s) i5 }8 N; Y

- P) E& X3 |: [: h# H, S% r
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了