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

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

admin 楼主

2017-1-19 22:46:47

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

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

x
CATIA二次开发入门教程---10 添加Add in菜单和工具条
& s# |) \/ l# ^% k2 h4 Z% _
0 [( I0 y  B. L* j9 t  i所谓Addin,是在系统已有的Workbench中插入新的工具条或者菜单。
( g  h6 J  D; V! k; h: K我们来在PartDesign中插入一个工具条。
. T7 C* z% O- \( Y0 o8 B) I9 b 1、新建一个module命名为myPartAddin,并将它设为active。  ?3 n# Z3 c$ p/ A) ^3 X" s
2、做接口CATIPrtWksAddin的implemention, insert->component,弹出对话框
6 F% m% O' Y! Q5 @3 B( E. F8 y. }输入addin的名字,点击add再点击浏览选择要执行的接口,如图:
( |5 Z1 G1 T3 I) D
addmin.png
" s1 t0 f% Z6 H, Q* }$ F2 z1)接口可以多选。2)除了 CATIPrtWksAddin 外,还有四个最常用的接口,! q" o3 t& U+ A; {# W3 P( Z& R
CATIPRDWorkshopAddin 表示当前工具条在装配环境下显示;CATIDrwAddin 表示当前6 A: T/ o. J1 X" M8 E
工具条在工程制图工作台下显示;CATIAMGProgramAddin 表示当前工具条在 AMG 工作
1 R- x2 a' c8 B$ z) O台下显示;CATIAfrGeneralWksAddin 对应普通工作台,即打开 CATIA 后,任何 Workbench4 t3 t) a( |! \7 D$ f
下都显示当前工具条。
1 J! P. b4 L& N: q
  3、此时建立了一个空的Addin。在myframe.dico文件中可以看到这个Addin的声明:9 w% \5 A4 {0 d- M3 ^9 S
myAddin CATIPrtWksAddin libmyModule" M- r% O' t3 x8 Y
但是,要创建一个工具条,我们还需要在这个类:NewAddin中添加一些函数。
# @- v/ y3 P, X7 D在NewAddin类中添加两个Public函数声明:
' \. p% C9 i; d! y- M
void CreateCommands();
/ P) l" y7 `' r! `& bCATCmdContainer * CreateToolbars();

" M3 h1 d! N2 ^' S- M9 h6 @9 M在NewAddin.cpp中添加宏定义:
- t# v. G6 S8 u+ F2 P7 ?#include "CATCommandHeader.h"        
' _3 m% ~+ U4 M  i& RMacDeclareHeader(PartCmdHeader);
* L4 [4 L5 x8 T
这两个函数及宏都可以按ctrl+F1查到, CreateCommands里面的代码只是用 MacDeclareHeader生成的PartCmdHeader定义命令的header(不知道怎么翻译,就是工具条或菜单里面可以看到的执行命令的按钮了,这个命令是连接界面命令和实现代码的桥梁。)如: % ?6 p5 q' S, ]+ i( ~
new PartCmdHeader("Create Point","CmdModule","PointCmd",(void *)NULL);8 k& t3 f2 I2 B5 |0 K: d5 \* d9 g! T
new PartCmdHeader("Create Line","CmdModule","LineCmd",(void *)NULL);

- y/ }" @. o7 \6 ~" O" h7 q9 U第一个参数是按钮的名字,第二、三个代表按钮执行的命令所在的module和命令的名字,参数四缺省就行了。, R, {" x$ K+ T8 J
! K; ]& w* Q5 k4 M8 B9 v
CreateToolbars里面就是要建的工具条和菜单的主要内容:
, j! O! ?7 z! A2 q+ u% u- e. _$ Q* n" n  o; a8 J! a

3 Y) z: a. y1 t0 Q8 r //设置工具条4 l$ }8 n7 g3 x) ?) w
NewAccess(CATCmdContainer,pPartBenchTlb,PartBenchTlb);
/ m8 I! o& e- F. A: {3 c% b" b* H$ g   AddToolbarView(pPartBenchTlb,1,Right);
! `# I4 p. d- E
NewAccess(CATCmdStarter,pPointCmd,PointCmd);
) g; x$ F2 J1 A" ] SetAccessCommand(pPointCmd,"Create Point");4 K" \1 H( u8 T
SetAccessChild(pPartBenchTlb,pPointCmd);3 n, O# q3 E4 ?5 f3 L# E4 \5 S
NewAccess(CATCmdStarter,pLineCmd,LineCmd);& C4 X, f3 u9 z( b; {: R
SetAccessCommand(pLineCmd,"Create Line");
+ S/ h; e* h! i- A4 R- x, u SetAccessNext(pPointCmd,pLineCmd);
' k; V! I+ }/ m2 T. O( O* K

. f9 l: K  A1 p. U; B //设置菜单

! X; L3 z7 h: @9 }# Q$ Q8 } NewAccess(CATCmdContainer,pPartBenchMun,PartBenchMun);: U* \# N* ]3 j8 s% o8 |( G; q! n
NewAccess(CATCmdContainer,pPartBenchSmu,PartBenchSmu);
" [% c1 V5 n$ D' o# _4 ~* W NewAccess(CATCmdStarter,pPointCmdm,PointCmdm);
, b& Z" Z* h; o& |( _: D7 w# B SetAccessCommand(pPointCmdm,"Create Point");. f1 b, ^! f" p, g9 D! A" m! p' a
    NewAccess(CATCmdStarter,pLineCmdm,LineCmdm);; Y7 f7 {* _: J4 C4 P9 e# I0 y
    SetAccessCommand(pLineCmdm,"Create Line");. I) F0 G$ y* b

$ b$ o+ ~$ c. b( ? SetAccessChild(pPartBenchMun,pPartBenchSmu);) O* N( ?6 X1 D
    SetAccessChild(pPartBenchSmu,pPointCmdm);
4 L% N; C! h2 F) }; X SetAccessNext(pPointCmdm,pLineCmdm);
! N$ Y! t3 f' w. z. e    SetAddinMenu(pPartBenchTlb,pPartBenchMun);
/ [- N( l. V  Z. G工作台、工具条、菜单栏中常见的一些宏 NewAccess()、SetAccessCommand()、
. R9 I- w5 e9 D3 E: ZSetAccessChild() 、 SetAccessNext() 、 AddToolbarView() 、 SetWorkbenchMenu() 、# P# n9 Z4 S' Y; S
SetWorkshopMenu()、SetAddinMenu()等
: t- |3 L8 R* ~6 M( JNewAccess 的函数定义如下:
+ i$ j2 N5 a' uMacro NewAccess (className,variableName,objectName) 4 A! b6 U+ ~7 @: i! Y$ f8 x. v
其中:className 包括 CATCmdContainer(表示菜单条、菜单、子菜单或者工具条)、
' U+ Z% o' Z1 u( O, ACATCmdWorkshop、CATCmdWorkbench、CATCmdStarter(表示命令)、CATCmdSeparator(表
5 n0 a# d4 s2 r! H5 Y示分隔符)

. s) b! L8 q- g% f$ R
! G& G; O2 h, Y3 zNewAccess, SetAccessCommand, SetAccessChild, SetAccessNext等几个命令的使用。其具体含义可以参看API文档的说明。其他的顾名就可思义。
4 T% @& Z/ E! P4 ]/ ?5 q; U8 g4、此时编译,发生几个连接错误。主要是CATCmdContainer类型及Newaccess的定义的头文件及其Module的添加。在.h文件中加上:#include "CATCmdContainer.h") T& o  }& W7 A7 i
在.cpp中加入:#include "CATCmdContainer.h") i) z8 R9 k" O2 A
#include "CATCreateWorkshop.h"
! ?  Q; M0 c% [# Q$ @% `在.mk文件中加入:WIZARD_LINK_MODULES =  \: {; M' u5 v6 z& \8 {
JS0FM JS0GROUP PrtWorkshop MechanicalModelerUIUUID \' y0 C7 X- o* N7 V0 Q# n- v: S
CATApplicationFrame3 c9 _5 r/ y/ q
# END WIZARD EDITION ZONE
7 d$ t: h: g2 l$ ?+ ]/ @5 E+ kLINK_WITH = $(WIZARD_LINK_MODULES)  \
1 z: c, y( m3 E% Q          CATApplicationFrame
. Z: m# a% y3 [8 c. _; `在Identitycard.h中加入:
5 O, S5 M1 z# |8 f( E5 @+ lAddPrereqComponent("ConstraintModelerUI",Protected);6 s& z  x. G! C' V5 n
注意:每次换行时,都要加一斜线用来继续执行下面的module.
% L" D$ v' ]9 E# r4 g" F  i

, {/ V, x! [. D8 E- O4 K) j7 S0 G# X5 E: W! m
重新进入编译后,可以看到结果如下:
1 t) E( F- @" ?) J' ]
* U" a0 a0 p' b2 L
tool.jpg   N# E$ ]0 Z# z8 m9 R% d4 _
6 J  e& b8 a; ?  y( L# C

: z8 i0 u# T) t1 C5 Y4 h! |, u2 y& S6 }/ i& C2 |- M

) Z. p! W0 [- a! H/ z0 [
# U3 @$ p) G0 ]3 |8 X
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了