用户出口(User Exit)是NX Open 中的一个重要概念。NX在运行过程中某些特定的位置存在规定的出口,当进程执行到这些出口时,NX会自动检查用户是否在此处已定义了指向内部程序位置的环境变量:若没有定义,则以NX默认的方式继续运行下去;若已定义,则从该处自动运行用户定制的应用程序。利用不同的User Exit,可使用户定制的应用程序在NX运行到特定点时被自动执行。每个User Exit 都有唯一的出口名称,以便用户在子程序中调用,不同的 User Exit使用不同的出口函数,最常用的 User Exit是ufsta()与 ufusr(),ufsta()是NX菜单启动时的 User Exit,ufusr()是直接激活的 User Exit。通常情况下,User Exit函数的参数和返回值都相同。User Exit函数的定义如下:void 入口函数名(char * param,int * retcode,int rlen);其中param和retcode 是输出参数,rlen 是指参数param 的长度,由NX系统自动处理。
根据最后的附表,可以完成许多调用dll的方法。下面以打开部件时运行dll为例。
第一步 设置环境变量:
方法1(不推荐):右键计算机->属性->高级系统设置->环境变量
方法2:打开 ".....SiemensNX 12.0UGIIugii_env_ug.dat",搜索找到打开部件时运行dll,对应的环境变量USER_RETRIEVE,在ugii_env_ug.dat文件中搜一下(如下图),然后 将#USER_RETRIEVE=; 改为 USER_RETRIEVE=D:WangPaiFeiXingYuan.dll”
第二步 设置出口函数:
打开部件时运行dll需要设置入口为ufget,例子:
#include <uf.h> #include <uf_ui.h> #include <uf_exit.h> extern DllExport void ufget(char *param, int *returnCode, int rlen)//注意入口不是ufusr { UF_initialize(); uc1601("Hello 王牌飞行员!", 1); UF_terminate(); } extern int ufusr_ask_unload(void) { return (UF_UNLOAD_IMMEDIATELY); }
生成的dll放到 上一步环境变量指定的路径。
第三步 打开NX,点击打开部件,测试成功!
附:环境变量、用户出口对应表。
描述 | 环境变量 | 入口函数 |
Open Part | USER_RETRIEVE | ufget |
New Part | USER_CREATE | ufcre |
Save Part | USER_FILE | ufput |
Save Part As | USER_SAVEAS | ufsvas |
Import Part | USER_MERGE | ufmrg |
Execute GRIP Program | USER_GRIP | ufgrp |
Add Existing Part | USER_RCOMP | ufrcp |
Export Part | USER_FCOMP | uffcp |
Component Where-used | USER_WHERE_USED | ufusd |
Plot File | USER_PLOT | ufplt |
2D Analysis Using Curves | USER_AREAPROPCRV | uf2da |
User Defined Symbols | USER_UDSYMBOL | ufuds |
Open CLSF | USER_CLS_OPEN | ufclso |
Save CLSF | USER_CLS_SAVE | ufclss |
Rename CLSF | USER_CLS_RENAME | ufclsr |
Generate CLF | USER_CL_GEN | ufclg |
Postprocess CLSF | USER_POST | ufpost |
Create Component | USER_CCOMP | ufccp |
Change Displayed Part | USER_CDISP | ufcdp |
Change Work Part | USER_CWORK | ufcwp |
Remove Component | USER_DCOMP | ufdcp |
Reposition Component | USER_MCOMP | ufmcp |
Substitute Component Out | USER_SCOMP1 | ufscpo |
Substitute Component In | USER_SCOMP2 | ufscpi |
Open Spreadsheet | USER_SPRD_OPN | ufspop |
Close Spreadsheet | USER_SPRD_CLO | ufspcl |
Update Spreadsheet | USER_SPRD_UPD | ufspup |
Finish Updating Spreadsheet | USER_SPRD_UPF | ufspuf |
Replace Reference Set | USER_RRSET | ufrrs |
Rename Component | USER_NCOMP | ufncp |
NX Startup | USER_STARTUP | ufsta |
Access Genius Library Management System | USER_GENIUS | ufgen |
Execute DebUG GRIP | USER_GRIPDEBUG | ufgrpd |
Execute User Function | USER_UFUNC | ufufun |
Initialize new operation | USER_CREATE_OPER | ufnopr |
CAM Startup | USER_CAM_STARTUP | ufcams |