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

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

admin 楼主

2017-1-19 22:46:47

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

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

x
CATIA二次开发入门教程---10 添加Add in菜单和工具条8 w- B' R" I" l1 m

7 c7 f0 w7 ?& A- W: P所谓Addin,是在系统已有的Workbench中插入新的工具条或者菜单。
6 \+ p/ p# z9 [. z5 L9 Y* G5 ]我们来在PartDesign中插入一个工具条。. }" s; r2 z$ X6 C: W' w$ _
1、新建一个module命名为myPartAddin,并将它设为active。: F) f9 d6 E6 z+ |% o  _
2、做接口CATIPrtWksAddin的implemention, insert->component,弹出对话框4 W' q" l5 k5 o
输入addin的名字,点击add再点击浏览选择要执行的接口,如图:

8 ]: v# I) ~( r addmin.png . e6 V) d4 n2 }( }0 _, |& F  Y2 B
1)接口可以多选。2)除了 CATIPrtWksAddin 外,还有四个最常用的接口,: F! i' V( |- R. n
CATIPRDWorkshopAddin 表示当前工具条在装配环境下显示;CATIDrwAddin 表示当前7 i: g7 x  u4 `2 S8 J
工具条在工程制图工作台下显示;CATIAMGProgramAddin 表示当前工具条在 AMG 工作
# {. g5 y- ^2 L: d. u台下显示;CATIAfrGeneralWksAddin 对应普通工作台,即打开 CATIA 后,任何 Workbench( }' R6 E2 \# f  N
下都显示当前工具条。

' S8 N! Z4 Z. [' k- Z  3、此时建立了一个空的Addin。在myframe.dico文件中可以看到这个Addin的声明:
8 C% h1 v9 d6 ~5 g3 T: F  v myAddin CATIPrtWksAddin libmyModule
( F: ~6 }) B5 e# R但是,要创建一个工具条,我们还需要在这个类:NewAddin中添加一些函数。2 N2 H% v3 A3 e! B2 ], b
在NewAddin类中添加两个Public函数声明:
# U/ k. {3 d' B$ l' T% ]2 H, o
void CreateCommands();
3 G1 D/ y5 L8 ^! [# a% ?/ y- LCATCmdContainer * CreateToolbars();

6 ^- l1 w) z  k8 {+ Q在NewAddin.cpp中添加宏定义:# o$ w) N! a8 S+ v; E
#include "CATCommandHeader.h"        
* x' @( \' O6 L/ W. F/ \MacDeclareHeader(PartCmdHeader);

. T, z, y, @. F6 m  F% p这两个函数及宏都可以按ctrl+F1查到, CreateCommands里面的代码只是用 MacDeclareHeader生成的PartCmdHeader定义命令的header(不知道怎么翻译,就是工具条或菜单里面可以看到的执行命令的按钮了,这个命令是连接界面命令和实现代码的桥梁。)如: % X" k+ R" o) ?/ i
new PartCmdHeader("Create Point","CmdModule","PointCmd",(void *)NULL);
2 Y+ N, W4 R  I- A6 r- Knew PartCmdHeader("Create Line","CmdModule","LineCmd",(void *)NULL);

8 _# J  _; R- d& I7 `, t; v第一个参数是按钮的名字,第二、三个代表按钮执行的命令所在的module和命令的名字,参数四缺省就行了。
& Q2 {& b$ I8 _8 O* A) M
6 @; {7 _7 s2 p6 S& zCreateToolbars里面就是要建的工具条和菜单的主要内容:% w, K. H. H1 y! S) ~7 D
2 R7 _2 `# e, I; k3 o0 O! ?+ _/ G

  N' @( y! T* K* X. P0 V //设置工具条
6 a1 R" f7 ]( Z$ L) h! \  ? NewAccess(CATCmdContainer,pPartBenchTlb,PartBenchTlb);
# u5 g( b8 w( d) I: c% z" i   AddToolbarView(pPartBenchTlb,1,Right);
% D9 J6 a* @2 F
NewAccess(CATCmdStarter,pPointCmd,PointCmd);+ j3 X, k! Y: @; U5 ~1 t: E
SetAccessCommand(pPointCmd,"Create Point");  Q$ D% b8 K8 g4 M
SetAccessChild(pPartBenchTlb,pPointCmd);
% P! f; D% a7 [8 V7 U, ?: `& } NewAccess(CATCmdStarter,pLineCmd,LineCmd);
3 L* @; n8 t" T- m% ?( X2 Q SetAccessCommand(pLineCmd,"Create Line");
. h- q0 y0 |. y$ c2 u SetAccessNext(pPointCmd,pLineCmd);

