NX二次开发-通过点击按钮来控制显示工具条
NX9+VS2012
1.打开D:\Program Files\Siemens\NX 9.0\UGII\menus\ug_main.men
找到装配和PMI,在中间加上一段
TOGGLE_BUTTON LSYTOOLS
LABEL 自定义工具箱
BITMAP cam_new_tool
ACTIONS LSYTOOLS

2.打开D:\Program Files\Siemens\NX 9.0\UGII\menus\profiles\All\rbn_application.rtb
找到建模,在前面加上一段
BUTTON LSYTOOLS

在D:\Program Files\Siemens\NX 9.0里新建一个文件夹LSYTOOLS
在LSYTOOLS创建两个文件夹Application和Startup

在Startup里创建菜单文件LSYTOOLS.men

写入内容如下
VERSION
EDIT UG_GATEWAY_MAIN_MENUBAR AFTER UG_HELP
CASCADE_BUTTON LSYTools
LABEL 自定义工具箱
END_OF_AFTER MENU LSYTools BUTTON LSYDrawTools
LABEL 图纸工具
BITMAP border_zones
ACTIONS LSYDrawTools BUTTON LSYStlPdfTools
LABEL 导出STL PDF工具
BITMAP true_shade
ACTIONS LSYStlPdfTools BUTTON LSYExcelTools
LABEL 导入EXCEL创建曲线
BITMAP spreadsheet
ACTIONS Test1 BUTTON LSYUpdateDrawViewTools
LABEL 切换到工程图工具
BITMAP appl_drafting
ACTIONS Update_Draw_View BUTTON LSYWrite_Dim_NameTools
LABEL 工程图改尺寸名字工具
BITMAP edit_text
ACTIONS Write_Dim_Name BUTTON OpenWenJianJia
LABEL 打开当前part文件夹
BITMAP fileopen
ACTIONS OpenWenJianJia BUTTON CycleSetExp
LABEL 批量修改表达式
BITMAP equals
ACTIONS CycleSetExp BUTTON OpenTxtWriteExp
LABEL 记事本编辑if/else表达式
BITMAP rename
ACTIONS OpenTxtWriteExp BUTTON CreateExpGroup
LABEL 创建表达式组
BITMAP styler_group_box
ACTIONS CreateExpGroup BUTTON CreateFeatureGroup
LABEL 创建特征组
BITMAP folder_new
ACTIONS CreateFeatureGroup BUTTON CycleDeleteTuKuang
LABEL 批量删除图框
BITMAP delete
ACTIONS CycleDeleteTuKuang BUTTON CreateHelp
LABEL 自定义1
BITMAP styler_string
ACTIONS CreateHelp BUTTON CreateHelpRedBlock
LABEL 自定义2
BITMAP curve_section
ACTIONS CreateHelpRedBlock END_OF_MENU
在Application里创建LSYTOOLS.rtb功能区工具栏,写入内容如下。

TITLE 自定义工具箱
VERSION BEGIN_GROUP 图纸工具
BUTTON LSYDrawTools
BUTTON LSYUpdateDrawViewTools
RIBBON_STYLE MEDIUM_IMAGE_AND_TEXT
BUTTON LSYWrite_Dim_NameTools
RIBBON_STYLE MEDIUM_IMAGE_AND_TEXT
BUTTON CycleDeleteTuKuang
RIBBON_STYLE MEDIUM_IMAGE_AND_TEXT
END_GROUP BEGIN_GROUP 表达式工具
BUTTON CycleSetExp
BUTTON CreateExpGroup
RIBBON_STYLE MEDIUM_IMAGE_AND_TEXT
BUTTON OpenTxtWriteExp
RIBBON_STYLE MEDIUM_IMAGE_AND_TEXT
END_GROUP BEGIN_GROUP 帮助图工具
BUTTON CreateHelp
BUTTON CreateHelpRedBlock
END_GROUP BEGIN_GROUP 建模工具
BUTTON OpenWenJianJia
BUTTON CreateFeatureGroup
RIBBON_STYLE MEDIUM_IMAGE_AND_TEXT
BUTTON LSYStlPdfTools
RIBBON_STYLE MEDIUM_IMAGE_AND_TEXT
BUTTON LSYExcelTools
RIBBON_STYLE MEDIUM_IMAGE_AND_TEXT
END_GROUP
在创建LSYTOOLS.tbr经典工具栏,写入内容如下。
TITLE 自定义工具箱
VERSION
BUTTON LSYDrawTools
BUTTON LSYStlPdfTools
BUTTON LSYExcelTools
BUTTON LSYUpdateDrawViewTools
BUTTON LSYWrite_Dim_NameTools
BUTTON OpenWenJianJia
BUTTON CycleSetExp
BUTTON OpenTxtWriteExp
BUTTON CreateExpGroup
BUTTON CreateFeatureGroup
BUTTON CycleDeleteTuKuang
BUTTON CreateHelp
设置环境变量
把D:\Program Files\Siemens\NX 9.0\LSYTOOLS,路径复制到D:\Program Files\Siemens\NX 9.0\UGII\menus\custom_dirs.dat里,
打开粘贴到最后一行

