PLM之家PLMHome-工业软件与AI结合践行者

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x
6 w, W" l& l/ b$ k
NX二次开发源码分享】关闭NX后,做点儿事
/ y" e5 {" X4 l" |! b' ?! X1 _* `/ s- z' w! S9 i: I: ~
[mw_shl_code=c,true]/*% c( w: F$ Z. e3 A8 P
2 D9 j( o' ~$ _2 `* ]! W
    ufusr_ask_unload is invoked immediately following the completion of ufusr
0 y4 q1 i9 \% s! R9 [    (or ufsta when the dll is run from a startup folder) to find out when you# G" a6 D- A, T+ U5 _, ?+ Q, @$ ^
    want the dll to be unloaded.  If ufusr_ask_unload returns/ t0 v  }5 O1 n# J2 ?
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is$ V6 ?3 \; `; a- z) F/ Y- p9 z
    unload when NX is terminating.  To prove to yourself that this works, set
, d0 z3 a4 L/ ]    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not9 f; E/ m. }0 f' J: O4 L. N
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX# X$ S) ?& K' j
    Log File and make a note of the full path to the syslog which will be shown( o+ C2 d- p, w2 z: b% l
    as its own first line.  Run the dll built from this code (nothing noticable# V& U3 y" K6 }. A: f
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
- w0 o* f/ c* Z0 g    see this line near the bottom:! ?8 L# m$ J3 c7 X! h4 X, r
& Z8 n! o$ T% A2 I' ~/ d4 w
NX is shutting down - running ufusr_cleanup
/ v* w0 Z) \4 b( \! S; B1 s4 J
1 ], W! ]8 @7 Z2 Q*/) l5 @. _& q" ]' S! U) j# `) O
#include <stdio.h>! t: q% A! P2 r+ F3 O- w9 O. M5 ]
#include <string.h>
- \! n5 V: g& k3 u#include <uf.h>
" F# b* @8 A' m2 I#include <uf_ui.h>, ?  h- H5 y3 r5 K! F% x( M) J
#include <uf_exit.h>
6 i1 g# a  w) M# ~2 t# P3 s5 K* D" P# |2 \, @3 P
#include <stdarg.h>
. f/ g2 N& N$ i( O' i) ]( D9 a
& v; m4 P3 K. zstatic void ECHO(char *format, ...)+ S$ H2 a1 n& U  j% a# L# H
{
( y5 Q8 q! }- S: D6 E) T    char msg[UF_UI_MAX_STRING_LEN+1];: ?. G3 v* M" w
    va_list args;
) D. [% \, v# J. G9 d4 h, E    va_start(args, format);0 s: O4 x$ y# L! e4 q# z8 A
    vsprintf(msg, format, args);
, S2 \: s: X" _: S    va_end(args);! V+ M  S# v5 Y% x! b% V
    UF_UI_open_listing_window();
+ F. P$ _( w9 L+ o; A# k    UF_UI_write_listing_window(msg);0 q% n9 `5 w# f+ n
    UF_print_syslog(msg, FALSE);( ~# G" Z% z# X% G' T, \
}
& `7 K, e5 w. A1 C/ W# O/ M) i# q! T7 _' Z2 u5 d" r$ w: ~
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))5 H" S; D4 A/ |

( [$ p# g% ^8 ]4 s% tstatic int report_error( char *file, int line, char *call, int irc)+ ^/ H6 h6 e2 ^3 y% S0 X8 |- t& _8 z# ?
{! ?2 J0 R( b; d6 a* ]2 p$ |$ A
    if (irc)
7 E) ^0 l& _! G- T    {
" S8 U9 J2 v/ G& i5 \        char err[133];2 e- Z( w. Z2 O1 X- |

2 Z. t) [3 c, W: c% `7 G        UF_get_fail_message(irc, err);9 v/ B+ V( L  r5 s3 k/ K, b
        ECHO("*** ERROR code %d at line %d in %s:\n",
0 m% R! f4 C1 X% N; v            irc, line, file);
" C7 T1 j" t5 i( c2 D  {7 I' y0 B        ECHO("+++ %s\n", err);
3 R& L4 j2 Z! G) d( s+ z- ~7 s8 [        ECHO("%s;\n", call);
" @  J' H8 }, B4 N    }- U6 C* Z$ O. S, D5 L* m0 W8 |0 r
4 y* i0 R- _1 b" v
    return(irc);# v0 h7 ?: Z; ~+ Z; G* s
}
* r% C2 y7 Y2 q* ~9 `6 E
6 N+ x. g9 ]' c' }, ?# ?/*ARGSUSED*/  u: A1 T6 y( ~* o) A1 ]
void ufusr(char *param, int *reTCode, int paramLen)
' b% ]* y. M- T7 a0 x{8 E$ m' ]( k- d3 f+ S8 T" U
}. c4 I/ \. K' {$ Y
7 p2 F  j; B' r9 d8 }
/*ARGSUSED*/! h  M0 w0 J+ {' \# g
void ufsta(char *param, int *retcode, int paramLen)
5 q4 l+ p9 J1 N6 \{9 N" K* M- o- Y: _8 B
}7 j8 w3 G- t4 F8 O
- a' N' I4 \, k  o: }, E5 w
int ufusr_ask_unload(void)
' b& Y! r; z1 Q{
9 Y# n4 \5 I! ]# f    return (UF_UNLOAD_UG_TERMINATE);( L6 U0 n+ ~, U8 O( \
}
3 P6 g8 F- z/ N' i' _# ^
3 d7 q5 t9 l* w3 Gvoid ufusr_cleanup(void)7 J9 Z$ d1 O: C, N& A
{
. m4 S( P" P/ t$ S+ z- S2 g, @% |, C    ECHO("NX is shutting down - running ufusr_cleanup\n");
( ]7 x, O7 l0 J. W& ?7 b% `8 E/ l% N9 S; t
    /* put your code here */( m: s6 L7 N$ m
}[/mw_shl_code]
, ^3 u) u4 N/ N0 Z0 L! Q5 y
上海点团信息科技有限公司,承接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
( i: C7 ^3 n# J7 d* X! P请问这个函数是怎么用的?有什么用?
3 K/ I7 l( ?) P8 g7 I& C
入口函数 改成 ufusr_cleanup # _8 w* @5 Z* Q  c& C( L
* i2 r* J; D& V% Y1 [' I' \, A
意思是 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二次开发专题模块培训报名开始啦

    我知道了