PLM之家PLMHome-工业软件践行者

[二次开发源码] 【NX二次开发源码分享】关闭NX后,做点儿事

  [复制链接]

2023-1-10 20:46:56 3973 3

admin 发表于 2018-7-12 11:12:47 |阅读模式

admin 楼主

2018-7-12 11:12:47

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x

( i. C. o+ I! ~" ^* `$ Y2 ~. q7 mNX二次开发源码分享】关闭NX后,做点儿事
3 y- N2 W2 K% V$ E1 i
/ ^) \5 Q, T1 Q" ^[mw_shl_code=c,true]/*
% U8 l, _5 @! f5 [* K; W# r: n3 L2 m$ M2 _. c
    ufusr_ask_unload is invoked immediately following the completion of ufusr
+ Z( T1 Q5 l' E# \5 Y9 |2 r$ i4 ^    (or ufsta when the dll is run from a startup folder) to find out when you: [5 K% N! \' l7 P
    want the dll to be unloaded.  If ufusr_ask_unload returns
5 M2 L' N9 c# k# z    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is) z$ R, ?, v" C( T6 u- W
    unload when NX is terminating.  To prove to yourself that this works, set3 ^7 N6 Q4 [9 P5 U9 ^! j
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not
6 w( D. s; l# c    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX* a3 t. J& P& X% B
    Log File and make a note of the full path to the syslog which will be shown
1 V3 R/ {9 |8 A  B    as its own first line.  Run the dll built from this code (nothing noticable
, R# _, z6 P" A3 |    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
' J5 p4 ]2 k; I8 K  s    see this line near the bottom:
1 i9 D8 F: D! l& y
1 J" y& R& B" p, P/ U9 \+ ONX is shutting down - running ufusr_cleanup& [9 I& H( c6 x! O# W1 a

: T! e, L% }( r  s*/
( |+ I; [' p3 `/ h5 t) H#include <stdio.h>
5 F0 g, Z: e4 J  `. ]#include <string.h>+ H4 V& }0 F" @& J1 Q
#include <uf.h># N# R+ ~. r' Q: y6 i! n6 \/ P/ {" J
#include <uf_ui.h>. E) ?3 x: \* J# d
#include <uf_exit.h>" y8 q! V9 F( W. c" L# O9 d/ A+ b8 T

6 z1 ]3 v7 L2 X5 o5 g1 {#include <stdarg.h>
" d! n; O, |$ i* {" l1 D! E' K% Z8 Q8 n
static void ECHO(char *format, ...)+ A- j& Y+ I4 b: T' o' V4 L/ j# t: ^
{
% s# }; q  H! |% m8 u    char msg[UF_UI_MAX_STRING_LEN+1];
5 p7 e2 d, ?7 [  M& O    va_list args;% \/ W' b- k% A6 h8 {% p( H+ @/ i: R
    va_start(args, format);0 z! Z7 d1 P3 `& N* y7 s( B
    vsprintf(msg, format, args);4 a8 l& f+ Y! e
    va_end(args);
- u( |- A! J, K$ B+ [    UF_UI_open_listing_window();
3 d1 c) P. d; @- n6 z5 a5 [    UF_UI_write_listing_window(msg);
, f5 s( \$ B7 i1 o% n- n2 a# n    UF_print_syslog(msg, FALSE);7 ?, I! u; q% Y
}
# V) H% X3 D% u# ^, g" \  \  e+ h+ Z  L3 b/ k- s3 _! N$ J
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
/ V# h: c  x7 F, h( Q3 B
" w7 {' p- l5 Sstatic int report_error( char *file, int line, char *call, int irc)7 r+ |) x: a5 T4 V' A& ]  k8 B0 i
{4 g, o. E  J6 t6 C# Z4 r5 }
    if (irc)+ _; ~" O8 f4 @  l7 o
    {) a5 p9 \: {5 }+ j) ?+ ?" {' i/ b
        char err[133];6 R$ A- |$ t0 S4 v. u6 O

% M$ c3 M6 |- v/ L. _+ L8 z: C+ [        UF_get_fail_message(irc, err);
' a) {2 L: N4 k        ECHO("*** ERROR code %d at line %d in %s:\n",( i/ W- {$ v% J0 A( ?
            irc, line, file);$ z( m( p. ]; s/ d
        ECHO("+++ %s\n", err);
/ ?& N. c7 b2 w, j3 C) w( Z9 d        ECHO("%s;\n", call);3 q' u: h; z6 n1 c% g# X
    }# \, z- m3 L9 g, N2 E( `  }

7 Y" E. ^3 R( a7 m    return(irc);, ~+ j+ q' ?( Y: l# G/ F3 f
}6 Z8 h6 M' q. U
' n; e' V% ?6 \4 R8 r2 z; T
/*ARGSUSED*/5 i% Y) A! Q+ d, j  }* A% M
void ufusr(char *param, int *reTCode, int paramLen). i8 B$ L  Q# v# E) m4 y0 ?
{
* e5 T" b  X5 V8 }}
% z. ~0 i6 O" e' b1 T+ }
! G7 l9 u: [1 U. }# `, I; v! r/*ARGSUSED*/
& w8 l: [8 e. p1 Nvoid ufsta(char *param, int *retcode, int paramLen)
# i: e; B- q* K{
: A5 Z; k& ^, T' h8 b}
% F" h# y+ V3 O, G- ]
( j; H) A; ^, E. J% O9 jint ufusr_ask_unload(void): C7 p3 W/ i, @& w' e6 U! k- q8 Q
{
9 C1 n3 N, a. I6 e$ {5 c5 |    return (UF_UNLOAD_UG_TERMINATE);
2 J% y8 B6 U# g9 I}; s$ L( X2 M" }/ h& e/ m6 L6 q

, a& |# m; z( R6 Evoid ufusr_cleanup(void)
( ~. p  t9 w$ z8 u" p0 N9 S{
7 b: T1 V4 m/ G' q3 K    ECHO("NX is shutting down - running ufusr_cleanup\n");
# v. z5 R) u" [, R1 s4 A
  S! C2 K( _* x3 f! h4 m    /* put your code here */8 f9 U1 R+ A- A; \) S, o  L
}[/mw_shl_code]# O/ V% g  B# e3 w  R) ^! R( m
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

全部回复5

licxsw 发表于 2019-12-25 08:49:24

licxsw 沙发

2019-12-25 08:49:24

请问这个函数是怎么用的?有什么用?
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

admin 发表于 2020-2-13 08:43:55

admin 板凳

2020-2-13 08:43:55

licxsw 发表于 2019-12-25 08:497 N9 a  B% _/ m- Y$ L0 `
请问这个函数是怎么用的?有什么用?
0 u% I2 A, n% u9 @0 l$ K; H
入口函数 改成 ufusr_cleanup " J: g. t3 a9 f$ T3 D  P
+ x5 m2 r0 ~4 J, l0 B; Y
意思是 NX 程序退出后,你可以做些事情 ,具体做啥可以自己写,就是个入口
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复 支持 反对

使用道具 举报

licxsw 发表于 2023-1-10 20:46:56

licxsw 地板

2023-1-10 20:46:56

测试了 ufusr_cleanup入口处复制文件到指定目录下,不成功
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了