zoukankan      html  css  js  c++  java
  • 【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
  • 相关阅读:
    Atitit.播放系统规划新版本 v4 q18 and 最近版本回顾
    Atitit.播放系统规划新版本 v4 q18 and 最近版本回顾
    atitit.极光消息推送服务器端开发实现推送  jpush v3. 总结o7p
    atitit.极光消息推送服务器端开发实现推送  jpush v3. 总结o7p
    Atitit.文件搜索工具 attilax 总结
    Atitit.文件搜索工具 attilax 总结
    Atitit.软件命名空间  包的命名统计 及命名表(2000个名称) 方案java package
    Atitit.软件命名空间  包的命名统计 及命名表(2000个名称) 方案java package
    Atitit..状态机与词法分析  通用分词器 分词引擎的设计与实现 attilax总结
    Atitit..状态机与词法分析  通用分词器 分词引擎的设计与实现 attilax总结
  • 原文地址:https://www.cnblogs.com/KMould/p/14101787.html
Copyright © 2011-2022 走看看