- Q+ Q! \7 {9 j" h  @% K+ \
2 r/ s4 m% m2 j //设置菜单

* m0 j+ j/ m7 ] NewAccess(CATCmdContainer,pPartBenchMun,PartBenchMun);8 W) g0 J4 p- ^( M
NewAccess(CATCmdContainer,pPartBenchSmu,PartBenchSmu);
& j' g/ f% a9 b7 [ NewAccess(CATCmdStarter,pPointCmdm,PointCmdm);
2 d5 B+ |4 H& W' L SetAccessCommand(pPointCmdm,"Create Point");
, @9 U7 R4 u& o0 k0 G' |" P7 \    NewAccess(CATCmdStarter,pLineCmdm,LineCmdm);$ x6 h8 I8 n) O. L% k% ?. W
    SetAccessCommand(pLineCmdm,"Create Line");
2 K+ H. M1 }" [+ S
# r  h; s/ X8 ]! l; L  W4 e; Z0 _ SetAccessChild(pPartBenchMun,pPartBenchSmu);
% M$ }5 B. [/ h1 w) [( Z. Z    SetAccessChild(pPartBenchSmu,pPointCmdm);! \. v7 E0 M0 q# Z; t& [
SetAccessNext(pPointCmdm,pLineCmdm); ' T! q3 L8 h, F8 K3 S+ H
    SetAddinMenu(pPartBenchTlb,pPartBenchMun);
$ D* n- y1 ~" s0 @. }工作台、工具条、菜单栏中常见的一些宏 NewAccess()、SetAccessCommand()、
. A7 b# O$ u$ I4 I/ K3 X) j! U: q5 @SetAccessChild() 、 SetAccessNext() 、 AddToolbarView() 、 SetWorkbenchMenu() 、
4 d) |0 ]( B/ n! I4 LSetWorkshopMenu()、SetAddinMenu()等
! P* B' S; k+ ^7 F& ]9 yNewAccess 的函数定义如下: 8 H* N  o3 B" ~) l/ ~* h
Macro NewAccess (className,variableName,objectName) " [* w: j! y  ]4 u2 U# }6 ?
其中:className 包括 CATCmdContainer(表示菜单条、菜单、子菜单或者工具条)、
# x; Z  V! Y2 W# O: g) {* \+ FCATCmdWorkshop、CATCmdWorkbench、CATCmdStarter(表示命令)、CATCmdSeparator(表" j7 b; W+ q" b
示分隔符)
8 r$ \- Q1 Y! S# l7 ^
: C" `) Z* }* K
NewAccess, SetAccessCommand, SetAccessChild, SetAccessNext等几个命令的使用。其具体含义可以参看API文档的说明。其他的顾名就可思义。4 |  T+ e. m9 c# A% o9 ]. f
4、此时编译,发生几个连接错误。主要是CATCmdContainer类型及Newaccess的定义的头文件及其Module的添加。在.h文件中加上:#include "CATCmdContainer.h"$ |& @6 a4 T0 k" `8 d/ K, Z: u
在.cpp中加入:#include "CATCmdContainer.h"
5 z! m2 r% ~, k8 @$ f0 c/ ?. _#include "CATCreateWorkshop.h"; o, A! d( r5 C
在.mk文件中加入:WIZARD_LINK_MODULES =  \9 q4 h9 e8 g) z, q: S8 v
JS0FM JS0GROUP PrtWorkshop MechanicalModelerUIUUID \! ?# e* U% L  S
CATApplicationFrame
4 [0 D$ {0 B4 O/ N" q; B# END WIZARD EDITION ZONE * L) Y* @& P' p7 e' p. r6 ]' y
LINK_WITH = $(WIZARD_LINK_MODULES)  \
7 y9 \1 G3 E- p4 w$ `, ]- {          CATApplicationFrame 4 }% F+ u5 e$ ?( F& e3 A
在Identitycard.h中加入:
0 p5 {8 R* }' d, n' v5 s) bAddPrereqComponent("ConstraintModelerUI",Protected);
: ^1 p8 T. d6 w1 _3 H注意:每次换行时,都要加一斜线用来继续执行下面的module.
1 T+ l( {! U" K; |4 B' d

& T  A9 g4 {8 y4 X5 d( ]
+ _1 j* f! }7 R8 z) I重新进入编译后,可以看到结果如下:
5 o* `, q! P! q4 K% h) E$ a+ R- _2 u. Z) }+ T7 P! c
tool.jpg
; X9 c7 u) y0 R9 v1 l# a' W
& ], z: _! r" n5 k% c6 c
+ d$ @# A, U. k5 \/ a# N" p

: w0 t" |5 p6 w( d' z
: `5 z, q# m$ R& i, f) r- h
3 }; C; B4 t& j0 q8 _$ C
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了