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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x
! u& T# o; H% e! C$ y/ d, B
NX二次开发源码分享】关闭NX后,做点儿事7 n" F2 k+ \- [3 s9 x

- j& L1 N4 g. |9 R; U  {[mw_shl_code=c,true]/*
4 J& |) n- g+ F
7 x& G7 h; \$ m4 d    ufusr_ask_unload is invoked immediately following the completion of ufusr
) h1 e( X2 N' R2 k% B  P    (or ufsta when the dll is run from a startup folder) to find out when you
4 v; S3 B, ~& g* i$ }    want the dll to be unloaded.  If ufusr_ask_unload returns( v5 `" G% Q! a
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
3 d8 P2 |( s* R) c: a) y    unload when NX is terminating.  To prove to yourself that this works, set
" y: k0 J, H, C8 W    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not: y3 `/ ^% C  Z/ T, S6 w
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
" b3 d% o: ]+ j" ?    Log File and make a note of the full path to the syslog which will be shown* |6 d! P4 I/ J& F9 T! _
    as its own first line.  Run the dll built from this code (nothing noticable
$ M4 c1 p4 c7 r    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
7 j1 K$ X! V' R, i5 Z4 f    see this line near the bottom:6 \# z5 c3 w5 q/ X0 c) K5 B
1 [7 ]# I, \$ S. g! \3 |
NX is shutting down - running ufusr_cleanup
3 E2 ~0 Y4 s. I) q0 k: k. t5 J- j& U4 D7 k" p) T
*/5 D" o0 ?" z/ R! U# C; {: s8 s
#include <stdio.h>" a- R  q$ ?& u# g+ e. C, _
#include <string.h>
2 N$ o0 W* D) M9 @7 P" X7 u6 p#include <uf.h>
  C7 q8 P+ [0 f, \& a6 B#include <uf_ui.h>
, H9 V9 B9 s4 W8 D#include <uf_exit.h>
! F% b) [5 j$ M2 k- q. p- Y, w/ {  f
#include <stdarg.h>
: M+ J2 T, ?  w# ~( ^% O& c/ A: t3 P9 s0 s
static void ECHO(char *format, ...)4 k' k0 _4 [1 J" O; z. G0 @
{! x  w/ }/ J" N1 n( r
    char msg[UF_UI_MAX_STRING_LEN+1];" }$ e- H1 c8 P8 p% A+ E, ^1 X. y
    va_list args;2 M& n/ O5 K( u" P: O- `9 T. ~8 R' l
    va_start(args, format);% Z4 Z  v4 i/ M/ R" U9 \
    vsprintf(msg, format, args);9 \/ a) t% k& D; E( |
    va_end(args);
6 A( T4 ~: W4 m' t( P- B' ?6 K) M# a9 u    UF_UI_open_listing_window();& B0 k; a( ^, D$ O' p( p0 ~
    UF_UI_write_listing_window(msg);0 b& }5 O7 ~7 W' ?4 m/ C+ T
    UF_print_syslog(msg, FALSE);
: O5 g! y2 z" ^; h, c% @}
( U" h7 {0 Q( e/ j  z8 h, F1 \5 |3 G% @3 v" ?% l; I8 @: v) t
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
3 l8 Z4 \3 v; {! r+ u% O2 q; J! ~, A( B4 q" {  `5 \
static int report_error( char *file, int line, char *call, int irc)- u+ H) B4 }8 O! ]0 b  I4 E
{$ `  L( D0 f0 ]$ A2 l5 E
    if (irc)# F1 b, _( `8 C/ z1 F
    {  l: k7 @* R+ ^6 [
        char err[133];% i( X5 w3 ?6 K# M, a# M

( d/ h# y; U7 ?) d: {0 O        UF_get_fail_message(irc, err);& _' }3 j- _# w
        ECHO("*** ERROR code %d at line %d in %s:\n",
3 I  C/ X# j6 N+ e" c- W2 V            irc, line, file);, d# V* Q, i0 U  c/ I6 _+ @) g
        ECHO("+++ %s\n", err);# e* U1 L) O! a  }$ \1 k6 m1 n: T
        ECHO("%s;\n", call);+ A+ E5 l; @$ b
    }
5 j. N& A' r. z5 ]1 F6 O- }+ I, w0 c2 D6 V$ S+ M' v3 P4 z$ K! F+ E
    return(irc);
: P% m- ~0 E; m- t+ `5 G}
$ r- s3 J# j8 f& b, J% ^- O% t/ z9 m1 ~0 v: q
/*ARGSUSED*/
# g% U$ w6 q9 {. j) Jvoid ufusr(char *param, int *reTCode, int paramLen)) ^+ l9 u& n+ Y/ O7 ]  e/ }
{, i% V' X" \* P" ~
}
0 r* u1 r0 Y( b- l' K# U3 M: c
/*ARGSUSED*/
6 t- H: I5 f) ?# X' }void ufsta(char *param, int *retcode, int paramLen)
4 J) {, E% l* h5 Y5 z) s; y{
. T+ x. N( ^. e; |- P}6 d0 K  w1 I9 A+ Z3 Y$ b; W/ c

  S3 J2 y) S1 T/ i& [% d% gint ufusr_ask_unload(void)5 g7 v- O1 A% B% E' M7 h( a2 i
{: l1 d9 |0 [( f( w2 a. b# {. z3 F: k
    return (UF_UNLOAD_UG_TERMINATE);3 k$ Y$ z/ P8 D5 Y3 P6 A9 Q2 \
}
3 E" ?9 |3 o- N. z) a  j% Z  X# ?9 T8 L' o+ p: M
void ufusr_cleanup(void)
7 q+ Z: Y$ K" L% D{
# w  C" s6 a5 g. P# X- V2 b) b5 {    ECHO("NX is shutting down - running ufusr_cleanup\n");  P& K. J& r. F- q/ ]/ V
8 L; M1 G# m3 G; X# j0 j
    /* put your code here */
% n" z( G! Y! Y: T' C& G}[/mw_shl_code]$ ?, M4 ~* h1 u( W- L- H  L
上海点团信息科技有限公司,承接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:49& H, }9 n* v4 S( X
请问这个函数是怎么用的?有什么用?

4 _6 k  q7 O* G, n入口函数 改成 ufusr_cleanup + }+ {. c1 h# h

+ I3 M& b0 @" \8 u' j意思是 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二次开发专题模块培训报名开始啦

    我知道了