UG/NX10.0二次开发 - 菜单与工具条(学习笔记)

本文详细介绍了NX软件的菜单与工具条的二次开发过程,包括菜单的创建、挂靠、子级按钮的设置,以及图标和ACTIONS的使用方法。同时,文章提到了不同的开发语言选择,如C++、GRIP、.NET、JAVA、SNAP和KF,以及Python,并讲解了如何在Ribbon界面中实现菜单与工具条的定制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

一、步骤

  • 1、菜单与工具条;
  • 2、UI界面;
  • 3、应用程序。

二、开发语言

  • 1、C、C++:较难,适合专业人员研究;
  • 2、GRIP,全称Graphics Interactive Programming(图形交互编程):比较简单,但UI界面是NX4以前的版本,操作繁琐并且停止更新;
  • 3、.net、JAVA:适合有一定编程基础,但不精通人员研究;
  • 4、SNAP,全称Simple NX Application Programming:功能不是很强大,但在不断更新,未来可能替代GRIP;
  • 5、KF,全称Knowledge Fusion知识融合,上手容易,精通难;
  • 6、Python:上手容易,但教程少。

菜单与工具条

一、菜单

  • 1、UG实例:路径“D:\Software\NX10.0\NX\UGII\menus”下的.men文件;
  • 2、GC工具箱实例:路径“D:\Software\NX10.0\NX\LOCALIZATION\prc”下的.men文件;
  • 实例:
    !  ANSI编码格式
    !  NX customize menu file			//!为注释符
    !
    VERSION 120							//120:菜单的脚本版本,具体版本号可能不同
    EDIT UG_GATEWAY_MAIN_MENUBAR		//UG实例中CREATE,后续开发使用EDIT
    
    AFTER UG_HELP	//关键词:AFTER/BEFORE,UG_HELP为UG标准控件命名,在UG实例ug_main.men中可查看相关控件名称
    
    	CASCADE_BUTTON TKL_TOOLS_BTN	//TKL_TOOLS_BTN为控件名称
    	LABEL 合肥工业大学
    
    END_OF_AFTER
    
  • 3、菜单挂靠
    • 环境变量:
      UGII_VENDOR_DIR 定义第三方二次开发程序的目录
      UGII_SITE_DIR 定义用户共用二次开发程序的目录
      UGII_USER_DIR 定义用户二次开发程序的目录,推荐
      UGII_GROUP_DIR 可以使用
    • 方法1:将环境变量添加到:路径“D:\Software\NX10.0\NX\UGII\menus”下的custom_dirs.dat文件尾;
      这种方法路径不能存在空格,否则将失效
    • 实例1:UGII_USER_DIR = “D:\Software\NX10.0\NX\A_NXTools” //A_NXTools为自己创建的文件夹,存放startup、application文件夹
    • 方法2:将环境变量添加到系统环境变量中。
      这种方法稳定性更好,推荐
    • 实例2:变量名:UGII_USER_DIR;变量值:${UGII_BASE_DIR}\A_NXTools
    • 注:若不显示,重启电脑后重试。
  • 4、子级按钮
    VERSION 120
    EDIT UG_GATEWAY_MAIN_MENUBAR
    
    AFTER UG_HELP
    	CASCADE_BUTTON CN_TOOLS_BTN
    	LABEL 合肥工业大学
    END_OF_AFTER
    
    MENU CN_TOOLS_BTN	//父菜单控件名称
    	CASCADE_BUTTON CN_DCS_BTN	//一级子按钮,CASCADE_BUTTON:存在子按钮
    	LABEL GC DCS				//一级子按钮标签
    								//CASCADE_BUTTON该类型不能够设置图标
    	BUTTON XX		//BUTTON:不存在子按钮的普通按钮
    	LABEL XXX
    	BITMAP XXXX		//二级子按钮图标
    END_OF_MENU
    
    MENU CN_DCS_BTN		//一级子按钮控件名称
    	BUTTON GEAR_MODELING_BTN	//二级子按钮
    	LABEL Gear Modeling			//二级子按钮标签
    	BITMAP XXXX					//二级子按钮图标
    END_OF_MENU
    
  • 5、系统图标使用方法
    • 直接获取:
      • 工具栏右键,单击定制按钮
      • 右键单击工具栏图标,选择更改图标按钮,单击图标名…
      • 复制图标名称到BITMAP后作为位图控件名称
    • 获取对话框内图标:
      • 添加环境变量:PRINT_DIALOG_BITMAP_NAMES=1;
        • 方法一(推荐):添加环境变量到路径"D:\Software\NX10.0\NX\UGII"下的ugii_env_ug.dat文件尾;
        • 方法二:将环境变量添加到系统环境变量中,变量名:PRINT_DIALOG_BITMAP_NAMES;变量值:1。
      • 打开对话框,单击图标按钮后关闭;
      • 打开帮助中的日志文件,根据英文翻译查找相对应图标名称;
      • 复制图标名称到BITMAP后作为位图控件名称。
  • 6、自定义图标使用方法
    • 图标大小:特小16x16(.sc.bmp)、小24x24(.lc.bmp)、中32x32(.2s.bmp)、大48x48(.bmp)、超大64x64(.2l.bmp);
    • 制作bitmap图片存放到application文件夹下;
    • 复制图标名称到BITMAP后作为位图控件名称。
  • 7、自定义图标加载路径
    • 系统默认路径为application文件夹,若在application文件夹下建立子文件夹需添加环境变量;
    • 环境变量:UGII_BITMAP_PATH=${UGII_BASE_DIR}\A_NXTools\application\bitmaps
    • 添加到路径"D:\Software\NX10.0\NX\UGII"下的ugii_env_ug.dat文件中UGII_BITMAP_PATH位置;
  • 8、图标自适应分辨率
    • NX系统中图标大小有特小16x16、小24x24、中32x32、大48x48、超大64x64五个版本;
    • 自适应分辨率需要创建与之相对应的五个尺寸图标,分别以如下形式命名:xxx.sc.bmp/xxx.lc.bmp/xxx.2s.bmp/xxx.bmp/xxx.2l.bmp,其中xxx命名相同,仅后缀不同;
    • 在程序中"BITMAP xxx"不加后缀即可。
  • 9、复选按钮、系统版本、快捷键、分隔线、动态提示、激活状态、选中(默认)状态、搜索+重复列表、同义词、说明、帮助、推断式菜单,实例:
    VERSION 120
    EDIT UG_GATEWAY_MAIN_MENUBAR
    
    AFTER UG_HELP
    	CASCADE_BUTTON CN_MENU_BTN
    	LABEL 合肥工业大学
    END_OF_AFTER
    
    MENU CN_MENU_BTN
    	CASCADE_BUTTON CN_CB1_BTN	//CASCADE_BUTTON型按钮:包含子按钮
    	LABEL 按钮1
    	
    	BUTTON CN_CB2_BTN			//BUTTON型按钮:不包含子按钮的普通按钮
    	LABEL 按钮2
    	BITMAP modeling_checker.bmp
    	NO_REPEAT	//单击按钮不显示在重复列表,不设置默认显示
    	
    	SEPARATOR	//分隔线
    	
    	TOGGLE_BUTTON CN_CB3_BTN	//TOGGLE_BUTTON型按钮:复选按钮
    	LABEL 按钮3
    	MESSAGE 这是一个提示	//动态提示
    	ACCELERATOR Alt+3		//快捷键
    	VALUE ON				//默认激活,OFF默认关闭
    	SENSITIVITY ON			//状态设置:ON激活,OFF失效,不能直接跟在LABEL后面
    	
    	TOGGLE_BUTTON/PLATFORM=(X64WNT) CN_CB4_BTN	//PLATFORM=(X64WNT)系统版本设置
    	LABEL 按钮4
    	MESSAGE
    	BITMAP assembly_checker.bmp	//显示图标,选中状态图标包围方框
    	SENSITIVITY OFF				//不能直接跟在LABEL后面
    	
    	TOGGLE_BUTTON/PLATFORM=(IX86WNT) CN_CB5_BTN
    	LABEL 按钮5
    	
    	TOGGLE_BUTTON CN_CB6_BTN	//一般顺序
    	LABEL 按钮6					//标签
    	TOOLBAR_LABEL				//搜索命令列表+重复命令列表标签/工具条标签
    	MESSAGE						//动态提示
    	SYNONYMS					//搜索命令列表同义词
    	HINT						//一些隐藏的命令,需要添加环境变量显示,使用HINT进行说明
    	HELP/HELP_TCIN				//HELP:打开本地帮助文档;HELP_TCIN:打开TC帮助文档
    	BITMAP						//图标
    	POPUP_LABEL					//视图推断式菜单上显示的名字
    	POPUP_MESSAGE				//视图推断式菜单上显示的动态提示
    	POPUP_LOCATION				//视图推断式菜单上命令房子的位置,位置:顺时针12345678
    	ACCELERATOR					//快捷键
    	VALUE						//默认状态
    	SENSITIVITY					//激活设置
    	ACTIONS						//行为
    END_OF_MENU
    ********************************************
    SYNONYMS	//未知如何使用:搜索命令列表同义词
    FOLDED		//未知如何使用:菜单项极少使用时,将菜单隐藏起来,在使用时展开
    

