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

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

  [复制链接]

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

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

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

x

+ ^/ \& [( v" ~% t; eNX二次开发源码分享】关闭NX后,做点儿事+ V' b4 F% L9 j- j7 k* b" f

' o( H2 L4 d& N' Z" J[mw_shl_code=c,true]/*
/ `+ o! {0 X6 e* G% S9 p. X1 m
) x# J. T. C' F9 }6 f  j. g7 j    ufusr_ask_unload is invoked immediately following the completion of ufusr. a) H3 I& C; \) _+ i
    (or ufsta when the dll is run from a startup folder) to find out when you6 C  {: X7 _% [+ `
    want the dll to be unloaded.  If ufusr_ask_unload returns9 f; W- |8 o) j$ q+ h+ I$ O5 D) h& z
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is. s0 {8 p9 g( w" l& S" ^
    unload when NX is terminating.  To prove to yourself that this works, set
6 q- D  h+ W9 \% ~& ]) H    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not3 z3 x; x. J' \6 b- M: e
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX5 }# t& i+ o8 f
    Log File and make a note of the full path to the syslog which will be shown/ V+ G3 o8 d" }. a
    as its own first line.  Run the dll built from this code (nothing noticable
' }4 }2 h. |: R4 d& T0 S4 J0 ]    will happen.)  Exit NX.  Find the syslog and open it in any text editor to# C6 U: q& Y8 Y8 ?- Q0 r/ x$ u
    see this line near the bottom:
; l: ]7 ~! K3 [9 j/ H4 L) }
; W1 X" y( p% B7 Q4 ]0 dNX is shutting down - running ufusr_cleanup
: D2 W# r' j( k& f7 S* a
# @2 C/ [1 k% l6 p% }, V, t, P; |*/
4 H7 Y6 O! `+ d! S2 w#include <stdio.h>
! E! \# }- n" i; ^' V2 J#include <string.h>
8 w+ n! s  A$ C$ L, D. o1 E9 F, ]! G#include <uf.h>" _5 H9 M) i8 k
#include <uf_ui.h>
$ y$ K" ?. T4 i# _#include <uf_exit.h>
& }" F3 f( r7 H, x" K0 @6 |' w
; F/ q5 e+ v0 K! I$ |6 a7 N#include <stdarg.h>
/ \% `; K# e- ~) i" C9 f  N, b% I2 ^6 i
static void ECHO(char *format, ...)
: T9 j; |, e4 N0 P# A  x/ _5 \{* N- _) |/ e! Q6 L* g
    char msg[UF_UI_MAX_STRING_LEN+1];
4 @2 C0 v' e$ k# y8 _6 N    va_list args;
3 H+ ]0 ^# w5 M, Y. @; o! r+ j    va_start(args, format);
8 a2 g5 r0 d8 X8 t$ }  F    vsprintf(msg, format, args);
8 t+ T8 A3 ]0 I    va_end(args);
- @+ g2 u( ~; v7 @1 L: ^    UF_UI_open_listing_window();
8 |3 A& X3 I/ J1 k( _    UF_UI_write_listing_window(msg);
& ?5 m8 @1 G' F. B1 V; n    UF_print_syslog(msg, FALSE);
9 Y+ ~  Q% s! {# b}8 z* U' a' c! ^8 M; W7 U

1 O" Q$ m: @$ a, l7 i8 o#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
& O' ?  o" I( _, d6 `/ q  O- ^. f2 \% q2 Y# z  H9 \$ l/ x) P; Z) h
static int report_error( char *file, int line, char *call, int irc)
8 {% j( q8 T# e" g9 N" o7 Y{
* x% d4 v# A- U& R    if (irc)* a2 E5 E" Q& `$ y  ~
    {2 n) a& I1 X* L& J# T* e/ r- D" ?
        char err[133];* t: p+ H* @0 a" E, P/ ^

. C/ {# z) p" f/ C        UF_get_fail_message(irc, err);
+ X+ b4 m9 k5 G( E# p/ u- X        ECHO("*** ERROR code %d at line %d in %s:\n",
, J* ?% R9 i. g. l9 O2 D            irc, line, file);
; @# h( g6 o' g# Z  `: n3 h, o        ECHO("+++ %s\n", err);7 ~9 t" ^7 @) ~8 l
        ECHO("%s;\n", call);
; P$ U4 G. T1 ]5 R0 I5 Z9 c    }
6 q3 X# Y; j6 q8 |& J7 Q- D$ k# v
( ^9 q/ ?" a4 X7 t4 m) w- I    return(irc);) f: i" U* L, p6 ^7 x; A, O& _
}
3 q! J3 t1 U. p: Q$ d' `# B" V8 H: O2 J( ]; J
/*ARGSUSED*/8 W  R3 J# |% j9 c) Y" Q( c
void ufusr(char *param, int *reTCode, int paramLen)( @# l/ t- t( J* l- a
{
* f$ i7 c/ h- f& X$ k}
- v( h3 _# |( u5 A# w# C! P- _. i! P8 y: {. i* h* i: N
/*ARGSUSED*/- K" V7 Y8 B  W9 o9 L; T4 v& u
void ufsta(char *param, int *retcode, int paramLen)0 A. B5 k0 K. @9 b
{
# W  a* \. h; x2 ^( o4 I6 b}
* H/ p+ K0 ?. l! {. D$ x, D+ t5 B% x  y$ k# S4 G" x: ]
int ufusr_ask_unload(void)
1 ~% Z; |! a& Y) ]{0 O! q# _4 u* j/ f
    return (UF_UNLOAD_UG_TERMINATE);
1 [2 [, W9 z: Y}7 z0 V$ ~" P8 t" N& L, y: X( u
* W7 {. t) E$ A$ a* R+ X; X6 F! y7 k
void ufusr_cleanup(void)
# o: o4 W) R& o{/ T3 l9 }4 y$ m$ @+ p1 s
    ECHO("NX is shutting down - running ufusr_cleanup\n");/ ]: z3 v2 }5 E5 a) h1 I

4 w$ Z% ?; l% X, ~, |4 F    /* put your code here */% F+ g$ L) K, }& E. s$ \
}[/mw_shl_code]( M) B% F/ n: 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:491 e0 p; L, r/ {% X8 @) N' r* x
请问这个函数是怎么用的?有什么用?
) e/ `9 h  _/ F7 Y2 T+ ~
入口函数 改成 ufusr_cleanup
" d: ]) Q0 J- j& O' Q$ u+ i. H, M: N  |) E8 V( Z
意思是 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二次开发专题模块培训报名开始啦

    我知道了