【NX二次开发】用户出口函数介绍
用户出口(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二次开发】用户出口函数介绍的更多相关文章
- NX二次开发-UFUN发射线函数UF_MODL_trace_a_ray的用法
今天是国庆节,放假休息懒得动,没有出去玩,在家研究一下发射线函数UF_MODL_trace_a_ray.小弟以前在软件公司混的时候,当时我做的那个项目就用到了UF_MODL_trace_a_ray,当 ...
- NX二次开发-UFUN拉伸函数UF_MODL_create_extruded
NX9+VS2012 //NX二次开发中常用拉伸函数为UF_MODL_create_extruded2,但是此函数不能拉伸片体, //想要拉伸片体用函数UF_MODL_create_extruded. ...
- NX二次开发-UFUN拉伸函数UF_MODL_create_extruded2
NX9+VS2012 //NX二次开发中常用拉伸函数为UF_MODL_create_extruded2,但是此函数不能拉伸片体, //想要拉伸片体用函数UF_MODL_create_extruded. ...
- 【NX二次开发】开发好几年,还只会用ufusr?其他用户出口函数介绍
用户出口(User Exit)是NX Open 中的一个重要概念.NX在运行过程中某些特定的位置存在规定的出口,当进程执行到这些出口时,NX会自动检查用户是否在此处已定义了指向内部程序位置的环境变量: ...
- 【NX二次开发】UF_CSYS_map_point()函数,绝对坐标,工作坐标,部件之间坐标转换。
UF_CSYS_map_point用来变换点的坐标,比较简单且实用.例如工作坐标系与绝对坐标系转换,一个部件的坐标与另一个部件坐标系之间的转换.下面的例子是在三个坐标下创建三个点相对坐标为{10,50 ...
- NX二次开发-UFUN计时函数UF_begin_timer
NX9+VS2012 #include <uf.h> #include <uf_modl.h> UF_initialize(); //计时开始 UF_timer_t Timer ...
- 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 //计时开 ...
- NX二次开发-UFUN遍历函数UF_OBJ_cycle_objs_in_part
NX11+VS2013 #include <uf.h> #include <uf_obj.h> #include <uf_modl.h> #include < ...
- NX二次开发-UFUN遍历函数UF_OBJ_cycle_all
NX11+VS2013 #include <uf.h> #include <uf_obj.h> #include <uf_modl.h> #include < ...
随机推荐
- 【python】Leetcode每日一题-森林中的兔子
[python]Leetcode每日一题-森林中的兔子 [题目描述] 森林中,每个兔子都有颜色.其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色.我们将这些回答放在 answers ...
- 手机访问电脑本地localhost网页
项目需要用手机访问电脑本地网页,从而可以调试项目,对代码的理解的快一点 重点 确保手机和电脑在同一个局域网 可以通过手机开热点电脑连接或者电脑开便携式热点手机连接 确保电脑的防火墙是关闭的 打开apa ...
- linux中定时运行php(每分钟执行一次为例)
注:使用Crontab定时执行php脚本文件 1. 安装crontab yum install crontabs 说明:/sbin/service crond start //启动服务/sbin/se ...
- C# 通过DataSet 获取SQL 存储过程返回的多个结果集(tables)
测试数据:Northwind 链接地址: https://files.cnblogs.com/files/louiszh/NorthWind.zip 首先创建一个测试存储过程: IF EXISTS ( ...
- mitmproxy 获取请求响应数据
比较好的一个介绍是:https://blog.wolfogre.com/posts/usage-of-mitmproxy/ mitproxy 获取请求响应数据的代码如下: # -*- coding: ...
- [刷题] PTA 03-树2 List Leaves
程序: 1 #include <stdio.h> 2 #include <queue> 3 #define MaxTree 20 4 #define Null -1 5 usi ...
- [Python] 条件 & 循环
条件语句 不加 () 结尾加 : elif else 和 if 成对使用 省略判断条件 String:空字符串为False,其余为True int:0为False,其余为True Bool:True为 ...
- [bug] Python Anoconda3 安装完成后开始菜单不显示
版本问题,需更新 win+R打开cmd,敲入命令: conda update menuinst conda install -f console_shortcut ipython ipython-no ...
- 搭建LAMP环境部署opensns微博网站
搭建LAMP环境部署opensns微博网站 实验环境 centos7 ip: 192.168.121.17 一.关闭防火墙和selinux [root@localhost ~]# systemctl ...
- 用urllib库几行代码实现最简单爬虫
""" 使用urllib.request()请求一个网页内容,并且把内容打印出来. """ from urllib import reque ...