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

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

  [复制链接]

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

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

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

x
) v/ x! z. H, l. J7 [( Y# L
NX二次开发源码分享】关闭NX后,做点儿事$ R: F# }# i  v$ T3 {

1 ~% k# m# h: `. m5 w[mw_shl_code=c,true]/*
, ~7 p2 o6 J' Z1 |, b6 h0 a' q% V, ^$ |3 Y) B
    ufusr_ask_unload is invoked immediately following the completion of ufusr' d+ O! U/ R/ s. M
    (or ufsta when the dll is run from a startup folder) to find out when you
( j" `% a* f" h& O4 W5 T3 {. G2 ]    want the dll to be unloaded.  If ufusr_ask_unload returns
. h( N" J3 Z3 L% l    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
- Q" ]$ D$ |; M0 B" z    unload when NX is terminating.  To prove to yourself that this works, set) Z  O3 f# o- }1 `. H2 c
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not8 [  C! R4 d0 c6 Y0 S
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX, ]0 q5 N/ K' \4 _
    Log File and make a note of the full path to the syslog which will be shown- W0 \( h; _: _
    as its own first line.  Run the dll built from this code (nothing noticable
8 G3 K- X7 _& E$ n$ U) F    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
* F! q* w8 s  `5 F, s% G    see this line near the bottom:0 C( q' X1 o8 ?$ W% Z' m
# M) \" a: E, y3 c4 u
NX is shutting down - running ufusr_cleanup! V) T5 y; w" m! X- q" d

+ m6 t6 o9 M" T5 }0 o" g/ A5 f*/2 `; `9 C. ^9 b3 [" L2 N
#include <stdio.h>* ?! w0 q- V# i0 B2 e. a
#include <string.h>5 e" D+ f. m; W. r& i
#include <uf.h>
4 b" r  b& M! S# B" |#include <uf_ui.h>
0 j* }, y  [7 H#include <uf_exit.h>
* ^& x2 X) {" J& O; L3 C% m0 X& w( G/ c) r9 [
#include <stdarg.h>
8 H; u9 M0 n/ ~6 p
9 G( _! f8 X6 e, d& Ostatic void ECHO(char *format, ...)
! N1 a# j& L0 @$ N8 K{
3 k3 t( D6 {9 k( d) @    char msg[UF_UI_MAX_STRING_LEN+1];
- n; b( _3 ~8 P4 j* ?- C    va_list args;4 M( R4 D0 G) ^) k  f% V
    va_start(args, format);
2 B* `% Y' o, h' v. r% O8 H5 @    vsprintf(msg, format, args);
' a- X1 O9 i" ?( m9 K! r8 j    va_end(args);
0 @5 ?) @7 E& u6 z& W/ Q    UF_UI_open_listing_window();
$ X% S1 R" B4 I& t: g    UF_UI_write_listing_window(msg);4 d7 }( ]4 K- r, X3 [; j7 `# q' w. B
    UF_print_syslog(msg, FALSE);
/ v  \- B' s# K4 j: Q1 ^}
% b: t* [6 J" ?: \3 w0 I6 h) u2 C0 V0 Q
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X))), K2 J8 h% ~9 ^) R+ z7 N) r. j7 Z/ \, j

, x' k0 l$ R0 i" m, ?; ]static int report_error( char *file, int line, char *call, int irc)! K0 @5 s) _& D  c# L3 a* I2 }
{
! F! q+ M* d& `- e- s0 Y+ N    if (irc)
( b8 _+ ~% |/ t" p4 ~- I3 i1 O- j    {
; ^) R% {+ f5 K2 j: f+ K( n        char err[133];
9 @3 ^0 j* G0 m0 l2 N" q/ M2 ]+ J6 K- w- A
        UF_get_fail_message(irc, err);
1 C% r: y) g5 x        ECHO("*** ERROR code %d at line %d in %s:\n",# K3 l$ j  y5 w7 e* o1 f* H
            irc, line, file);
9 Z/ H6 f. i* z$ g8 }/ U        ECHO("+++ %s\n", err);
0 X# |- W8 v% f& X        ECHO("%s;\n", call);& j& z* J% ?# d, o
    }; i- U6 B: C* E2 q

# X1 Y+ V3 `9 p+ {: K    return(irc);
, d/ X% Z- j  L}
8 w6 b2 W( Q6 F, z  z8 R) }1 }+ W7 K. j1 R1 O3 {. H. s. i" u: Q
/*ARGSUSED*/# ~; \6 \" U  ?( F8 }2 `1 Q, M
void ufusr(char *param, int *reTCode, int paramLen)! N! s; j2 g) b  s9 c1 ~4 d
{
3 g. Q# m( t0 J3 X% N/ A}# U+ e3 R/ g8 [

! N1 v8 S' y" j* o/*ARGSUSED*/# C3 |$ a: s+ w6 f- M- Z
void ufsta(char *param, int *retcode, int paramLen), v& y: A/ d# `( i! m0 X
{% r" O8 l6 [5 x& B( L
}
/ d/ K/ I! u2 u) C* Z1 b! v
! Y0 T! k7 p  G/ ~2 Nint ufusr_ask_unload(void)
5 p2 ^; d% Q' C+ A' s{
/ w' d' Z/ s$ U' }& f    return (UF_UNLOAD_UG_TERMINATE);
& H! N- [: F; U" g* Y9 s}, o9 `0 s" M+ p( `0 y. b2 a
$ ?8 q! z$ H: v
void ufusr_cleanup(void)
1 ?$ U5 C9 y' M* M{
* ^/ I5 ~9 z1 u- _+ m( ~    ECHO("NX is shutting down - running ufusr_cleanup\n");$ S! G5 @# y( b" g5 [

4 _1 ?0 l" U; o. X) d6 T& M    /* put your code here */- _2 ~- X" R- J" i8 A
}[/mw_shl_code]
, j$ F2 |9 F( k. q: _* t; A
上海点团信息科技有限公司,承接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) I9 ^: l" t" c* {0 m* U
请问这个函数是怎么用的?有什么用?
# b( `, A# e& ^6 z8 i# D
入口函数 改成 ufusr_cleanup 6 [/ z0 a+ c) _

% y( ~' E) f) h& K意思是 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二次开发专题模块培训报名开始啦

    我知道了