【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 < ...
随机推荐
- Day003 巧妙验证短路运算
&&的短路运算 条件1&&条件2...&&条件n,程序会先判断条件1,如果条件1为false,则不判断后面的条件,直接返回false 怎么判断程序到底有 ...
- 【报错】org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'webSocketHandlerMapping' defined in class path resource
环境:maven+eclipse+jdk1.8 [tomcat使用的是maven自带的插件,实质原因就是出在tomcat版本问题] 背景:在进行SSM集成WebSocket的时候,项目启动报org.s ...
- 一个入门级CTF的Reverse
这道题是XCTF攻防世界上的一道新手入门题目! 年前刚接触逆向时IDA,OD了这些工具都不会用(负基础),当时做这些题的时候觉得挺难(主要是缺少练习,没思路无从下手).现在回头再来看这些题目感觉确实是 ...
- QFNU 10-30 training
7-9 特立独行的幸福 题意:见PTA 思路:其实就是遍历进行查找,利用递归函数,为了解决是特立独行,还要用一个全局数组进行存储所有满足条件的数进行去重标记,最后在输出的时候进行判断是否是只读取过一次 ...
- 最新.NET Core面试题汇总
这几天给.neter们整理了26道.NET Core面试题,初衷也很简单,就是希望在面试的时候能够帮助到大家,减轻大家的负担和节省时间.对于没有跳槽打算的也可以复习一下相关知识点,就当是查缺补漏! 对 ...
- istio部署问题Q&A
端口绑定无权限 创建Gateway,提示绑定端口无权限. 2020-12-27T12:25:30.974288Z warning envoy config gRPC config for type.g ...
- centos下查看网卡,主板,CPU,显卡,硬盘型号等硬件信息
centos下查看网卡,主板,CPU,显卡,硬盘型号等硬件信息 rose_willow rose_willow 发布于 2016/06/16 11:32 字数 902 阅读 405 收藏 0 点赞 0 ...
- Docker Swarm(十)Portainer 集群可视化管理
前言 搭建好我们的容器编排集群,那我们总不能日常的时候也在命令行进行操作,所以我们需要使用到一些可视化的工具,Docker图形化管理提供了很多工具,有Portainer.Docker UI.Shipy ...
- 009.kubernets的调度系统之污点和容忍
Taints和Tolerations(污点和容忍) Taint需要与Toleration配合使用,让pod避开那些不合适的node.在node上设置一个或多个Taint后,除非pod明确声明能够容忍这 ...
- 记一次MySQL(5.7版本)数据库的主从同步和备份
我遇到的问题 我先后在BAT三大云服务器商购买了学生机,配置如下 百度云2核/4G 阿里云1核/2G 腾讯云1核/2G 我的解决方案 由于我不知道百度云的续费规则,导致买了2核/4G的服务器之后以为像 ...