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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x
- e6 I3 Z/ e& o! C# Y% k3 G
NX二次开发源码分享】关闭NX后,做点儿事
; C& ?, D" ^9 T, G6 k" I7 \) m* L, ?6 Q, A5 n2 t+ M* o
[mw_shl_code=c,true]/*' {: U/ Y& S3 \; W- T

3 k  J9 s* e  B    ufusr_ask_unload is invoked immediately following the completion of ufusr3 }4 @  r1 c" i4 N
    (or ufsta when the dll is run from a startup folder) to find out when you
& @$ e1 v  u9 h9 ^. p( f    want the dll to be unloaded.  If ufusr_ask_unload returns0 e9 v  Q" j% ^" v& Z5 x6 j3 q
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
( n0 I8 P% n8 W5 Q    unload when NX is terminating.  To prove to yourself that this works, set
( i) v4 h. X  d2 \" ]    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not
! H, F- t  V5 B& J7 R    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
$ d' Q4 S$ u6 Y, R  d7 Z+ o2 R    Log File and make a note of the full path to the syslog which will be shown0 c1 ?' n9 {) |4 l8 O
    as its own first line.  Run the dll built from this code (nothing noticable( N9 x0 t5 N% _7 t) S
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
' z/ `9 v: Y$ g$ i9 o    see this line near the bottom:
/ M( X1 k( h  _. Y9 o- f; G0 z
+ d, @# ^$ k9 ^" N, H2 X1 L* GNX is shutting down - running ufusr_cleanup  A* L* Z9 `- N6 F" Z% ?

" t$ w' D( f. Y# K4 M3 b% M*/
  M! R9 @) G+ h, R#include <stdio.h>: Z( |/ ]3 R/ K5 ?
#include <string.h>7 n) i& A  N) Z5 o; u. q7 ^
#include <uf.h>, |9 W5 @% x3 s% u, s8 Y5 j
#include <uf_ui.h>
  y: [# O) O& Z#include <uf_exit.h>$ m6 H6 j6 \8 v8 D; _( p
* c9 V. e' l- K- m$ U4 L0 L! {
#include <stdarg.h>
- x' N% a" C% J1 }- n' r# S; D; X+ z8 a) \7 b) k, u
static void ECHO(char *format, ...)
- O: l/ A/ N' e/ h{
. A- r% ]: ^9 s5 t, L    char msg[UF_UI_MAX_STRING_LEN+1];9 R. }; H$ j4 ~5 h& F
    va_list args;/ O0 G& t  u/ f! w$ }  M
    va_start(args, format);4 L+ E5 J7 {0 i0 _) K0 u# X
    vsprintf(msg, format, args);; L) O# z( M  m6 J) `  v
    va_end(args);
, m2 o  a$ f9 A4 n, ^4 o; V    UF_UI_open_listing_window();3 A+ y7 B+ {; i- x1 d
    UF_UI_write_listing_window(msg);
2 T, i0 _8 V; ^9 x  ?    UF_print_syslog(msg, FALSE);
6 t, q& @$ [' j) p+ O}) A6 p. }3 Z$ P. Z

" W3 W; r  F: P0 i#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
& o0 h8 h! N1 X: s6 E! A; g+ X$ q- y* b: d% I
static int report_error( char *file, int line, char *call, int irc)
3 P; L5 d# ]- _* ~4 [+ i* J6 e{3 q( \; V9 a' _1 I/ m% j+ M) g/ q
    if (irc)
3 l& U% k. H) R    {- u2 S8 x8 |, M- M& k
        char err[133];7 L  l! `; `# f/ j' B* e# U2 M
: ?; m) x0 F" {7 ]+ j1 _! g* w
        UF_get_fail_message(irc, err);5 J% A4 z0 v( {, v/ L, I
        ECHO("*** ERROR code %d at line %d in %s:\n",& a+ ?. R" R0 S: `- S( Y) f
            irc, line, file);. C  U8 |9 D6 M8 E- d
        ECHO("+++ %s\n", err);3 G7 ^/ u; \# k, I, n# e8 P4 m
        ECHO("%s;\n", call);
6 Q! E5 ?: v: U6 a9 J    }
8 M/ v3 ]0 X8 K! Q& L  D' V" d- C0 c- t& \3 |  m
    return(irc);
* X  K2 G4 X0 R8 F3 E" |; v}  S, C; I$ Y) z; w: @0 H+ K2 w% ^/ H
1 p/ d9 l( h- L7 }. \
/*ARGSUSED*/! R+ e+ B9 \* n
void ufusr(char *param, int *reTCode, int paramLen)
# L& g" d5 P! |4 o9 b: ~% c{8 u, m2 F8 g$ U7 X! h% a; r
}8 z# M; g0 p" F+ \4 R# I! I

% b1 O' [5 C* O; R/*ARGSUSED*/
, j" e( K1 E7 J( H1 D; I" Pvoid ufsta(char *param, int *retcode, int paramLen)
9 C7 k$ h0 m! J0 d' B{8 B" m8 o: N+ J. m
}
6 r5 |2 Y* F; N% E3 ?
' D- D: I5 r9 C2 b$ w3 P. m6 vint ufusr_ask_unload(void)
& F# [5 ?: I+ }* |* F{
- |- K9 Y7 @) N2 p+ J) J    return (UF_UNLOAD_UG_TERMINATE);
( p1 P1 M  y$ i% D: N& r( W. {* n; X}' @$ d) x: [- L6 J+ c4 D
; `0 j, @; q0 A+ m% \9 h
void ufusr_cleanup(void)
. b$ y; q; y" @{8 X- |3 J! _1 a$ E
    ECHO("NX is shutting down - running ufusr_cleanup\n");
) ]8 X: Z* D1 |' S  a. f
& d' j' P: C* L$ R; u, l7 e    /* put your code here */. H; v: L( g: X
}[/mw_shl_code]
! U1 l/ k& J, S
上海点团信息科技有限公司,承接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
7 m1 W/ d; {8 f4 J请问这个函数是怎么用的?有什么用?
: `; Q2 B$ x1 J+ H, f
入口函数 改成 ufusr_cleanup # G7 t/ g) l( F( r" z+ x

! d( O" ?# f# r2 u9 [% 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二次开发专题模块培训报名开始啦

    我知道了