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


            用户出口(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
  • 相关阅读:
    利用apktool反编译apk
    CF459E Pashmak and Graph (Dag dp)
    CF919D Substring (dag dp)
    BZOJ 1398: Vijos1382寻找主人 Necklace(最小表示法)
    LUOGU P3048 [USACO12FEB]牛的IDCow IDs(组合数)
    LUOGU P2290 [HNOI2004]树的计数(组合数,prufer序)
    小球放盒子 (组合数总结)
    LUOGU P2294 [HNOI2005]狡猾的商人(差分约束)
    LUOGU P4159 [SCOI2009]迷路(矩阵乘法)
    bzoj 1196: [HNOI2006]公路修建问题(二分+贪心)
  • 原文地址:https://www.cnblogs.com/KMould/p/14101787.html
Copyright © 2020-2023  润新知