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

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

admin 楼主

2017-1-19 22:46:47

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

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

x
CATIA二次开发入门教程---10 添加Add in菜单和工具条* ]. H) \, a6 [0 V

# f! S! O3 o9 \& ]所谓Addin,是在系统已有的Workbench中插入新的工具条或者菜单。: Z# x' ~. Y- I6 V3 j
我们来在PartDesign中插入一个工具条。
) C* @9 t$ P: _) g0 f 1、新建一个module命名为myPartAddin,并将它设为active。9 F: j' Y5 E4 d; v3 _" l; N
2、做接口CATIPrtWksAddin的implemention, insert->component,弹出对话框9 W7 }: X# _8 e) C
输入addin的名字,点击add再点击浏览选择要执行的接口,如图:

0 a6 E6 w8 r( L. S addmin.png
/ d9 z4 c4 D0 q& j& f9 l1)接口可以多选。2)除了 CATIPrtWksAddin 外,还有四个最常用的接口," C- z! M% K) T4 \1 t: d( R) h5 g
CATIPRDWorkshopAddin 表示当前工具条在装配环境下显示;CATIDrwAddin 表示当前
/ X  Z8 g( L9 i工具条在工程制图工作台下显示;CATIAMGProgramAddin 表示当前工具条在 AMG 工作
( h; [6 |  n( M. B& S& B" f% J. A) h台下显示;CATIAfrGeneralWksAddin 对应普通工作台,即打开 CATIA 后,任何 Workbench
3 O) A) z/ U9 q- Y7 N5 \: E下都显示当前工具条。

7 \- p6 Y( B, X% ~( f! r) j" y  3、此时建立了一个空的Addin。在myframe.dico文件中可以看到这个Addin的声明:% B7 G! W1 Z$ @4 q5 f
myAddin CATIPrtWksAddin libmyModule
  B5 E2 f; P8 l8 }6 b' I" s但是,要创建一个工具条,我们还需要在这个类:NewAddin中添加一些函数。
5 t4 Y5 K0 B3 ?0 R" X% |: K, |在NewAddin类中添加两个Public函数声明:
: G8 K( y  r3 C) T! C  B
void CreateCommands();
/ c( X6 @' g  f& ?9 _; ACATCmdContainer * CreateToolbars();
: U; k) x  e0 A$ \% g/ [
在NewAddin.cpp中添加宏定义:
+ n# G% ^! \* |  \2 P; y! R( S; V#include "CATCommandHeader.h"        
& x8 s5 ]9 S/ f* Q3 `1 N: K' I; Z7 hMacDeclareHeader(PartCmdHeader);

# G! E) L5 {" ~& j( V这两个函数及宏都可以按ctrl+F1查到, CreateCommands里面的代码只是用 MacDeclareHeader生成的PartCmdHeader定义命令的header(不知道怎么翻译,就是工具条或菜单里面可以看到的执行命令的按钮了,这个命令是连接界面命令和实现代码的桥梁。)如: " w; I3 N( \& g5 e( v; B. D
new PartCmdHeader("Create Point","CmdModule","PointCmd",(void *)NULL);
' A' z, @0 Y7 R# O; vnew PartCmdHeader("Create Line","CmdModule","LineCmd",(void *)NULL);
/ G% I  W) A: G7 i" @( O. P
第一个参数是按钮的名字,第二、三个代表按钮执行的命令所在的module和命令的名字,参数四缺省就行了。
* b# T+ W2 O8 _! Z5 _. \$ V2 s; k% F" C' h
CreateToolbars里面就是要建的工具条和菜单的主要内容:0 t7 E" K- x3 d  T) C' C
. f$ S3 I; }( Q
: y) ]; W* K/ D$ p3 R  U
//设置工具条, R6 r- B  b7 S/ f$ m2 J
NewAccess(CATCmdContainer,pPartBenchTlb,PartBenchTlb);
, V4 i, O% W& t4 j   AddToolbarView(pPartBenchTlb,1,Right);

& O- ^1 @0 e" S( m/ ? NewAccess(CATCmdStarter,pPointCmd,PointCmd);, v% g7 B6 F$ ?5 |4 Y$ C
SetAccessCommand(pPointCmd,"Create Point");
* ^0 |% Y" H! Z2 ] SetAccessChild(pPartBenchTlb,pPointCmd);* m- z: q7 e- }" O
NewAccess(CATCmdStarter,pLineCmd,LineCmd);
- F% W3 }$ E1 Y) q4 j SetAccessCommand(pLineCmd,"Create Line");
* O4 V# I6 l% l SetAccessNext(pPointCmd,pLineCmd);

2 v2 j& E) _1 e
& l2 K9 o% M8 q //设置菜单
, ]$ C. @! N9 P, H& L
NewAccess(CATCmdContainer,pPartBenchMun,PartBenchMun);- u' [& p, X! S8 O+ k; Q
NewAccess(CATCmdContainer,pPartBenchSmu,PartBenchSmu);
7 h. ~( E! O' s1 [ NewAccess(CATCmdStarter,pPointCmdm,PointCmdm);
0 i1 \5 \1 l5 Q2 F* L; W% R SetAccessCommand(pPointCmdm,"Create Point");
6 E8 s2 l5 M! L' _/ h5 {    NewAccess(CATCmdStarter,pLineCmdm,LineCmdm);
9 v, X" q9 w& s    SetAccessCommand(pLineCmdm,"Create Line");2 j$ {/ A  R2 W2 n2 r6 M; B9 z* r' T/ E

5 [; y1 x9 V2 ]6 A6 |( G7 T SetAccessChild(pPartBenchMun,pPartBenchSmu);
% S3 o5 s- {; P* s2 O( H* q" A    SetAccessChild(pPartBenchSmu,pPointCmdm);
8 N' L+ Q8 i" i' ~; O SetAccessNext(pPointCmdm,pLineCmdm); , X9 S+ d8 j% A
    SetAddinMenu(pPartBenchTlb,pPartBenchMun);
0 {2 y% {& X6 D7 U工作台、工具条、菜单栏中常见的一些宏 NewAccess()、SetAccessCommand()、
9 z% E0 w, P( l$ y. Q* mSetAccessChild() 、 SetAccessNext() 、 AddToolbarView() 、 SetWorkbenchMenu() 、) g2 J: l$ i+ _
SetWorkshopMenu()、SetAddinMenu()等
: v, A  f* J# \6 N5 G) sNewAccess 的函数定义如下:
# }$ V3 x5 P! W& t% ~; f+ ^1 EMacro NewAccess (className,variableName,objectName)
$ E' Z6 F- p. {8 l其中:className 包括 CATCmdContainer(表示菜单条、菜单、子菜单或者工具条)、7 s' a% @& Y" }4 J' J% E; j2 ?
CATCmdWorkshop、CATCmdWorkbench、CATCmdStarter(表示命令)、CATCmdSeparator(表2 |! s- }$ ^3 K4 K/ Q, ?0 @
示分隔符)

7 ^% G6 p( a* ]6 U# J* n
5 w- x! M+ p& m8 O: B8 N3 ~& {NewAccess, SetAccessCommand, SetAccessChild, SetAccessNext等几个命令的使用。其具体含义可以参看API文档的说明。其他的顾名就可思义。  z: D; @* {$ V9 B0 m; T% {
4、此时编译,发生几个连接错误。主要是CATCmdContainer类型及Newaccess的定义的头文件及其Module的添加。在.h文件中加上:#include "CATCmdContainer.h"
; v6 c( o$ K, ~* Q( y9 t在.cpp中加入:#include "CATCmdContainer.h"
0 k& G, T- s. m# Y) P0 D; d#include "CATCreateWorkshop.h", w0 L9 q$ p! s2 ^- T
在.mk文件中加入:WIZARD_LINK_MODULES =  \% z; _, K- t! o0 E, J# K
JS0FM JS0GROUP PrtWorkshop MechanicalModelerUIUUID \
+ c6 u" X, \9 h# `8 d/ x+ L( RCATApplicationFrame
- x6 |7 v7 |/ n; H& i# END WIZARD EDITION ZONE 7 X3 S% Y, x* i0 D: l
LINK_WITH = $(WIZARD_LINK_MODULES)  \& B* {- |* G2 g" a+ }( A
          CATApplicationFrame
1 u/ N& O: Q, D3 c+ ]. p1 i6 d在Identitycard.h中加入:
1 _7 i( C6 L: T) E5 ~; O8 YAddPrereqComponent("ConstraintModelerUI",Protected);' h: p9 k+ I" i& |, k
注意:每次换行时,都要加一斜线用来继续执行下面的module.
: s! f4 f1 r6 c: D

% Q2 W! S( I6 D/ Y" r  ~" x# o# q7 G) G4 L7 U* z& M
重新进入编译后,可以看到结果如下:" f' p9 t( g" a* s. j5 g3 ^- R

. P% }2 W9 \6 K. D# n
tool.jpg 3 e* Z* U4 }% {1 }) |( ~; x% s5 [

- o4 |. {- K3 \, j' U

! L7 q0 o9 N" ?# L  l+ F0 M8 j  k' k0 m) V
! k6 C1 l1 T* p% N1 z

4 I) j% i1 |' O4 D2 i
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了