下面去VS里写代码
#include <uf.h>
#include <uf_ui.h>
#include <uf_mb.h> UF_initialize(); static UF_UI_toolbar_id_t DEMP_tbr_id = NULL;
static UF_UI_ribbon_id_t ribbon_id = NULL; int demoToggleBtn_id;
UF_MB_state_t demo_btn_state;
UF_MB_ask_button_id("LSYTOOLS", &demoToggleBtn_id);//获取按钮的ID
UF_MB_ask_toggle_state(demoToggleBtn_id, &demo_btn_state);//获取切换按钮的当前状态
if (UF_MB_ON == demo_btn_state)
{
if (DEMP_tbr_id == NULL)
{
UF_UI_create_toolbar("LSYTOOLS.tbr", , &DEMP_tbr_id);//创建经典工具栏
UF_UI_set_toolbar_vis(DEMP_tbr_id, );//设置经典工具栏的可见性 UF_UI_create_ribbon("LSYTOOLS.rtb", , &ribbon_id);//创建功能区工具栏
UF_UI_set_ribbon_vis(ribbon_id, );//设置功能区工具栏的可见性 }
}
else
{
UF_UI_remove_toolbar(DEMP_tbr_id);//删除经典工具栏
UF_UI_remove_ribbon(ribbon_id);//删除功能区工具栏
DEMP_tbr_id = NULL;
ribbon_id = NULL;
} UF_terminate(); Caesar卢尚宇
2019年7月15日
把编译出来的DLL放到D:\Program Files\Siemens\NX 9.0\LSYTOOLS\Application里,名字改为LSYTOOLS.dll

打开UG

NX二次开发-通过点击按钮来控制显示工具条的更多相关文章
- NX二次开发-UFUN获取工程图视图边界线是否显示UF_DRAW_ask_border_display
#include <uf.h> #include <uf_draw.h> #include <uf_ui.h> UF_initialize(); logical b ...
- NX二次开发-NX+VS写代码设断点调试技巧
在做NX二次开发的时候写完代码,编译可以通过,但是执行的时候却没有反应,或者得到的结果不对,说明肯定有地方传值出错了.我在查找代码错误的时候有几种方法:1.uc1601打印函数输入和输出的值看对不对. ...
- NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))
NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...
- NX二次开发-基于MFC界面对话框与NX交互的开发
打开VS2013 点击新建,选择MFC DLL 点击确定 点下一步 什么都不改,直接点完成 进来之后先编译一下,看是否编译成功 打开项目属性,更改这几处 $(UGII_BASE_DIR)\ugopen ...
- NX二次开发-BlockUI对话框嵌套MFC对话框制作进度条
半年前在一些QQ群看到有大神NX二次开发做出了进度条,那个时候我还不会弄,也不知道怎么弄得,后来断断续续得研究了一下,直到今天我把它做出来了.内心还是很喜悦的!回想自己这两年当初从没公司肯给我做NX二 ...
- NX二次开发-UDO用户自定义对象(UFUN)【持续完善】
每当提起UDO总是会让我想起大专毕业那会失业找工作,后来有个宝贵机会去了软件公司上班,拿到了我人生中的第一个NX二次开发项目,一个关于测量汽车前后左右摄像头的项目.当时那个项目就用到了UDO,对于只看 ...
- C# NX二次开发环境搭建
在网上看到一篇C#二次开发环境搭建的文章:NX二次开发-使用NXOPEN C#手工搭建开发环境配置 ,写得非常好.我按照文章操作,过程中遇到几个问题,把问题分享给大家,希望对各位有帮助. 注意三点: ...
- 【NX二次开发】Block UI 指定点
属性说明 属性 类型 描述 常规 BlockID String 控件ID Enable Logical 是否可操作 Group ...
- 【NX二次开发】Block UI 指定矢量
属性说明 属性 类型 描述 常规 BlockID String 控件ID Enable Logical 是否可操作 Group ...
随机推荐
- docker部署coredns
示例: [root@corends coredns]# cd /home/coredns/ [root@corends coredns]# ls -al total drwxr-xr-x root r ...
- spring boot 与微服务之间的关系
Spring Boot 和微服务没关系, Java 微服务治理框架普遍用的是 Spring Cloud. Spring Boot 产生的背景,是开发人员对 Spring 框架越来越复杂的配置吐槽越来越 ...
- K8S集群安装部署
K8S集群安装部署 参考地址:https://www.cnblogs.com/xkops/p/6169034.html 1. 确保系统已经安装epel-release源 # yum -y inst ...
- C之输入输出函数(2) -- gets()
https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_71/rtref/gets.htm#gets #include <stdio.h ...
- React 组件间传值
壹 .了解React传值的数据 一. 创建组件的方法 一 . 1 通过function声明的组件特点是: 1)function创建的组件是没有state属性,而state属性决定它是不是有生命周期 ...
- maven命令行创建项目问题
今天在命令行下创建maven项目,使用的是create命令,但是一直失败,网上查找原因说archetype:create命令已经过期,需要使用 archetype:generate 来进行代替 加上了 ...
- tarjan求强联通分量
tarjan求强联通分量 变量含义说明: pre[i]:i点的被访问的时钟编号,被分配后保持不变 low[i]:i点能访问的最先的点的时钟编号,随子节点改变 scc_no[i]:i点所在的强联通分量的 ...
- C++ STL(一)介绍及string
STL: C++标准模板库的简称,它是C++的一部份.标准C++库的所有的标识符都是在一个名为std的命名空间中定义的 在使用STL中相关模板时,需要包含相关头文件,然后using namespace ...
- [NOIP模拟测试11] 题解
A.string 和河北的一道省选题很像.考场上写的暴力桶排,正解其实就是优化一下这个思路. 开线段树维护字符串中每个字母出现的次数.对于每条询问,区间查询.区间赋值维护即可. 另外,本题卡常严重,正 ...
- Java-Class-FC:java.util.Optional
ylbtech-Java-Class-FC:java.util.Optional 1.返回顶部 2.返回顶部 1.1. import java.util.Optional; 1.2.1. @Api ...