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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x

0 v, R5 x0 p; m9 s$ m! }- TNX二次开发源码分享】关闭NX后,做点儿事
: s' F: K% i( o; j; J) [
! V& ?1 d: f2 S2 o: P  x' G% H) Y9 B[mw_shl_code=c,true]/*
) Z9 O* e) ]% o7 V8 f4 u
+ e+ E/ M  {; g8 E+ D    ufusr_ask_unload is invoked immediately following the completion of ufusr2 p# m7 f" k. k, L
    (or ufsta when the dll is run from a startup folder) to find out when you) N: N) J+ v% t; K5 e3 ?
    want the dll to be unloaded.  If ufusr_ask_unload returns
: k' S2 W+ ~# I1 o4 n5 }8 b' l    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
$ ?6 i2 [+ z% v! L( H    unload when NX is terminating.  To prove to yourself that this works, set
+ R7 o& d8 n2 Y) Z/ l2 r" c5 Z& W    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not1 L8 r+ J) E, W9 i
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
$ M! _. e# P1 U1 t9 d# y" ?    Log File and make a note of the full path to the syslog which will be shown
2 N) X7 w' r5 K" U    as its own first line.  Run the dll built from this code (nothing noticable. z% q& B5 D, O' t3 h: C$ G- Z) @9 V. j1 G
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to- M0 N3 ~4 x# c; n5 @
    see this line near the bottom:
2 {' p: L8 S. N% l+ t6 C& S6 k- S, e
NX is shutting down - running ufusr_cleanup
; v# F( d- ~8 |" f% Z. O5 m2 ^" v1 t  r) t( }$ o
*/
5 k4 [& @. C* C6 h1 u: c#include <stdio.h>2 B( Q; n/ a- K  b9 O, E: ~
#include <string.h>8 G2 o2 B! p; {" J. {# z
#include <uf.h>" |& U' \6 k- j" q6 ?0 C
#include <uf_ui.h>
0 o$ t2 w1 N. M' Y4 _) ?; r0 G#include <uf_exit.h>; |. j7 C7 A- n1 V( T' m- V. i
6 q' G! t6 w3 C1 y
#include <stdarg.h>$ ^; d# {. \' |6 R# ~

% K' d) Q7 I; g5 Qstatic void ECHO(char *format, ...)
, ]$ Z6 J& I# j{
4 C0 n: s5 `' H/ |+ L3 a7 m    char msg[UF_UI_MAX_STRING_LEN+1];( b, Z, \2 G2 D% L0 X
    va_list args;: @( f4 U0 X- A2 s+ P; G9 s# y0 b
    va_start(args, format);5 u% z& ]& H/ P# Q& e0 G$ w, t4 \- Q
    vsprintf(msg, format, args);9 R& C: `5 [% L/ P# H
    va_end(args);
7 P% L) @' F' ~% a    UF_UI_open_listing_window();' y" s( X4 i; ]
    UF_UI_write_listing_window(msg);  Y% g! v/ H6 \7 p+ [
    UF_print_syslog(msg, FALSE);
* g6 l) }- C; _0 w}  n) m' k1 I" X4 |% t& r
9 _/ U6 O6 h% j
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))* h/ k) O/ p$ u: ]

2 D% W, h) c: i0 D/ t% o) tstatic int report_error( char *file, int line, char *call, int irc)
1 ^( ]# E& a5 P( p8 s! F{
2 u. N9 l) N+ [# W    if (irc): M/ E- `* s$ B
    {3 b2 F2 ~+ k1 b" z
        char err[133];
2 X) o9 }, d" Y+ Y& s5 f/ y
; U6 Q; E, `3 _8 V. F1 _3 c        UF_get_fail_message(irc, err);
/ J/ B7 w7 p& o6 s, D        ECHO("*** ERROR code %d at line %d in %s:\n",
9 ~/ f. ]0 C: h% n            irc, line, file);
9 l7 \4 n; H" P- ^( {' v9 I        ECHO("+++ %s\n", err);: N9 e( |5 C0 _0 z$ e
        ECHO("%s;\n", call);9 h# C5 h2 I7 _8 @/ m
    }/ e" W: ?  \" M7 B8 x" I9 |' W

- N( {/ T* K) \4 ^6 F  r    return(irc);6 a* v1 T+ ^9 y5 A: Q7 g) W3 \# A
}
8 J+ w, O! M5 R$ j, r, h" ?
3 a: `" {' `  }  \4 b  _) P/*ARGSUSED*/
2 M2 U, a7 ]! ~! W( {$ J5 kvoid ufusr(char *param, int *reTCode, int paramLen): e9 u% N9 _) l
{
; f7 u$ \+ d# J}/ M, V  v( l! Z3 S6 o+ E8 N
2 E3 L7 P8 e/ s* T3 N+ y
/*ARGSUSED*/! i; g* x- R: Y1 {" s! U
void ufsta(char *param, int *retcode, int paramLen)8 s2 q% c" ^' P( p' N0 h) p; ], Q
{
$ n/ g- m/ @7 V}
$ ^4 G  l& p9 D
# _+ `# y  y) |1 I4 i1 W( }! q1 yint ufusr_ask_unload(void)
( \& w4 l$ d9 Z; {+ s, C6 F1 l{% B# S( ?2 c! h" y9 b
    return (UF_UNLOAD_UG_TERMINATE);0 e4 W0 h  I) q- H9 z0 l
}
6 E1 M  P. J! T% S3 n
( G! G0 f% P* tvoid ufusr_cleanup(void)
" s9 H0 ]5 H7 [{/ G; i6 Y% T) z4 g' b4 {( }
    ECHO("NX is shutting down - running ufusr_cleanup\n");
5 P4 J- x( e& q! v2 _
: p% L/ v$ v' q6 k! j4 Z1 {& _3 U    /* put your code here */  _: g/ _* j& s- ]) Z/ J' z# G
}[/mw_shl_code]
2 W9 ~( @. v$ D# m. 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
" K0 B9 ]1 r5 K5 W% c4 j请问这个函数是怎么用的?有什么用?

! b- E6 W- a) x% \+ p入口函数 改成 ufusr_cleanup 1 d9 p' e, }+ ?  @
$ L; d# w2 ~8 O2 |
意思是 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二次开发专题模块培训报名开始啦

    我知道了