UG NX二次开发菜单工具条的制作

####UG NX菜单工具条的制作1


1. 基础知识
  • 菜单利用MenuScript脚本语言进行编辑
  • 菜单脚本文件的扩展名为:*.men(文本文件)
  • MenuScript还可以定制工具条,其脚本文件扩展名为:*.tbr(文本文件)
  • 还有另外一种是Ribbonbar
  • 自定义UG菜单的两种方法
  1. Add-on菜单文件
    对于与具体应用模式无关的菜单文件只需将其放置在startup 文件夹下;
    与具体应用模式(如装配应用模式)相关的菜单文件放置在相应的application 文件夹下;
    通过使用MENU_FILES 声明,即可将菜单名与应用模式按钮相关联;
    在点击该应用模式按钮后即可自动加载与其关联的菜单文件。
  2. 复制和编辑系统菜单文件,放在某特定文件加下,覆盖原来的。
    复制和编辑系统菜单文件方法不推荐使用,这主要是由于其编辑起来相当复杂,特别
    是对于像ug_main.men 这样的大型菜单文件。
  • 将startup和application所在文件夹的路径注册到custom_dirs.dat 文件中,启动UG 可以看到定制的下拉菜单
  1. Example: D:\Workspace\NX_SD\OPEN
  2. 该文件一般路径为:D:\Program Files\Siemens\NX 11.0\UGII\menus\custom_dirs.dat

#####2. 定制菜单栏和工具栏一般步骤 2

  • 新建一个文件夹,在里面新建startup文件夹和application文件夹
  • 找到custom_dirs.dat文件,填入存放
  • 在startup下,新建一个文本文件,重命名,扩展名.men。在application下,放入二次开发生成的.dll文件。
  • UG NX起动时将搜索.men文件,并根据它来添加菜单;
  • 其中VERSION是版本,BEFORE UG_HELP是指菜单在HELP之前,CASCADE_BUTTON是给主菜单起的一个名字,LABEL是菜单的显示名称,MENU与CASCADE_BUTTON相呼应,BUTTON是给子菜单起的一个名字,ACTIONS指定了这个菜单将执行application文件夹下的哪个程序!
VERSION 10
EDIT UG_GATEWAY_MAIN_MENUBAR
BEFORE UG_HELP
    CASCADE_BUTTON MY_MENU
    LABEL 我的菜单 END_OF_BEFORE  
MENU MY_MENU
    ! 子菜单1
    BUTTON MENU_HELLO_WORLD
    LABEL HELLO WORLD!
    ACTIONS helloworld.dll
END_OF_MENU
  • 起动UG NX,可以看到菜单栏中出现了自定义菜单,单击菜单,指定的程序将被执行。
  • 自定义工具栏的制作与此类似,只不过是在startup文件夹下建立文件的扩展名是.tbr,文件内容也不同。(BUTTON是给按钮起一个名字,LABEL是鼠标放上去的显示名称,BITMAP是按钮的图案,ACTION指定了这个菜单将执行哪个程序,注意必须是绝对路径!)
TITLE MY_TOOLBAR
VERSION 160            
DOCK TOP
BUTTON MY_BUTTON
LABEL HelloWorld
BITMAP mybitmap.bmp
ACTION D:\TEST\startup\helloworld.dll