二、工具条

  • GC工具箱实例:路径“D:\Software\NX10.0\NX\LOCALIZATION\prc”下的.tbr文件;
  • 实例:
    TITLE 合肥工业大学		//工具条名称
    VERSION 170				//脚本版本号
    DOCK TOP				//工具条初始停靠位置:TOP上、BOTTOM下、LEFT左、RIGHT右
    
    	BUTTON CN_CB2_BTN	//.men中按钮控件名称
    	LABEL				//工具条标签
    	BITMAP				//工具条图标
    	
    	SEPARATOR			//分隔线
    	
    	BEGIN_DROPDOWN droptbr	//下拉式工具条
    	LABEL 下拉式工具条		//下拉式工具条标签(鼠标停留显示)
    	AS_POPUP_MENU			//既显示图标又显示文字,否则只显示图标或文字
    		BUTTON CN_BB1_BTN
    		BUTTON CN_BB2_BTN
    	END_DROPDOWN
    	
    	SEPARATOR
    
    	BUTTON CN_BB3_BTN
    

三、高级用法(分模块显示)

  • 1、将.men文件拆分成为各个模块下要显示的独立文档,如test_menu_model.men、test_menu_draw.men,并移动到application文件夹下;
  • 2、将.tbr文件拆分成为各个模块下要显示的独立文档,如test_menu_model.tbr、test_menu_draw.tbr,文件位置不变;
  • 3、在startup文件夹下新建.men文档,控制显示模块,如test_classify.men;
  • 实例:
    ! test_classify.men	//控制显示模块
    VERSION 120
    EDIT UG_GATEWAY_MAIN_MENUBAR
    
    MODIFY
    APPLICATION_BUTTON UG_APP_MODELING	//模块控件名称
    MENU_FILES test_menu_model.men		//要显示的.men文档名称,若要显示多个菜单用空格隔开即可
    END_OF_MODIFY
    
    MODIFY
    APPLICATION_BUTTON UG_APP_DRAFTING
    MENU_FILES test_menu_draw.men
    END_OF_MODIFY
    **************************************************
    ! test_menu_model.men	//application中的.men文档1
    VERSION 120
    EDIT UG_GATEWAY_MAIN_MENUBAR
    
    ! 主菜单
    AFTER UG_HELP
    	CASCADE_BUTTON CN_MENU_BTN
    	LABEL 合肥工业大学1
    END_OF_AFTER
    
    ! 子菜单
    MENU CN_MENU_BTN
    	BUTTON CN_CB1_BTN
    	LABEL 按钮1
    	
    	BUTTON CN_CB2_BTN
    	LABEL 按钮2
    	
    	BUTTON CN_CB3_BTN
    	LABEL 按钮3
    END_OF_MENU
    **************************************************
    ! test_menu_draw.men	//application中的.men文档2
    VERSION 120
    EDIT UG_GATEWAY_MAIN_MENUBAR
    
    ! 主菜单
    AFTER UG_HELP
    	CASCADE_BUTTON CN_MENU_BTN
    	LABEL 合肥工业大学2
    END_OF_AFTER
    
    ! 子菜单
    MENU CN_MENU_BTN
    	BUTTON CN_CB4_BTN
    	LABEL 按钮4
    	
    	BUTTON CN_CB5_BTN
    	LABEL 按钮5
    	
    	BUTTON CN_CB6_BTN
    	LABEL 按钮6
    END_OF_MENU
    **************************************************
    ! test_menu_model.tbr	//startup中的.tbr文档1
    TITLE 合肥工业大学1
    VERSION 170
    DOCK TOP
    
    	BUTTON CN_CB1_BTN
    !	LABEL
    	BITMAP block
    	
    	SEPARATOR
    	
    	BEGIN_DROPDOWN droptbr1	//多个文档中下拉式工具条名称不能相同
    	LABEL 下拉式工具条1
    	AS_POPUP_MENU
    		BUTTON CN_CB2_BTN
    !		LABEL
    		BITMAP cylinder
    		
    		BUTTON CN_CB3_BTN
    !		LABEL
    		BITMAP cone
    	END_DROPDOWN
    **************************************************
    ! test_menu_draw.tbr	//startup中的.tbr文档2
    TITLE 合肥工业大学
    VERSION 170
    DOCK TOP
    
    	BUTTON CN_CB4_BTN
    	LABEL 按钮4
    	BITMAP extrude
    	
    	SEPARATOR
    	
    	BEGIN_DROPDOWN droptbr2	//多个文档中下拉式工具条名称不能相同
    	LABEL 下拉式工具条2
    	AS_POPUP_MENU
    		BUTTON CN_CB5_BTN
    		LABEL CB5
    		BITMAP revolution
    		
    		BUTTON CN_CB6_BTN
    		LABEL CB6
    		BITMAP sphere
    	END_DROPDOWN
    
  • 4、模块控件名称查询方法
    • 方法一:信息菜单->定制菜单条->快捷键;
    • 方法二:信息菜单->定制菜单条->报告工具->菜单条报告->Standard Items->确定;
    • 方法三(推荐):路径"D:\Software\NX10.0\NX\UGII\menus\ug_main.men"文件中的Application Menu下控件名称;
  • 5、关键字:不清楚怎么使用,先了解这种写法
    APPLICATION_BUTTON/PLATFORM=(PLAT1L,PLAT2...)<button name>
    LIBRARIES[(/APPEND|/REPLACE)][{library}]
    MENU_FILES[(/APPEND|/REPLACE)][{menu file}]
    

四、ACTIONS用法

  • 1、系统标准用法:ACTIONS STANDARD,系统内部封装的标准控件行为,通过BUTTON控件ID名称调用对应的方法;
  • 2、动态链接库(.dll)、GRIP(.grs)、KF(.dfa)、操作记录(.vb)、宏(.macro)、对话框(.dlg)、UTD文件(.utd)、VBS文件(.vbs)
    • 例:ACTIONS xx.dll/.grs/.dfa/.vb/.macro/.dlg/.utd/.vbs,这些文件需存放在application文件夹下;
  • 3、执行系统指令,如:
    • 打开系统程序:ACTIONS “start xx.exe”
    • 打开网页:ACTIONS “start http://www.123.com”
    • 打开非系统文件:ACTIONS “start C:\123.txt”,若路径有空格:ACTIONS ““C:\12 3.txt””
  • 4、批量执行指令
    VERSION 120
    EDIT UG_GATEWAY_MAIN_MENUBAR
    
    AFTER UG_HELP
    	CASCADE_BUTTON CN_MENU_BTN
    	LABEL 合肥工业大学
    END_OF_AFTER
    
    MENU CN_MENU_BTN
    	BUTTON CN_CB1_BTN
        LABEL 按钮1
    	ACTIONS xx.dll
    END_OF_MENU
    
    MODIFY
    BUTTON CN_CB1_BTN
    ACTIONS/PRE start.grx	//执行xx.dll之前执行start.grx
    ! ACTIONS/POST end.grx	//执行xx.dll之后执行end.grx
    ! ACTIONS/REPLACE start.grx xx.dll end.grx	//按顺序执行
    END_OF_MODIFY
    

