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

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

admin 楼主

2017-1-19 22:46:47

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

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

x
CATIA二次开发入门教程---10 添加Add in菜单和工具条
1 ]& M4 n, ~, _7 h0 n# b9 u  {4 u  R9 @$ x
& a, T: N! W  R* G所谓Addin,是在系统已有的Workbench中插入新的工具条或者菜单。
3 l+ u  w  O. ]7 R  O我们来在PartDesign中插入一个工具条。
4 F# h) |; J/ Q1 R/ E. E' Y- x 1、新建一个module命名为myPartAddin,并将它设为active。
4 k9 h$ D2 v+ W& [: ~: s 2、做接口CATIPrtWksAddin的implemention, insert->component,弹出对话框$ r0 I1 ~5 V# L, z# f3 t! I0 N
输入addin的名字,点击add再点击浏览选择要执行的接口,如图:
; W4 t. O: i, l
addmin.png : W" y/ r4 ]4 [
1)接口可以多选。2)除了 CATIPrtWksAddin 外,还有四个最常用的接口,* t3 C$ S. p9 {6 N
CATIPRDWorkshopAddin 表示当前工具条在装配环境下显示;CATIDrwAddin 表示当前
7 b) o# c( F" ^, [+ C. Q: W工具条在工程制图工作台下显示;CATIAMGProgramAddin 表示当前工具条在 AMG 工作
3 ^0 ]8 B: E, @2 @" c9 o* H1 B% f/ ]台下显示;CATIAfrGeneralWksAddin 对应普通工作台,即打开 CATIA 后,任何 Workbench
/ J2 C9 F" i6 s1 r: B7 q: `/ S( F( _下都显示当前工具条。
' k2 G9 S! \1 [) i( v# P
  3、此时建立了一个空的Addin。在myframe.dico文件中可以看到这个Addin的声明:5 W6 F+ D* V$ C1 ?$ `
myAddin CATIPrtWksAddin libmyModule
1 i) h: T5 R+ x9 e但是,要创建一个工具条,我们还需要在这个类:NewAddin中添加一些函数。' E- j/ y' v! ~9 @- l( l* r0 L
在NewAddin类中添加两个Public函数声明:
0 r' J- n9 D) U! B: E$ \
void CreateCommands();4 v4 W2 X1 _* s4 p6 t5 {% L8 \
CATCmdContainer * CreateToolbars();

: L8 o; s6 F9 L3 A# O; q在NewAddin.cpp中添加宏定义:
! k% j/ b( |% |1 u% F#include "CATCommandHeader.h"        
9 t1 N8 h5 g- ^; zMacDeclareHeader(PartCmdHeader);

0 z6 \, k3 e) j4 A这两个函数及宏都可以按ctrl+F1查到, CreateCommands里面的代码只是用 MacDeclareHeader生成的PartCmdHeader定义命令的header(不知道怎么翻译,就是工具条或菜单里面可以看到的执行命令的按钮了,这个命令是连接界面命令和实现代码的桥梁。)如:
+ j7 m- y8 L4 ~5 H4 ^1 y: m1 gnew PartCmdHeader("Create Point","CmdModule","PointCmd",(void *)NULL);# ^& X' \0 D4 I6 N& j
new PartCmdHeader("Create Line","CmdModule","LineCmd",(void *)NULL);
0 @1 l5 c- m8 H, x
第一个参数是按钮的名字,第二、三个代表按钮执行的命令所在的module和命令的名字,参数四缺省就行了。
  O/ D( f: i% ~4 Q" @
+ m; _7 f: J  @* {CreateToolbars里面就是要建的工具条和菜单的主要内容:
: M4 [' k* n# ~0 b; _9 \4 X! E) X9 o$ k
  F# ]+ |9 U# l* R
//设置工具条
8 A3 E1 x7 p0 j NewAccess(CATCmdContainer,pPartBenchTlb,PartBenchTlb);
  E# [) d9 q8 ]" q   AddToolbarView(pPartBenchTlb,1,Right);
+ P8 L% r, c( A% O7 J  X& y
NewAccess(CATCmdStarter,pPointCmd,PointCmd);0 H1 e. m; K9 ^! H. g
SetAccessCommand(pPointCmd,"Create Point");- {: ]6 S' i8 R+ N4 a- x9 m
SetAccessChild(pPartBenchTlb,pPointCmd);
' K' `! F. j1 M$ l! u NewAccess(CATCmdStarter,pLineCmd,LineCmd);
7 O8 J/ A5 U% y1 P- G7 R5 \+ W SetAccessCommand(pLineCmd,"Create Line");( |' o* S: v5 D9 k% d( Z
SetAccessNext(pPointCmd,pLineCmd);
* w* v8 t" g" _& o

/ U7 q. t" F1 t* [# [ //设置菜单

( D8 v/ y& n" A- F; i, z NewAccess(CATCmdContainer,pPartBenchMun,PartBenchMun);) J6 y6 u7 R: d% U( V
NewAccess(CATCmdContainer,pPartBenchSmu,PartBenchSmu);" ]5 p6 F: a3 l# b, N# S0 c
NewAccess(CATCmdStarter,pPointCmdm,PointCmdm);
: J, y0 Z2 A3 m& r! u( W# s0 L SetAccessCommand(pPointCmdm,"Create Point");3 D4 ]# |5 l2 d$ y
    NewAccess(CATCmdStarter,pLineCmdm,LineCmdm);
, t4 R3 e# R- o, K% z9 n' v+ q$ m    SetAccessCommand(pLineCmdm,"Create Line");- Y( b' \' w$ ^, [
) Y2 N0 a' h2 A9 T! K
SetAccessChild(pPartBenchMun,pPartBenchSmu);3 k5 \/ V" z# {
    SetAccessChild(pPartBenchSmu,pPointCmdm);) [; y( e8 g  L6 e) {
SetAccessNext(pPointCmdm,pLineCmdm);
0 A  x; x' J2 p9 a2 _) P    SetAddinMenu(pPartBenchTlb,pPartBenchMun);( _5 ?( \8 m! H# i2 ~, V7 I4 B
工作台、工具条、菜单栏中常见的一些宏 NewAccess()、SetAccessCommand()、& t0 i* r! O. ~
SetAccessChild() 、 SetAccessNext() 、 AddToolbarView() 、 SetWorkbenchMenu() 、6 L( H: _6 Z3 U: x
SetWorkshopMenu()、SetAddinMenu()等1 p. H3 u6 q& E! P# c# S4 E/ U
NewAccess 的函数定义如下:
3 r! o* z- s0 H3 p2 @Macro NewAccess (className,variableName,objectName)
: q8 A0 k9 S6 I- B8 Z其中:className 包括 CATCmdContainer(表示菜单条、菜单、子菜单或者工具条)、0 {+ M+ }" ?5 C/ |, G7 t
CATCmdWorkshop、CATCmdWorkbench、CATCmdStarter(表示命令)、CATCmdSeparator(表* j. A$ z8 s$ W5 `6 `! g  g% U
示分隔符)
, I' k  a+ Y( W; H( y% ^. W

/ w& ]% K$ t# m- d' z1 _NewAccess, SetAccessCommand, SetAccessChild, SetAccessNext等几个命令的使用。其具体含义可以参看API文档的说明。其他的顾名就可思义。
/ F7 X6 N8 D: b+ ^% n5 V$ m8 g6 X9 h4 @4、此时编译,发生几个连接错误。主要是CATCmdContainer类型及Newaccess的定义的头文件及其Module的添加。在.h文件中加上:#include "CATCmdContainer.h"$ L1 @; t( v9 n' z
在.cpp中加入:#include "CATCmdContainer.h"+ i/ h8 q1 {& T* w0 f* A$ o
#include "CATCreateWorkshop.h"1 T1 }6 C) v3 H$ y1 l$ p
在.mk文件中加入:WIZARD_LINK_MODULES =  \# F& ^' {% ~  p; ?2 L& r$ t1 e
JS0FM JS0GROUP PrtWorkshop MechanicalModelerUIUUID \, l5 W/ @- S1 f; B5 i
CATApplicationFrame
# K7 V; W/ l' B4 h  ]4 @# END WIZARD EDITION ZONE 0 N, e& f  _& W* ?6 x1 e
LINK_WITH = $(WIZARD_LINK_MODULES)  \
( T5 N: @6 v4 W, O8 c8 ^          CATApplicationFrame
+ `/ Q6 k" v$ ~在Identitycard.h中加入:' P. ~9 V3 k+ H7 W9 U
AddPrereqComponent("ConstraintModelerUI",Protected);6 q6 @. r; Z1 T+ w. Z
注意:每次换行时,都要加一斜线用来继续执行下面的module.

4 R. ]# T3 E0 Q4 e3 g- `  N. k% s# j2 K: Q+ {; ]$ \

& S. q  N5 m! Z& a9 s重新进入编译后,可以看到结果如下:* g, t" V6 l9 t2 P* F# I" H* G7 h
1 z' \) L+ c  G3 {% z
tool.jpg ( K. ^) P9 k6 r  A& g0 v4 A

; |7 T/ W6 v- r+ j2 T: L! z3 s6 x

  V6 z/ b+ J7 G2 e4 \( O4 z6 W
# A. B4 M$ {- r9 `8 ~7 K
4 F; C' e0 _8 w1 y8 ^6 Z: g) ?" o, h5 A2 ~* h
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了