#####3. Ribbon菜单的定制34

  • 从NX9开始NX的界面使用了微软目前最新的对话框布局格式,Ribbon界面,除了本身的Ribbon的功能外,NX也额外的增强了Ribbon界面的功能。目前可以进行定义的菜单种类包括groups, galleries, drop-down ,对应的文件后缀如下:
    |Extension|UI object|
    |—|---|
    |.tbr|Toolbar|
    |.grb|Group|
    |.gly|Gallery|
    |.ddb|Drop-down|
    |.rtb|Ribbon tab|
    |.csb|Cascade|
    |.abr|Attachment|
  • RIBBON菜单的加载Ribbon界面的客户化文件和我们的菜单或者工具条.men,.trb文件一样,你可以放置在application目录,startup目录或者application\profiles目录下。具体的区别如下:
  1. Startup目录:这个文件夹下面的内容,是NX启动后,立即显示的类型,也就是说你的菜单会在NX启动后,立即全部展现出来。
  2. Application目录:和startup区别在于,只有在特定的模块下,才会显示,通常可以通过定义men文件或者通过API函数UF_UI_create_toolbar, UF_UI_create_ribbon进行定义。
  3. application\profiles目录:可以参考NX目录下UGII\menus\profiles目录下的定义
  • 对应的模块目录文件夹下:这种情况,根据你当前的模块去自动加载和卸载
  • ALL:和startup类似,全部加载
  • reference:在模块下的特殊子模块下加载,需要在.dtx文件里面定义
  1. 另外,还有更简单的方法来控制RIBBON界面在不同的模块显示情况,那就是角色文件mtx,大家可以参考PLM之家NX工具包的V1.1.0版本,在这里startup目录下面有mtx格式的文件,这种文件就是,大家可以把所有的ribbon文件全部放置在startup目录下,启动nx后,在ctrl+1编辑菜单的模式下,在不同的模块下自己去取消掉不需要的菜单,比如PLM之家NX插件下面的创建程序组功能,这个功能只能在加工环境下使用,因此,我们可以把这个工具条在制图,建模下面移除掉,更改完成后,将mtx文件保存下来,放在startup目录下,这样NX加载的时候会自动的去根据mtx来加载菜单!
  • 关于Ribbon界面上关键字的定义
    a. RIBBON_STYLE关键字: 默认情况下是大图标LARGE_IMAGE
ALWAYS_EXTRA_LARGE_IMAGE_WITHOUT_TEXT
EXTRA_LARGE_IMAGE_WITHOUT_TEXT
ALWAYS_LARGE_IMAGE_WITHOUT_TEXT
LARGE_IMAGE_WITHOUT_TEXT
ALWAYS_LARGE_IMAGE
LARGE_IMAGE
ALWAYS_MEDIUM_IMAGE_AND_TEXT
MEDIUM_IMAGE_AND_TEXT
MEDIUM_IMAGE
ALWAYS_SMALL_IMAGE_AND_TEXT
SMALL_IMAGE_AND_TEXT
SMALL_IMAGE

UG NX二次开发菜单工具条的制作
b. Group关键字的定义:

关键字是Group。
创建新的Group,使用BEGIN_GROUP,END_GROUP.
GROUP_STYLE 可以用DEFAULT和FLOWLAYOUT。

UG NX二次开发菜单工具条的制作


4. Create a customized toolbar with a TBR file5
  • Create a .tbr file for the new toolbar.
  • You can copy an existing .tbr file, such as the ug_standard.tbr file (in the UGII_BASE_DIR/UGII/menus directory), and modify the copied file to suit your needs.
  • Complete the header definition section.
  • Complete the contents of toolbar section.
  • (Optional) Specify bitmaps for one or more toolbar buttons.
  • (Optional) Add menus to the toolbar.
  • (Optional) Create custom buttons to show and hide toolbar sets.
  • Load the toolbar at startup or during an NX session.
    #####5. Tips
  • 可以现在.men文件中定义BUTTON的相关属性,然后再在.tbr.rtb等文件里面指定预定义过的BUTTON按钮,然后自动加载;
  • The platform must be in all upper case letters as shown;
  • 可以在官方帮助文档找到很详细的菜单定制文档;

  1. https://docs.plm.automation.siemens.com/tdoc/nx/11/nx_api/#uid:index_menuscript ↩︎

  2. https://jingyan.baidu.com/article/c843ea0bb5f33977931e4a00.html ↩︎

  3. http://www.plmhome.com/article-80-1.html ↩︎

  4. http://www.plmhome.com/article-81-1.html ↩︎

  5. https://docs.plm.automation.siemens.com/tdoc/nx/11/nx_api#uid:index_menuscript:customize_toolbar_tbr:ui_customize_uic_tb_create_ht ↩︎