原始图:
效果图:
对于习惯看标题栏来找文件,喜欢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
各位有好的方式也可以提供
来源:oschina
链接:https://my.oschina.net/u/4370838/blog/3274406