NXOpen:Menu Script自定义菜单¶
发布于:2017-09-01 | 分类:CAD/CAE integration
NX自定义菜单栏可以根据当前所在的不同模块而显示不同内容,本文记录创建按模块显示的菜单栏的基本流程。以自定义菜单TEST MENU为例,该菜单包含三个分组:Public、Modeling和FEM。其中,
Public分组显示在任意模块下Modeling及FEM分组仅在Modeling或Pre/Post模块显示Modeling分组在Modeling和Pre/Post模块显示不同的菜单项,FEM分组同理
示例效果参考:

主菜单¶
文件夹Startup中创建的菜单脚本文件将在NX启动时进行加载,即可以显示在任意模块下。本例中需要按照不同模块加载,则需要APPLICATION_BUTTON命令指定加载的菜单文件。
主菜单文件test_main.men:
VERSION 170
EDIT UG_GATEWAY_MAIN_MENUBAR
!-------------------------------------------------
! user defined menu
!-------------------------------------------------
BEFORE UG_HELP
CASCADE_BUTTON TEST_MENU
LABEL TEST MENU
END_OF_BEFORE
!-------------------------------------------------
! contents of user defined menu
! ------------------------------------------------
! public menus show in all applications
MENU TEST_MENU
BUTTON TEST_MENU_PUBLIC
LABEL Public Button
END_OF_MENU
! Application dependent menus show
! in specified application
MODIFY
APPLICATION_BUTTON UG_APP_MODELING
MENU_FILES test_modeling.men
END_OF_MODIFY
MODIFY
APPLICATION_BUTTON UG_APP_SFEM
MENU_FILES test_fem.men
END_OF_MODIFY
其中,TEST_MENU_PUBLIC按钮对任意模块生效,test_modeling.men和test_fem.men是模块相关的菜单脚本文件,分别控制TEST MENU在Modeling模块、Pre/Post模块下的显示内容。模块菜单 将在第二部分介绍。
根据MenuScript语言基本规则,使用.menu脚本可以创建基本的菜单项命令,分类组织基本菜单项命令到.tbr脚本即为工具条,按Group组织工具条.tbr文件则形成新版的Ribbon界面。因此,为了实现开始所述Public、Modeling和FEM三个分组,需要分别创建三个工具条文件,例如test_public.tbr、test_modeling.tbr及test_fem.tbr。模块分组 将在第三部分介绍。
考虑到新版的Ribbon界面,可以在Startup文件夹下创建test_main.rtb,主要内容即为TEST MENU的三个分组工具条文件:
!-------------------------------------------------
! scripts for new style RIBBON UI!
! toolbar files will be transferred to ribbon groups
!-------------------------------------------------
TITLE TEST MENU
VERSION 170
GROUP test_public.tbr
GROUP test_modeling.tbr
GROUP test_fem.tbr
模块菜单¶
按模块加载的菜单脚本存放于Application文件夹下。
除了Gateway中定义的菜单项命令之外,NX还将按当前模块加载相应菜单脚本中定义的菜单项命令,共同组成TEST MENU。根据图1,本例的模块菜单脚本文件参考:
test_modeling.men
VERSION 139
EDIT UG_GATEWAY_MAIN_MENUBAR
!-------------------------------------------------
! user defined menu
!-------------------------------------------------
BEFORE UG_HELP
CASCADE_BUTTON TEST_MENU
LABEL Main test menu
END_OF_BEFORE
!-------------------------------------------------
! contents of user defined menu
! ------------------------------------------------
MENU TEST_MENU
SEPARATOR
BUTTON TEST_MENU_MODELING_1
LABEL Modeling Button 1
BUTTON TEST_MENU_MODELING_2
LABEL Modeling Button 2
BUTTON TEST_MENU_MODELING_3
LABEL Modeling Button 3
SEPARATOR
BUTTON TEST_MENU_FEM_1
LABEL FEM Button 1
END_OF_MENU
test_fem.men
VERSION 139
EDIT UG_GATEWAY_MAIN_MENUBAR
!-------------------------------------------------
! user defined menu
!-------------------------------------------------
BEFORE UG_HELP
CASCADE_BUTTON TEST_MENU
LABEL Main test menu
END_OF_BEFORE
!-------------------------------------------------
! contents of user defined menu
! ------------------------------------------------
MENU TEST_MENU
SEPARATOR
BUTTON TEST_MENU_MODELING_1
LABEL Modeling Button 1
SEPARATOR
BUTTON TEST_MENU_FEM_1
LABEL FEM Button 1
BUTTON TEST_MENU_FEM_2
LABEL FEM Button 2
END_OF_MENU
按模块分组¶
如第一部分所述,Public、Modeling和FEM三个分组分别对应了test_public.tbr、test_modeling.tbr和test_fem.tbr三个工具栏文件,因此这一部分来实现它们。
根据开始设定的需求,Public为公共分组,因此在Startup下创建脚本文件test_public.tbr,内容即为菜单脚本test_main.men中定义好的菜单项命令:
TITLE PUBLIC
VERSION 170
BUTTON TEST_MENU_PUBLIC
对于按模块加载的分组Modeling和FEM,需要存放于Application下的特定目录:
-
Profiles/UG_APP_MODELING/下的工具条文件将在Modeling环境下加载, -
Profiles/UG_APP_SFEM/下的工具条文件将在Pre/Post环境下加载。
因此在Profiles/UG_APP_MODELING/下创建test_modeling.tbr和test_fem.tbr,其内容来自test_modeling.men中定义好的四个命令:TEST_MENU_MODELING_1-TEST_MENU_MODELING_3和TEST_MENU_FEM_1。显然,前三个属于Modeling分组,最后一个属于FEM分组。因此,分别分类写入:
test_modeling.tbr
TITLE MODELING
VERSION 170
BUTTON TEST_MENU_MODELING_1
BUTTON TEST_MENU_MODELING_2
BUTTON TEST_MENU_MODELING_3
test_fem.tbr
TITLE FEM
VERSION 170
BUTTON TEST_MENU_FEM_1
同理在Profiles/UG_APP_SFEM/下创建:
test_modeling.tbr
TITLE MODELING
VERSION 170
BUTTON TEST_MENU_MODELING_1
test_fem.tbr
TITLE FEM
VERSION 170
BUTTON TEST_MENU_FEM_1
BUTTON TEST_MENU_FEM_2
总结¶
以上即为按模块加载的自定义菜单的基本创建流程,简要归纳为:
- 在主菜单文件中定义公共菜单项或者指定按模块加载的菜单文件
- 在按模块加载的菜单文件中定制相应的菜单项
- 组织所有菜单项命令为相应的分组,默认分组位于
startup,按需加载分组位于application/profiles
最后,本文涉及菜单脚本汇总于nx_menu_script,并将其基本流程图示如下:
