【NX二次开发】开发好几年,还只会用ufusr?其他用户出口函数介绍。 精华帖

王牌飞行员 1月前 184 1

用户出口(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:打开 ".....\Siemens\NX 12.0\UGII\ugii_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 PartUSER_RETRIEVEufget
New PartUSER_CREATEufcre
Save PartUSER_FILEufput
Save Part AsUSER_SAVEASufsvas
Import PartUSER_MERGEufmrg
Execute GRIP ProgramUSER_GRIPufgrp
Add Existing PartUSER_RCOMPufrcp
Export PartUSER_FCOMPuffcp
Component Where-usedUSER_WHERE_USEDufusd
Plot FileUSER_PLOTufplt
2D Analysis Using CurvesUSER_AREAPROPCRVuf2da
User Defined SymbolsUSER_UDSYMBOLufuds
Open CLSFUSER_CLS_OPENufclso
Save CLSFUSER_CLS_SAVEufclss
Rename CLSFUSER_CLS_RENAMEufclsr
Generate CLFUSER_CL_GENufclg
Postprocess CLSFUSER_POSTufpost
Create ComponentUSER_CCOMPufccp
Change Displayed PartUSER_CDISPufcdp
Change Work PartUSER_CWORKufcwp
Remove ComponentUSER_DCOMPufdcp
Reposition ComponentUSER_MCOMPufmcp
Substitute Component OutUSER_SCOMP1ufscpo
Substitute Component InUSER_SCOMP2ufscpi
Open SpreadsheetUSER_SPRD_OPNufspop
Close SpreadsheetUSER_SPRD_CLOufspcl
Update SpreadsheetUSER_SPRD_UPDufspup
Finish Updating SpreadsheetUSER_SPRD_UPFufspuf
Replace Reference SetUSER_RRSETufrrs
Rename ComponentUSER_NCOMPufncp
NX StartupUSER_STARTUPufsta
Access Genius Library Management SystemUSER_GENIUSufgen
Execute DebUG GRIPUSER_GRIPDEBUGufgrpd
Execute User FunctionUSER_UFUNCufufun
Initialize new operationUSER_CREATE_OPERufnopr
CAM StartupUSER_CAM_STARTUPufcams

取消

打赏本帖作者:王牌飞行员

扫码支持
建议打赏金额( 1 - 10 )元之间
将直接存入发帖者微信或支付宝账户

打开微信或支付宝扫一扫,即可进行打赏哦

0

承接UG NX二次开发、功能定制、毕业设计、疑难解决、远程培训,胡君QQ:85585969
最新回复 (1)
  • tianmu1972 1月前
    1

    路过,顶下楼主!!!

请登录后发表新帖