【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 ...
随机推荐
- XCTF-shrine
shrine 直接看题 进来给了个python代码 import flask import os app = flask.Flask(__name__) app.config['FLAG'] = os ...
- Object划分
Object划分 1.PO(persistantobject)持久对象 PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合.PO中应该不包 含任何对数据库的操作. 2.DO(Domain ...
- Mac FTP工具推荐-Transmit
Transmit 是专为mac用户设计的一款功能强大的FTP客户端,Transmit5 mac兼容于FTP,SFTP和TLS/SSL协议,提供比Finder更加迅速的iDisk账户接入.与此同时,用户 ...
- 面试侃集合 | ArrayBlockingQueue篇
面试官:平常在工作中你都用过什么什么集合? Hydra:用过 ArrayList.HashMap,呃-没有了 面试官:好的,回家等通知吧- 不知道大家在面试中是否也有过这样的经历,工作中仅仅用过的那么 ...
- 1.初级篇——最基础的"穷竭搜索”
A.Lake Counting(POJ 2386) 题意: 由于最近的降雨,农夫约翰田地的各个地方都有水汇聚,用N x M(1 <= N <= 100; 1 <= M <= 1 ...
- [刷题] 17 Letter Combinations of a Phone Number
要求 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合 1 不对应任何字母 示例 输入:"23" 输出:["ad", "ae&q ...
- CentOS 8.2远程连接vncserver升级后1.10.1无法启动解决记录
CentOS 8.2远程连接vncserver升级后1.10.1无法启动解决记录 问题起源:手贱yum upgrade,重启服务器后无法使用vnc viewer远程连接 查看状态 # system ...
- useradd linux系统创建用户和设置密码简单脚本-1
useradd linux系统创建用户和设置密码简单脚本-1 linux_wangqiang 2019-12-04 20:51:18 65 收藏展开#!/bin/bash#快速创建用户 使用$1第一个 ...
- 进入除错模式!进入此模式后,将会出现更多的选项,分别是: · 以基本图形介面安装 CentOS 7 (使用标准显卡来设定安装流程图示); · 救援Centos系统; · 执行内存测试(Run a memory test);
Centos 7.3 安装 0.0392017.07.14 20:12:09字数 1550阅读 985 Centos 7.3 基于 Red Hat 企业版的源代码的最新版本的 CentOS 7 在今年 ...
- ar是System Activity Reporter(系统活动情况报告)的缩写。这
ar是System Activity Reporter(系统活动情况报告)的缩写.这个工具所需要的负载很小,也是目前linux中最为全面的性能分析工具之一.此款工具将对系统当前的状态就行取样,然后通过 ...