五、Ribbon界面菜单与工具条

  • 1、直接制作Ribbon工具条(.rtb),其它工具条添加到该文档中显示
    TITLE 合肥工业大学
    VERSION 170
    
    GROUP test_ribbon_cascade.csb
    GROUP test_ribbon_dropdown.ddb
    ! GROUP test_ribbon_model.tbr	//tbr工具条会在经典菜单下显示,使用Group工具条(.grb)代替
    ! GROUP test_classic_model.tbr	//使用GROUP命令,将经典工具条转换为Ribbon工具条
    	
    ! BEGIN_GROUP 合肥工业大学自定义	//添加组,这种模式可单独创建Group工具条(.grb),使.rtb仅作为一个组织文件
    ! 	BUTTON CN_CB1_BTN
    ! 	BUTTON CN_CB2_BTN
    ! 	BUTTON CN_CB3_BTN
    ! END_GROUP
    
    GROUP test_ribbon_model.gly
    COLLAPSED TRUE					//gallery工具条压缩到一个按钮下
    
    GROUP test_ribbon_group.grb		//组工具条
    
  • 2、经典工具条(.tbr)转换为Ribbon工具条
    TITLE 合肥工业大学CLASSIC
    VERSION 170
    DOCK TOP
    
    	BUTTON CN_CB1_BTN
    	RIBBON_STYLE SMALL_IMAGE_AND_TEXT	//RIBBON工具条风格
    	BITMAP block
    	
    	SEPARATOR
    	
    BEGIN_DROPDOWN droptbr1
    LABEL 下拉式工具条1
    AS_POPUP_MENU
    	BUTTON CN_CB2_BTN
    	RIBBON_STYLE SMALL_IMAGE_AND_TEXT
    	BITMAP cylinder
    	
    	BUTTON CN_CB3_BTN
    	RIBBON_STYLE SMALL_IMAGE_AND_TEXT
    	BITMAP cone
    END_DROPDOWN
    
  • 3、下拉式工具条Drop-down(.ddb):
    TITLE 合肥工业大学DROPDOWN
    VERSION 170
    BITMAP block	//若与第一个按钮BITMAP保持一致,图标将会将跟随按钮切换;否则保持不变
    AS_POPUP_MENU	//既显示图标又显示文本,PALETTE:只显示图标
    	BUTTON CN_CB1_BTN
    BEGIN_DROPDOWN xxx1
    DROPDOWN_STYLE AS_POPUP_MENU
    	BUTTON CN_CB2_BTN
    	
    	BUTTON CN_CB3_BTN
    END_DROPDOWN
    
  • 4、Cascade工具条(.csb):
    TITLE 合肥工业大学CASCADE
    VERSION 170
    BITMAP block	//与Drop-down不同,该图标保持不变
    	BUTTON CN_CB1_BTN
    	BUTTON CN_CB2_BTN
    BEGIN_CASCADE xxx2
    	BUTTON CN_CB3_BTN
    END_DROPDOWN
    
  • 5、Gallery工具条(.gly)
    TITLE 合肥工业大学GALLERY
    VERSION 170
    CONTEXT_TITLE GALLERY样式	//定制中名称
    BITMAP	model 				//更多模式下的图标,即COLLAPSED TRUE模式下的图标
    
    COLUMN_IN_RIBBON 2	//列
    COLUMN_IN_POPUP 3	//popup窗口列
    GALLERY_STYLE MEDIUM_IMAGE_AND_TEXT	//样式
    
    NUMBER_OF_ITEMS 2		//最近使用显示个数
    BEGIN_RECENTLY_USED
    END_RECENTLY_USED
    
    BEGIN_GALLERY	xxxgly1
    LABEL 自定义gly1			//popup窗口名称
    	BUTTON CN_CB1_BTN
    	BUTTON CN_CB2_BTN
    	BUTTON CN_CB3_BTN
    END_GALLERY
    
    BEGIN_GALLERY	xxxgly2
    LABEL 自定义gly2			//popup窗口名称
    	BUTTON CN_CB1_BTN
    	BUTTON CN_CB2_BTN
    	BUTTON CN_CB3_BTN
    END_GALLERY
    ***************************************************
    //.rtb文档
    ...
    GROUP test_ribbon_model.gly
    COLLAPSED TRUE		//将该工具条集成到一个按钮下
    
  • 6、Group工具条(.grb)
    	TITLE 合肥工业大学GROUP
    	VERSION 170
    
    		BUTTON CN_CB1_BTN
    		
    		BUTTON CN_CB2_BTN
    		RIBBON_STYLE SMALL_IMAGE_AND_TEXT
    		
    		BUTTON CN_CB3_BTN
    		RIBBON_STYLE SMALL_IMAGE_AND_TEXT
    		
    	GROUP test_ribbon_model.gly
    	GROUP test_ribbon_model.gly
    	COLLAPSED TRUE
    ***************************************************
    	//.rtb文档
    	...
    	GROUP test_ribbon_group.grb
    	COLLAPSED TRUE		//将该工具条集成到一个按钮下
    
  • 7、工具条(.abr):一般直接在系统文件中通过"GROUP 文件名"添加即可;
  • 8、分模块显示:application文件夹->profiles文件夹下以模块控件ID名称创建文件夹,把程序放置到相应文件夹下即可。
市面上关于UG二次开发的教程很少 这个是最近发布的教程 现在提供光盘资料下载 以下为图书目录: 第1章 参数化特征造型基础  1.1 绪论  1.2 参数化特征造型的基本概念   1.2.1 几何模型类型   1.2.2 参数化特征模型  1.3 曲面造型的基本概念   1.3.1 自由曲线   1.3.2 自由曲线的常用术语   1.3.3 自由曲面   1.3.4 自由曲面特征中常用术语 第2章 VC编程环境简介  2.1 Visual C++6.0的开发环境   2.1.1 VC++6.0简介   2.1.2 VC6项目的建立   2.1.3 VC6项目环境的设置   2.1.4 VC6程序的编译   2.1.5 VC6程序的运行   2.1.6 VC6程序的调试 2.2 VC6编程举例   2.2.1 建立程序框架   2.2.2 编写代码   2.2.3 调试和排错   2.2.4 发布 第3章 UG/Open API编程框架  3.1 UG API基础   3.1.1 UG API基本概念   3.1.2 API帮助文件   3.1.3 开发语言  3.2 内部和外部UF的使用方法   3.2.1 User Exit的概念   3.2.2 ufusr入口   3.2.3 ufsta入口   3.2.4 外部模式的功能  3.3 UF中常见的数据类型   3.3.1 UF函数命名规则   3.3.2 UF中数据结构标识   3.3.3 错误号 3.4 UG系统中对象的基本概念及区别   3.4.1 对象   3.4.2 Object、Body和Feature的区别   3.4.3 UF的License   3.4.4 坐标转换 第4章 特征设计 4.1 UG特征的分类   4.1.1 UG特征的分类   4.1.2 特征的常用操作 4.2 体素特征的创建   4.2.1 创建块   4.2.2 块特征举例 4.3 扫描特征的创建   4.3.1 拉伸特征的创建   4.3.2 回转特征的创建 4.4 成型特征的创建   4.4.1 孔特征的创建   4.4.2 创建孔特征举例 4.5 引用特征的创建   4.5.1 线性阵列特征的创建   4.5.2 镜像特征的创建 4.6 草图特征及其操作   4.6.1 创建草图   4.6.2 初始化草图   4.6.3 添加尺寸   4.6.4 添加尺寸约束   4.6.5 添加几何约束   4.6.6 添加对象   4.6.7 查询表达式   4.6.8 查询几何约束   4.6.9 更新草图   4.6.10 退出草图   4.6.11 程序实例 4.7 基准特征及其操作   4.7.1 创建固定基准面   4.7.2 创建固定基准轴   4.7.3 创建关联基准面   …… 第5章 自由形状特征 第6章 UG/Open API 菜单和界面制作 第7章 装配操作 第8章 文件操作 第9章 属性操作 第10章 表达式 第11章 二维工程图 第12章 KF开发 参考文献
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不敲代码de小猿同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值