NX二次開發-UI:NX標題增加文件路徑顯示(另存有Bug,導出Stp/2d等操作有Bug)


原始圖:

 

 

 

 效果圖:

 

 

 對於習慣看標題欄來找文件,喜歡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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM