查看: 4273|回复: 5

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

  [复制链接]

4

主题

3

回帖

38

积分

管理员

积分
38
发表于 2018-7-12 11:12:47 | 显示全部楼层 |阅读模式

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

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

×

( c3 `3 m# c$ r& B3 `" D3 VNX二次开发源码分享】关闭NX后,做点儿事* u* W4 N( E& k& s! o2 z
2 f# N5 G( L& B: M1 N5 i
[mw_shl_code=c,true]/*8 k! p6 ?4 p" t" J" {. U

5 E9 y) @4 O# l1 t, |3 R1 T' m* J( ^0 E    ufusr_ask_unload is invoked immediately following the completion of ufusr
; m4 o% k$ o; O0 J0 i9 o    (or ufsta when the dll is run from a startup folder) to find out when you
7 S) X; Y, {, c# N! }    want the dll to be unloaded.  If ufusr_ask_unload returns5 F. i, V  q" ]
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is# C3 l/ q! I. g5 \
    unload when NX is terminating.  To prove to yourself that this works, set
1 v$ W" Q5 _9 d2 |' q! D3 s' G( ^    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not
1 D( @, x, I/ @$ A1 }( S/ M* C' I1 C    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX. P& P- L8 x& X
    Log File and make a note of the full path to the syslog which will be shown
+ D  d# q  l$ \) F2 z    as its own first line.  Run the dll built from this code (nothing noticable/ n8 G8 c9 X9 |8 M
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
' ]- I" ~0 z* ~) p- G    see this line near the bottom:. w2 W( O9 X, Z6 z1 Z1 r

: W8 ^5 t5 N. v; k% eNX is shutting down - running ufusr_cleanup
8 h* ~" D$ w2 u" B# t1 a, i. j$ d. j6 n! s. _
*/
8 _- z) Q! J- N; z#include <stdio.h>
" n3 k7 W% e: c6 Z! m& o6 S6 ?#include <string.h>
% n1 q" f0 ^! {4 {#include <uf.h>
/ i6 W% p$ L& s$ s$ B" B& ^#include <uf_ui.h>
. |3 ]: X/ ^' W* |#include <uf_exit.h>
( ], B" E, q" P: j  E
' {  P8 O* S+ G# c/ a#include <stdarg.h>
6 L) X6 P) ^/ g( x' b! [: H0 @1 k" U6 W9 p
static void ECHO(char *format, ...)
) m, ^- @. H0 L) M( s; R: O{
( G9 ~% `% G' A4 H    char msg[UF_UI_MAX_STRING_LEN+1];( F0 g( ], g  L$ _# `4 q& F
    va_list args;
2 J' T1 w9 @) m3 w" H. R    va_start(args, format);3 D5 k, \7 {; K! `
    vsprintf(msg, format, args);7 H. o- U4 t6 ~/ `. m; k" x; l* F
    va_end(args);* U" ?2 W( i  ?
    UF_UI_open_listing_window();
5 v$ U1 }9 Q" W$ r9 H+ o. K    UF_UI_write_listing_window(msg);; v; J0 W& E# Q2 G5 D2 s
    UF_print_syslog(msg, FALSE);1 N4 N+ q) O9 b) [' M7 H; v
}
/ q! ]9 v, W* r# X4 i  j0 V+ ]3 u0 ]" y2 @8 Q
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))) J' C: ~+ ~: a9 f" i8 R
6 K. f( e4 X( T8 e  ~
static int report_error( char *file, int line, char *call, int irc)
7 W: C' v7 M& @+ @! ?8 q! e{. y9 V# D! F" w
    if (irc)8 t  ?' g1 t2 l
    {, \/ m1 y2 |+ s
        char err[133];4 h# }: i* g. a2 g9 F
/ t5 O2 I) z  F) w) k
        UF_get_fail_message(irc, err);5 D& ~3 D7 E' j1 k4 P5 b9 f
        ECHO("*** ERROR code %d at line %d in %s:\n",
7 [% G( U& q! s; n4 \- ^) j& U: E' t            irc, line, file);7 Q8 `) d: `' x8 v7 q+ L
        ECHO("+++ %s\n", err);2 ], C6 g) q8 R& C
        ECHO("%s;\n", call);* i3 X3 x' d& p7 A
    }* x4 Y+ r+ I! [
& ]( d" U! j. W
    return(irc);1 \9 v6 ~. N# w$ R
}
" {6 Z; [* I1 g3 s) g- B
& Y" g' ?/ H( ?5 h/ x/*ARGSUSED*/
6 _1 E' D$ J5 p8 x3 evoid ufusr(char *param, int *reTCode, int paramLen)
: r) Z/ |4 e7 w2 x' k3 d{8 G- F( _, u6 g: o: m7 S
}+ x7 V: T/ q3 w- Z& a2 M
# a) A! O! m$ Y* [/ V: F8 i
/*ARGSUSED*/
* g& T5 S  @9 e7 |' r/ _! I' Bvoid ufsta(char *param, int *retcode, int paramLen)
' I% t# ]' M/ K, W& |$ R{
0 O1 j+ B. x- Y# k9 Y6 ~3 r4 j}
" G8 F4 D) y  S# s* d  `* z. w/ X  b0 @' I2 k$ x& U1 V- X. A# z
int ufusr_ask_unload(void)
! D; r) c  i) W$ ]{6 z/ q; {" Z  W% u% {! J* t
    return (UF_UNLOAD_UG_TERMINATE);
8 d& G% z0 b& F' w}" Q. R/ |3 v: Y% A; G1 K, {: ^

2 w! e  H' L" [  Z4 Zvoid ufusr_cleanup(void)
+ \+ j3 B1 @7 J; v/ |{8 S5 C, U. }% I. [# b
    ECHO("NX is shutting down - running ufusr_cleanup\n");: X3 p: m: I9 `, ~& x5 Z

0 O; e' n, g6 d  S# e' F    /* put your code here */3 [* T! b- D: j0 m# A# S3 Z
}[/mw_shl_code]
) N8 l, \" Y; j0 ?" o' j6 {
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

1

主题

45

回帖

203

积分

培训VIP会员

积分
203
发表于 2019-12-25 08:49:24 | 显示全部楼层
请问这个函数是怎么用的?有什么用?
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

4

主题

3

回帖

38

积分

管理员

积分
38
 楼主| 发表于 2020-2-13 08:43:55 | 显示全部楼层
licxsw 发表于 2019-12-25 08:49
9 L4 r6 h& m. y+ K. X& \请问这个函数是怎么用的?有什么用?

; ]% n2 e$ t9 Z6 z, }入口函数 改成 ufusr_cleanup 7 o% q+ u: B3 A# V6 T6 ]; n3 y5 J% q  Z+ ?

% j+ R: Y5 g0 h& u* D( I8 P  a意思是 NX 程序退出后,你可以做些事情 ,具体做啥可以自己写,就是个入口
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

1

主题

45

回帖

203

积分

培训VIP会员

积分
203
发表于 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.doteam.tech
回复 支持 反对

使用道具 举报

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

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部