PLM之家PLMHome-国产软件践行者

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x
2 B$ L$ w+ E+ h! \/ C# [
NX二次开发源码分享】关闭NX后,做点儿事
# N; i2 F3 [, J
) B% p0 U& S' t# Z% ?/ y* n[mw_shl_code=c,true]/*# f- b  v/ {) f2 c4 M8 C! [
; f; K6 K* M  o# r' W5 H
    ufusr_ask_unload is invoked immediately following the completion of ufusr
+ a5 ?+ e* z1 [/ w5 [( v8 ~7 n, t    (or ufsta when the dll is run from a startup folder) to find out when you2 u# G" m9 c8 c& v
    want the dll to be unloaded.  If ufusr_ask_unload returns1 g  t* V8 W8 R# g4 B5 `/ z
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
6 v1 }4 C9 w' F7 s    unload when NX is terminating.  To prove to yourself that this works, set
( s7 `/ z' E7 \5 Q    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not* }1 X: ^4 Y3 K3 `: n7 n# @/ E
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
6 h5 V  |; ~; P' c# P3 e. e    Log File and make a note of the full path to the syslog which will be shown  `1 C4 T: g9 j7 S, t6 k
    as its own first line.  Run the dll built from this code (nothing noticable) d6 q+ }" q$ G3 X2 {
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to  c5 L! i! X: L+ ]9 ~& ~) Q
    see this line near the bottom:
, `; j0 j+ F& P0 @' [- j7 D" c, C' T' k' Z$ f% k' X1 Y
NX is shutting down - running ufusr_cleanup
& U0 l9 B0 p3 S* l$ j. K5 Q# h. Y
/ }6 N9 H7 I  o! |+ J1 A/ H*/: r4 i. Z$ n( D+ J3 ]
#include <stdio.h>
7 @$ C7 p7 d& h  p) k$ J#include <string.h>
& L  A3 p  [6 u6 X4 `7 f, {( x4 n#include <uf.h>
9 K/ p; d6 m: g" g9 L( |#include <uf_ui.h>8 \. U6 N% R0 B
#include <uf_exit.h>: |* R# E3 R* d9 e- u
" [& `2 M9 ?& F, }" x# s8 k
#include <stdarg.h>
/ i& ^2 \0 z5 j/ |$ X
8 K9 n3 Q0 _( c& s3 b$ A# W! z. Tstatic void ECHO(char *format, ...)! ^4 T: y0 t$ Z3 g; F6 y
{' b4 X2 b$ w) u7 O
    char msg[UF_UI_MAX_STRING_LEN+1];
; u; W$ B" Q7 v- x" V) c! \0 \5 x% H    va_list args;
% F* K/ \$ W# n3 }: F/ i: n% `7 d! ]    va_start(args, format);3 h' k  ^+ P$ u
    vsprintf(msg, format, args);
; L/ T) c" E4 o    va_end(args);
7 t7 N+ [& R& w% f- d    UF_UI_open_listing_window();
! k) T" x7 p; B5 x    UF_UI_write_listing_window(msg);
1 C2 I6 e1 x: Y, ~    UF_print_syslog(msg, FALSE);% P3 P: u+ z' T$ }% l7 ], @1 m4 q
}
5 Z! _) g6 D7 e* ^2 F! m4 Y% z# L% g: {4 j9 S) V
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))! ^7 `; b9 [1 `  c$ @

; l* j1 X0 Z% d7 v- A! A  u% dstatic int report_error( char *file, int line, char *call, int irc)8 C) S* P' n  r8 y+ E
{
6 Z3 @  n9 w$ R4 C& l    if (irc)
. ]! k' D7 T4 l& i& D2 ^$ J    {
- Z0 n! P" D# A/ |        char err[133];
* a! w1 ], B" B/ D1 z; Q6 ]6 i/ j; X
        UF_get_fail_message(irc, err);
; \" i$ A) s. V0 D; |        ECHO("*** ERROR code %d at line %d in %s:\n",8 i% ]6 k; F& _! F. v, X" M9 V
            irc, line, file);
: E% ]# @; @$ B" N- |, H6 C        ECHO("+++ %s\n", err);7 C) ?! Y0 r) P; {, N5 W
        ECHO("%s;\n", call);
/ Q1 N5 @+ D. @' T$ \+ J% I    }
1 @" J& R1 Z% `, L8 {! h' \6 H4 p9 l! t/ g% T1 e! {! \
    return(irc);
2 i2 `. F# G$ C$ T}
# W* p2 {- L# t; r$ R9 ~! T" F5 U2 k& J7 ?
/*ARGSUSED*/
: t: {2 U$ C/ X5 ]* \void ufusr(char *param, int *reTCode, int paramLen)2 |4 W- a  t3 A+ b! y) G
{( @7 G# i7 q: y; |
}! x( e& T3 x% ~2 h8 n6 v

1 d/ E* z; @- w5 [  a$ A3 h9 W/*ARGSUSED*/
; C! m4 b& d) q& J' f; ]% ivoid ufsta(char *param, int *retcode, int paramLen)
- X' |! z* ]  q: }/ ?8 J/ v; w# ~{
/ J) B' w5 w) i! K}
9 m5 e; `( x! P( Q8 ]( v
/ N) p1 D. F: F/ f0 t9 kint ufusr_ask_unload(void)
* S. U% S. d- B, ?3 \* t! u  u{
6 q" j2 ?, z6 w& h8 g7 g    return (UF_UNLOAD_UG_TERMINATE);
/ f# S. b: T, N9 P}
& P* n$ I0 t  Y! |) V$ U+ R, g+ R
void ufusr_cleanup(void)( r  E3 O+ B# e
{
# O+ u7 C# {# f' F! F    ECHO("NX is shutting down - running ufusr_cleanup\n");
2 c1 ]3 C) o, {! }
' p$ o- ]; G$ U  A+ p" E! B: q    /* put your code here */, d. O& D/ ]  I) S
}[/mw_shl_code]: E2 D5 o0 S) ~& N5 ~
上海点团信息科技有限公司,承接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
4 [! P! a; T  v" j; ~+ s( n# S4 k/ h请问这个函数是怎么用的?有什么用?
; x4 \! \  y8 q$ @% M% D
入口函数 改成 ufusr_cleanup
/ i3 H) e$ G8 g5 [9 N, G& X! j  v8 ^% I% J3 ]' y# [# I
意思是 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二次开发专题模块培训报名开始啦

    我知道了