用户出口(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,例子:

 1 #include <uf.h>
2 #include <uf_ui.h>
3 #include <uf_exit.h>
4 extern DllExport void ufget(char *param, int *returnCode, int rlen)//注意入口不是ufusr
5 {
6 UF_initialize();
7 uc1601("Hello 王牌飞行员!", 1);
8 UF_terminate();
9 }
10
11 extern int ufusr_ask_unload(void)
12 {
13 return (UF_UNLOAD_IMMEDIATELY);
14 }

生成的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

【NX二次开发】用户出口函数介绍的更多相关文章

  1. NX二次开发-UFUN发射线函数UF_MODL_trace_a_ray的用法

    今天是国庆节,放假休息懒得动,没有出去玩,在家研究一下发射线函数UF_MODL_trace_a_ray.小弟以前在软件公司混的时候,当时我做的那个项目就用到了UF_MODL_trace_a_ray,当 ...

  2. NX二次开发-UFUN拉伸函数UF_MODL_create_extruded

    NX9+VS2012 //NX二次开发中常用拉伸函数为UF_MODL_create_extruded2,但是此函数不能拉伸片体, //想要拉伸片体用函数UF_MODL_create_extruded. ...

  3. NX二次开发-UFUN拉伸函数UF_MODL_create_extruded2

    NX9+VS2012 //NX二次开发中常用拉伸函数为UF_MODL_create_extruded2,但是此函数不能拉伸片体, //想要拉伸片体用函数UF_MODL_create_extruded. ...

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

    用户出口(User Exit)是NX Open 中的一个重要概念.NX在运行过程中某些特定的位置存在规定的出口,当进程执行到这些出口时,NX会自动检查用户是否在此处已定义了指向内部程序位置的环境变量: ...

  5. 【NX二次开发】UF_CSYS_map_point()函数,绝对坐标,工作坐标,部件之间坐标转换。

    UF_CSYS_map_point用来变换点的坐标,比较简单且实用.例如工作坐标系与绝对坐标系转换,一个部件的坐标与另一个部件坐标系之间的转换.下面的例子是在三个坐标下创建三个点相对坐标为{10,50 ...

  6. NX二次开发-UFUN计时函数UF_begin_timer

    NX9+VS2012 #include <uf.h> #include <uf_modl.h> UF_initialize(); //计时开始 UF_timer_t Timer ...

  7. NX二次开发-UFUN计时函数UF_end_timer

    1 NX9+VS2012 2 3 #include <uf.h> 4 #include <uf_modl.h> 5 6 7 UF_initialize(); 8 9 //计时开 ...

  8. NX二次开发-UFUN遍历函数UF_OBJ_cycle_objs_in_part

    NX11+VS2013 #include <uf.h> #include <uf_obj.h> #include <uf_modl.h> #include < ...

  9. NX二次开发-UFUN遍历函数UF_OBJ_cycle_all

    NX11+VS2013 #include <uf.h> #include <uf_obj.h> #include <uf_modl.h> #include < ...

随机推荐

  1. VMware Workstation中安装Hyper-V

    1:在虚拟机设置中,CPU属性中勾选"Virtualize Intel VT-x/EPT or AMD-V/RVI"来启用虚拟机的CPU支持虚拟化. 2:2.在虚拟机文件所在目录中 ...

  2. Python中Socket编程server与client简单的合法性认证

    导入python自带的hmac模块对随机生成的位数32字节和自定义token进行加密处理 import osmsg = os.urandom(32)  #随机生成msgOut[4]: b"F ...

  3. Java解析xml文件遇到特殊符号&会出现异常的解决方案

    文/朱季谦 在一次Java解析xml文件的开发过程中,使用SAX解析时,出现了这样一个异常信息: Error on line 60 of document : 对实体 "xxx" ...

  4. MongoDB评论管理

    MongoDB简介 文章评论数据分析 相较于一般数据,文章评论一般有如下特点: 数据量巨大.通常评论量要比帖子.文章大很多 写入操作频繁. 价值较低.一般来说,我们的主要目标还是在帖子(文章)本身. ...

  5. Spring中声明式事务存在的优缺点以及注意事项!

    事务管理在系统开发中是不可缺少的一部分,Spring提供了很好事务管理机制,主要分为编程式事务和声明式事务两种. 关于事务的基础知识,如什么是事务,数据库事务以及Spring事务的ACID.隔离级别. ...

  6. [bug] IDEA Maven 项目 Module 不加粗,无法编译

    参考 https://blog.csdn.net/qq_42479920/article/details/102859244

  7. Zabbix 架构

    Zabbix 架构 1.Zabbix Server Zabblx server是agent程序报告系统可用性.系统完整性和统计数据的核心组件,是所有配置信息.统计信息和操作数据的核心存储器. 2.Za ...

  8. Java 四种内置线程池

    引言 我们之前使用线程的时候都是使用 new Thread 来进行线程的创建,但是这样会有一些问题 每次 new Thread 新建对象性能差 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可 ...

  9. IDEA 查看类图功能(分析源码的利器)

    引言 做过项目开发的童靴,应该会有这样的经历,就是刚进公司领导二话不说直接丢个项目,而且没有任何文档,让熟悉一下,一两周就让上手写代码.打开项目后就看到一堆类源码,完全不知道从何处入手,应该如何分析项 ...

  10. DLL重定向处理

    说明 目前正在做的项目批次功能涉及第三方插件,而第三方插件需依赖4.* 版本的Newtonsoft.Json.dll,由于现有功能已经使用6.*版本的Newtonsoft.Json.dll,故采用了d ...