原始图:
效果图:
对于习惯看标题栏来找文件,喜欢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尾部 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
各位有好的方式也可以提供