PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

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

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

[复制链接]

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

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

admin 楼主

2017-1-19 22:46:47

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

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

x
CATIA二次开发入门教程---10 添加Add in菜单和工具条2 O2 A2 o, a- r( \' ^

2 r+ {- d# y' ^9 M4 V% Q+ L" |! K所谓Addin,是在系统已有的Workbench中插入新的工具条或者菜单。
' u5 c6 R. J5 J我们来在PartDesign中插入一个工具条。  u  e; U2 i" ?& z
1、新建一个module命名为myPartAddin,并将它设为active。8 ^) P! _9 L: b
2、做接口CATIPrtWksAddin的implemention, insert->component,弹出对话框
  H9 ~" J3 C" T/ x: z1 K/ r输入addin的名字,点击add再点击浏览选择要执行的接口,如图:

  n5 |5 U$ _, `/ v5 l addmin.png
0 `; V! D+ @- f3 w0 j1)接口可以多选。2)除了 CATIPrtWksAddin 外,还有四个最常用的接口,  b0 ?! B- ?: M* d% i- m' D# H
CATIPRDWorkshopAddin 表示当前工具条在装配环境下显示;CATIDrwAddin 表示当前" u+ ^$ j2 K5 F/ B: P8 ^9 r& e- @
工具条在工程制图工作台下显示;CATIAMGProgramAddin 表示当前工具条在 AMG 工作
2 t2 \* R6 ?3 J) i. I' a台下显示;CATIAfrGeneralWksAddin 对应普通工作台,即打开 CATIA 后,任何 Workbench
5 Q1 U+ }" I, H下都显示当前工具条。

( R6 s9 U+ B4 B; A  3、此时建立了一个空的Addin。在myframe.dico文件中可以看到这个Addin的声明:! y7 r) g! J6 _) Z6 l
myAddin CATIPrtWksAddin libmyModule$ v+ }3 Y. L( `& i! U
但是,要创建一个工具条,我们还需要在这个类:NewAddin中添加一些函数。2 X$ A3 \8 e' h5 E: _' A
在NewAddin类中添加两个Public函数声明:

! j6 s3 [, |+ o) c9 e; G: E: Lvoid CreateCommands();
* a1 [+ B! }, I! [9 ?! nCATCmdContainer * CreateToolbars();

; v$ q; r1 t* @4 _# F; X* L  J在NewAddin.cpp中添加宏定义:6 t( v7 ]4 Q$ B5 u) y
#include "CATCommandHeader.h"        
: J+ U6 e5 b2 n$ u5 M) ]3 B7 WMacDeclareHeader(PartCmdHeader);

6 _- C. q5 W) Q0 ?% s这两个函数及宏都可以按ctrl+F1查到, CreateCommands里面的代码只是用 MacDeclareHeader生成的PartCmdHeader定义命令的header(不知道怎么翻译,就是工具条或菜单里面可以看到的执行命令的按钮了,这个命令是连接界面命令和实现代码的桥梁。)如: 6 e' ^! I- l, B' [4 t; }6 H/ i
new PartCmdHeader("Create Point","CmdModule","PointCmd",(void *)NULL);
! ~4 S0 W( k6 q* |; z! j; Bnew PartCmdHeader("Create Line","CmdModule","LineCmd",(void *)NULL);

# A0 G  e7 z2 n3 e& ?$ V1 v第一个参数是按钮的名字,第二、三个代表按钮执行的命令所在的module和命令的名字,参数四缺省就行了。' c) o+ i8 H- k4 t8 w/ Y
$ T+ |/ M1 _$ ^3 f+ }: L  s& L
CreateToolbars里面就是要建的工具条和菜单的主要内容:! r4 K. y) f0 F; w' _9 P+ ^

% n! ?' z2 [2 |/ g
/ p7 h9 R$ }' M, c2 k' Q1 f
//设置工具条0 h/ F! [1 U! ^1 Z+ E( g
NewAccess(CATCmdContainer,pPartBenchTlb,PartBenchTlb);2 d4 n' A0 j+ @
   AddToolbarView(pPartBenchTlb,1,Right);

  C/ n: z( _- J' @! `) D1 Q# j NewAccess(CATCmdStarter,pPointCmd,PointCmd);
! o! |; d, z) _: }) l& s SetAccessCommand(pPointCmd,"Create Point");
1 M- F9 T9 \. _; k- w- ^ SetAccessChild(pPartBenchTlb,pPointCmd);- w! y0 ^9 [. K6 b6 y7 |
NewAccess(CATCmdStarter,pLineCmd,LineCmd);# J! W% \1 Q. y2 l6 q( L2 t
SetAccessCommand(pLineCmd,"Create Line");
6 E9 x1 Z, o8 O( V SetAccessNext(pPointCmd,pLineCmd);

$ }9 j( t6 S) \2 l ! ?- b9 z* Q, ]* g- j# y, P8 k
//设置菜单
- o' P" K1 ?3 @# Z
NewAccess(CATCmdContainer,pPartBenchMun,PartBenchMun);) I+ G* @* F  _3 U+ p
NewAccess(CATCmdContainer,pPartBenchSmu,PartBenchSmu);7 m; W8 t! f! t: g  l* h6 ^5 [/ p
NewAccess(CATCmdStarter,pPointCmdm,PointCmdm);& m- C  T6 l' T
SetAccessCommand(pPointCmdm,"Create Point");$ W/ E3 Q! @' D: h+ `
    NewAccess(CATCmdStarter,pLineCmdm,LineCmdm);, i5 ~9 {. h% u  _: s; a) a! e
    SetAccessCommand(pLineCmdm,"Create Line");% p9 j- d! a7 O$ j( U
. h. T/ Q) }4 x( I# p
SetAccessChild(pPartBenchMun,pPartBenchSmu);
% K5 P+ U$ J: K) B1 B1 o# z    SetAccessChild(pPartBenchSmu,pPointCmdm);
# y* i* u9 C9 x' j" d SetAccessNext(pPointCmdm,pLineCmdm); 3 K- e0 }" r4 y  H% h
    SetAddinMenu(pPartBenchTlb,pPartBenchMun);
& l& q0 g8 c" L! c! N$ I/ Y工作台、工具条、菜单栏中常见的一些宏 NewAccess()、SetAccessCommand()、
/ A+ I. H/ V8 E9 n+ m9 cSetAccessChild() 、 SetAccessNext() 、 AddToolbarView() 、 SetWorkbenchMenu() 、
. K! t7 i- p0 Q  N2 r! PSetWorkshopMenu()、SetAddinMenu()等: r4 r, T$ d! E* V
NewAccess 的函数定义如下: 4 V0 M! B2 G+ G* D9 k* v+ d
Macro NewAccess (className,variableName,objectName) 7 P& W5 \) p- ?# ]; {
其中:className 包括 CATCmdContainer(表示菜单条、菜单、子菜单或者工具条)、! j& `6 c- G5 V  k3 u9 E$ a, h' x
CATCmdWorkshop、CATCmdWorkbench、CATCmdStarter(表示命令)、CATCmdSeparator(表# U+ }  Z6 }* E& a2 z0 t& ^- D. N  w
示分隔符)

; e$ z* a$ p3 Q5 N( m' }0 b: C. K7 C5 y5 U
NewAccess, SetAccessCommand, SetAccessChild, SetAccessNext等几个命令的使用。其具体含义可以参看API文档的说明。其他的顾名就可思义。9 _$ d; K* ^) u% ^# {& p
4、此时编译,发生几个连接错误。主要是CATCmdContainer类型及Newaccess的定义的头文件及其Module的添加。在.h文件中加上:#include "CATCmdContainer.h"" c1 [7 e" ~7 r: C6 ~2 _, E) Z2 X
在.cpp中加入:#include "CATCmdContainer.h"- m6 T9 x; H2 b% n% G
#include "CATCreateWorkshop.h"  Y5 I2 A" ^2 G( A5 W/ p
在.mk文件中加入:WIZARD_LINK_MODULES =  \
% {9 v; U, `: K8 L. ^JS0FM JS0GROUP PrtWorkshop MechanicalModelerUIUUID \
# B8 F" R' f" f3 F- [* Z$ vCATApplicationFrame  f7 g5 n5 K" @/ Y" d
# END WIZARD EDITION ZONE / {7 Y1 G! j0 Q; L0 z
LINK_WITH = $(WIZARD_LINK_MODULES)  \0 I2 D2 _+ C' G+ C
          CATApplicationFrame
; s9 _: `! T! y8 A& T8 X7 U在Identitycard.h中加入:+ ]4 G% i1 D/ w5 u) G8 T
AddPrereqComponent("ConstraintModelerUI",Protected);, J. y. C, J9 O5 a3 Z8 J5 N/ B
注意:每次换行时,都要加一斜线用来继续执行下面的module.
5 Q1 W' r+ {. d) ~) J* Q" M$ y

4 u8 @3 ~4 `+ Z( i' S8 j; q' X8 O
重新进入编译后,可以看到结果如下:
/ ~9 v6 \3 q: |8 S8 L  q. D/ I- d" y/ Q& p  ]+ V) W
tool.jpg
% N, X' T1 Y; x5 N4 E- Y: U4 J, V6 g7 \% ^
. }# E# a& X( E: B! a

, ~" G* X( H$ M
) o) L2 g; j0 ^2 o; x
- T. A# N  `8 b) E; S) D
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了