原始圖:
效果圖:
對於習慣看標題欄來找文件,喜歡CAD那種風格。NX本身是不具備這個顯示。
操作如下:
NX版本:10.0
博客園資料:https://www.cnblogs.com/zhouhbing/p/4633754.html
第一步:新建一個項目入口用“ufsta”即:隨軟件啟動
1 //頭文件 2 #include <atlstr.h>//2020-04-18替換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
各位有好的方式也可以提供