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二次开发-通过点击按钮来控制显示工具条的更多相关文章

  1. NX二次开发-UFUN获取工程图视图边界线是否显示UF_DRAW_ask_border_display

    #include <uf.h> #include <uf_draw.h> #include <uf_ui.h> UF_initialize(); logical b ...

  2. NX二次开发-NX+VS写代码设断点调试技巧

    在做NX二次开发的时候写完代码,编译可以通过,但是执行的时候却没有反应,或者得到的结果不对,说明肯定有地方传值出错了.我在查找代码错误的时候有几种方法:1.uc1601打印函数输入和输出的值看对不对. ...

  3. NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))

    NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...

  4. NX二次开发-基于MFC界面对话框与NX交互的开发

    打开VS2013 点击新建,选择MFC DLL 点击确定 点下一步 什么都不改,直接点完成 进来之后先编译一下,看是否编译成功 打开项目属性,更改这几处 $(UGII_BASE_DIR)\ugopen ...

  5. NX二次开发-BlockUI对话框嵌套MFC对话框制作进度条

    半年前在一些QQ群看到有大神NX二次开发做出了进度条,那个时候我还不会弄,也不知道怎么弄得,后来断断续续得研究了一下,直到今天我把它做出来了.内心还是很喜悦的!回想自己这两年当初从没公司肯给我做NX二 ...

  6. NX二次开发-UDO用户自定义对象(UFUN)【持续完善】

    每当提起UDO总是会让我想起大专毕业那会失业找工作,后来有个宝贵机会去了软件公司上班,拿到了我人生中的第一个NX二次开发项目,一个关于测量汽车前后左右摄像头的项目.当时那个项目就用到了UDO,对于只看 ...

  7. C# NX二次开发环境搭建

    在网上看到一篇C#二次开发环境搭建的文章:NX二次开发-使用NXOPEN C#手工搭建开发环境配置 ,写得非常好.我按照文章操作,过程中遇到几个问题,把问题分享给大家,希望对各位有帮助. 注意三点: ...

  8. 【NX二次开发】Block UI 指定点

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

  9. 【NX二次开发】Block UI 指定矢量

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

随机推荐

  1. v-for 循环 绑定对象 和数组

    <!--v-for 迭代数组--> <div id="app11"> <div v-for="info in infos"> ...

  2. 导出EXCEL(带数据)

    /* * 导出EXCEL * @param req * @param resp * @param model * @param info * @return */ @RequestMapping(va ...

  3. Android中的Handler,Looper,Message机制

    Android的消息处理有三个核心类:Looper,Handler和Message.其实还有一个Message Queue(消息队列),但是MQ被封装到Looper里面了,我们不会直接与MQ打交道,因 ...

  4. js文字转语音(speechSynthesis)

    环境: windows 官网网址: https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis 基础使用: var msg = n ...

  5. Linux 线程Demo

    #include <stdio.h> #include <pthread.h> struct char_print_params { char character; int c ...

  6. Ubuntu下设置静态网址

    百度上找的图形界面下设置方式: 因为我这里的ubuntu版本是14.10版本 所以我先点击[系统设置],它位置在桌面左侧的菜单栏后面位置. 在系统设置页面,找到[硬件]选项里面的[网络]一项 然后再使 ...

  7. 用Nginx搭建CDN服务器方法-开启Nginx缓存与镜像,自建图片服务器

    利用Nginx的proxy_cache搭建缓存服务器一:编译ngx_cache_purge1.Nginx的Proxy_cache是根据Key值md5哈希存储缓存,支持任意的Key,例如你可以根据”域名 ...

  8. C++的模板

    1. 模板形参表 模板形参表,里面可以是typename T/ class T这种形式的,代表里面被泛化的是一种类型: 也可以使用Type value这种形式的,代表里面被泛化的是一个某种类型的值. ...

  9. Spring 学习笔记 数据绑定,校验,BeanWrapper 与属性编辑器

    Spring 数据绑定,校验,BeanWrapper,与属性编辑器 Data Binding 数据绑定(Data binding)非常有用,它可以动态把用户输入与应用程序的域模型(或者你用于处理用户输 ...

  10. Django框架(二)—— 基本配置:app注册、模板配置、静态文件配置、数据库连接配置post和get

    目录 app注册.模板配置.静态文件配置.数据库连接配置post和get 一.app 二.模板配置 三.静态文件配置 四.数据库连接配置 五.get请求和post请求 六.新手三件套 七.登录功能案例 ...