NX二次开发-UI:NX标题增加文件路径显示

被刻印的时光 ゝ 提交于 2020-04-18 19:51:31

原始图:

 

 

 

 效果图:

 

 

 对于习惯看标题栏来找文件,喜欢CAD那种风格。NX本身是不具备这个显示。

操作如下:

NX版本:10.0

 博客园资料:https://www.cnblogs.com/zhouhbing/p/4633754.html

第一步:新建一个项目入口用“ufsta”即:随软件启动

1 //头文件
2 #include <Windows.h>
3 #include <uf_ui.h>
4 #include <uf_assem.h>
5 #include <uf_part.h>

第二步:函数和回调

1 void CALLBACK TimerProc(HWND hWnd, UINT nMsg, UINT nTimerid, DWORD dwTime)//添加回调函数
2 
3 SetTimer(NULL, NULL, 1000, (TIMERPROC)TimerProc);//1秒触发一次

第三步:放入程序中

 1 void CALLBACK TimerProc(HWND hWnd, UINT nMsg, UINT nTimerid, DWORD dwTime)
 2 {
 3     char prt0[132] = ""; //当前部件路径
 4     UF_PART_ask_part_name(UF_ASSEM_ask_work_part(), prt0);  //获得工作部件全路径(工作部件考虑到装配)
 5 
 6     char fileDir[MAX_FSPEC_BUFSIZE];
 7     char fileName[UF_CFI_MAX_FILE_NAME_BUFSIZE];
 8     const char *filePath = prt0;
 9     uc4576(filePath, 2, fileDir, fileName);//分割路径和部件名称
10 
11     UF_system_info_t NxInfo;
12     UF_ask_system_info(&NxInfo);//系统信息
13 
14     char str[256] = "";//使用代码获取当前版本会更好
15     char app[256] = "";//模块变量
16 
17     strcat(str, NxInfo.program_name);//NxInfo.program_name(NX版本)加在str尾部
18 
19     int  module_id;
20     UF_ask_application_module(&module_id);//获取当前模块
21 
22     if (module_id == UF_APP_MODELING)
23         sprintf(app, " - 建模 - ");
24     else if (module_id == UF_APP_DRAFTING)
25         sprintf(app, " - 制图 - ");
26     else if (module_id == UF_APP_CAM)
27         sprintf(app, " - 加工 - ");
28     else if (module_id == UF_APP_GATEWAY)
29         sprintf(app, " - 基本环境 - ");
30     else if (module_id == UF_APP_NONE)
31         sprintf(app, "- [没有部件] ");
32     else
33         sprintf(app, " ");
34 
35     strcat(str, app);//app加在str尾部
36     strcat(str, fileDir);//fileDir加在str尾部

//sprintf(str, "%s%s%s", NxInfo.program_name, app, fileDir)更方便


37 38 SetWindowText((HWND)UF_UI_get_default_parent(), str);//设置NX标题 39 } 40 41 void 类名::do_it() 42 { 43 UINT_PTR iTimerID;//定义一个ID,后面好查找 44 iTimerID = SetTimer(NULL, NULL, 1000, (TIMERPROC)TimerProc);//1秒触发一次 46 }

第四步:摧毁定时器(保证代码的完整性,有始有终,可不要),添加到NX退出回调中:ufusr_cleanup或者ufusr_ask_unload(没试过)

1 KillTimer(NULL, iTimerID);//摧毁定时器

第五步:生成的dll文件放在插件(可运行)的“Startup”或者“UDO”,重启NX

 

这一种方式个人感觉不是很好,一直在运行

另一种方式是:NX自带的入口“ufcwp”即:变更工作部件,就是不完整,不是每个位置都会显示

其他入口:

 1 描述                                        环境变量            入口函数
 2 Open Part                                    USER_RETRIEVE        ufget
 3 New Part                                    USER_CREATE            ufcre
 4 Save Part                                    USER_FILE            ufput
 5 Save Part As                                USER_SAVEAS            ufsvas
 6 Import Part                                    USER_MERGE            ufmrg
 7 Execute GRIP Program                        USER_GRIP            ufgrp
 8 Add Existing Part                            USER_RCOMP            ufrcp
 9 Export Part                                    USER_FCOMP            uffcp
10 Component Where-used                        USER_WHERE_USED        ufusd
11 Plot File                                    USER_PLOT            ufplt
12 2D Analysis Using Curves                    USER_AREAPROPCRV    uf2da
13 User Defined Symbols                        USER_UDSYMBOL        ufuds
14 Open CLSF                                    USER_CLS_OPEN        ufclso
15 Save CLSF                                    USER_CLS_SAVE        ufclss
16 Rename CLSF                                    USER_CLS_RENAME        ufclsr
17 Generate CLF                                USER_CL_GEN            ufclg
18 Postprocess CLSF                            USER_POST            ufpost
19 Create Component                            USER_CCOMP            ufccp
20 Change Displayed Part                        USER_CDISP            ufcdp
21 Change Work Part                            USER_CWORK            ufcwp
22 Remove Component                            USER_DCOMP            ufdcp
23 Reposition Component                        USER_MCOMP            ufmcp
24 Substitute Component Out                    USER_SCOMP1            ufscpo
25 Substitute Component In                        USER_SCOMP2            ufscpi
26 Open Spreadsheet                            USER_SPRD_OPN        ufspop
27 Close Spreadsheet                            USER_SPRD_CLO        ufspcl
28 Update Spreadsheet                            USER_SPRD_UPD        ufspup
29 Finish Updating Spreadsheet                    USER_SPRD_UPF        ufspuf
30 Replace Reference Set                        USER_RRSET            ufrrs
31 Rename Component                            USER_NCOMP            ufncp
32 NX Startup                                    USER_STARTUP        ufsta
33 Access Genius Library Management System        USER_GENIUS            ufgen
34 Execute DebUG GRIP                            USER_GRIPDEBUG        ufgrpd
35 Execute User Function                        USER_UFUNC            ufufun
36 Initialize new operation                    USER_CREATE_OPER    ufnopr
37 CAM Startup                                    USER_CAM_STARTUP    ufcams

各位有好的方式也可以提供

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!