【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:打开 ".....\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,例子:
#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 |
【NX二次开发】开发好几年,还只会用ufusr?其他用户出口函数介绍的更多相关文章
- 【NX二次开发】用户出口函数介绍
用户出口(User Exit)是NX Open 中的一个重要概念.NX在运行过程中某些特定的位置存在规定的出口,当进程执行到这些出口时,NX会自动检查用户是否在此处已定义了指向内部程序位置的环境变量: ...
- 【NX二次开发】大开眼界,DLL还可以这么调!
NX二次开发应用程序有交互式.批处理和远程3中模式.交互模式的应用程序(.dll)在NX界面环境下运行.dll以动态链接库的方式被加载到NX的进程空间中.dll可以通过下列几种方式执行. 1.直接激活 ...
- NX二次开发-BlockUI对话框嵌套MFC对话框制作进度条
半年前在一些QQ群看到有大神NX二次开发做出了进度条,那个时候我还不会弄,也不知道怎么弄得,后来断断续续得研究了一下,直到今天我把它做出来了.内心还是很喜悦的!回想自己这两年当初从没公司肯给我做NX二 ...
- NX二次开发-UFUN发射线函数UF_MODL_trace_a_ray的用法
今天是国庆节,放假休息懒得动,没有出去玩,在家研究一下发射线函数UF_MODL_trace_a_ray.小弟以前在软件公司混的时候,当时我做的那个项目就用到了UF_MODL_trace_a_ray,当 ...
- NX二次开发-使用NXOPEN C++向导模板做二次开发
版本 NX9+VS2012 1.怎么往VS软件里添加VC,C#,VB向导模板 先到NX安装目录下UGOPEN文件夹里找到这三个文件夹 拷贝到VS的安装目录下 这里有几个注意事项,VS2017,VS20 ...
- NX二次开发-Block UI C++界面关于 在Block UI中UF_initialize();和UF_terminate();的使用
关于 在Block UI中UF_initialize();和UF_terminate();的使用 用Block UI作NX二次开发的时候,不需要在使用UFUN函数的时候加UF_initialize() ...
- NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))
NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...
- NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))
在看这个博客前,请读者先去完整看完:NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article ...
- NX二次开发-基于MFC界面对话框与NX交互的开发
打开VS2013 点击新建,选择MFC DLL 点击确定 点下一步 什么都不改,直接点完成 进来之后先编译一下,看是否编译成功 打开项目属性,更改这几处 $(UGII_BASE_DIR)\ugopen ...
随机推荐
- 自带的 print 函数居然会报错?
前言 最近用 Python 写了几个简单的脚本来处理一些数据,因为只是简单功能所以我就直接使用 print 来打印日志. 任务运行时偶尔会出现一些异常: 因为我在不同地方都有打印日志,导致每次报错的地 ...
- unbuntu下清理磁盘空间
把很多大文件删除,并清空回收站后,发现可用存储空间并没增大,如图: 用find /home -size +500k 过滤出大于500k bytes的文件,发现原来删除的yuv文件都被置于.cache目 ...
- Fiddler抓包工具使用记录
前言 Fiddler是一款强大的Web调试代理工具,又称抓包软件,本文记录如何使用Flidder进行抓包 Fiddler官网:https://www.telerik.com/fiddler 下载安装 ...
- Tomcat&Http协议-授课
1 企业开发简介 1.1 JavaEE规范 JavaEE规范是J2EE规范的新名称,早期被称为J2EE规范,其全称是Java 2 Platform Enterprise Edition,它是由SUN公 ...
- Linux命令nohup实现命令后台运行并输出到或记录到日志文件
Linux命令nohup实现命令后台运行并输出到或记录到日志文件 导读 我们在调试程序的时候,免不了要去抓一些 log ,然后进行分析.如果 log 量不是很大的话,那很简单,只需简单的复制粘贴就好. ...
- Shell $?获取函数返回值或者上一个命令的退出状态
Shell $?获取函数返回值或者上一个命令的退出状态 来自:互联网 时间:2021-01-12 阅读:2 $? 是一个特殊变量,用来获取上一个命令的退出状态,或者上一个函数的返回值. 所谓退出状态, ...
- CentOS8.2集成的megaraid_sas版本不支持IBM X3850 X5内置RAID卡。需要更新https://docs.broadcom.com/docs/MR_LINUX_DRIVER_7.15-07.715.02.00-1-PUL.tgz
CentOS8.2集成的megaraid_sas版本不支持IBM X3850 X5内置RAID卡.需要更新https://docs.broadcom.com/docs/MR_LINUX_DRIVER_ ...
- Linux 用户管理_用户相关配置文件详解
linux的用户管理 linux支持多个用户同时使用同一个用户登陆系统,windows在修改组策略的情况下,也可以多个人使用同一个用户登陆. 远程连接Linux的方式:ssh 远程连接windows的 ...
- linux进阶之远程免密登录,动态添加磁盘及个别基础命令
一. 免密登录(远程连接ssh) ssh IP #连接登录到其它机 ssh 192.168.10.102 ssh IP "CMD" #在其它机器上执行命令 yum -y i ...
- linux 进程信号集合 sigset_t -(转自linengeir的专栏)
sigset_t 号集及信号集操作函数:信号集被定义为一种数据类型: typedef struct { unsigned long sig[_NSIG_WORDS]: } sigset_t 信号集用来 ...