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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x
9 J2 }+ d. t  u' `0 D% q
NX二次开发源码分享】关闭NX后,做点儿事% d/ A. p4 D! }/ N8 @3 c, R
1 a; [& @0 I- y5 X8 b
[mw_shl_code=c,true]/*1 P5 {" Q  ^( t8 @5 ?$ Y3 Z
6 l) ]  C$ R8 R, g2 L& J; ^/ Y
    ufusr_ask_unload is invoked immediately following the completion of ufusr
5 y' X3 l9 u, y    (or ufsta when the dll is run from a startup folder) to find out when you3 }7 N. U6 _1 @8 ?
    want the dll to be unloaded.  If ufusr_ask_unload returns
) Z! E2 q  e* D+ x- t, h    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
) c8 m+ e# s+ X" I' P    unload when NX is terminating.  To prove to yourself that this works, set  ?7 q" L1 I; f: _4 w
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not& I/ ~- h5 ^6 M# l, I9 W3 W) J
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
2 k) k( L) W6 K" C/ ]    Log File and make a note of the full path to the syslog which will be shown: Q* l  @* k  H. `& b9 O
    as its own first line.  Run the dll built from this code (nothing noticable- S  f9 ?6 e8 J7 c7 T/ `* }7 b% `. J
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
5 z( Y2 d) w$ O) Z1 w    see this line near the bottom:
+ C* Q! [0 d( s6 n# x
7 Z( J' o$ t& o' l8 V! zNX is shutting down - running ufusr_cleanup
- }& a# t$ N6 k0 u$ _& r9 b4 _: ?( k& q- s# T8 O! V- ^+ p! n  `4 T, g
*/
5 x2 b4 I+ S* B8 G#include <stdio.h>
5 s+ w' B8 C4 q2 w#include <string.h>
$ L% ~" Z' H. B" ~) a#include <uf.h>" Z/ R2 q& ~' E8 n
#include <uf_ui.h>9 f) T8 ?) ]& b" j  A: Y
#include <uf_exit.h>7 R( U1 x- A. l
& Z! Z4 l' z- g& W+ y
#include <stdarg.h>
/ G$ I9 Q5 v% p" o$ r' m& Y# Z, ?5 M# E% D3 i2 r
static void ECHO(char *format, ...)1 R4 L5 G) S% i2 I" P
{8 t' I9 q7 D* c* E5 P0 p, X( k, A1 v
    char msg[UF_UI_MAX_STRING_LEN+1];
4 R4 u* ~1 Q7 I2 r    va_list args;1 l! G9 F* P# ]4 W! W' G
    va_start(args, format);0 b* s7 ]$ X( _" L$ T* Q$ ^
    vsprintf(msg, format, args);
5 c% a5 \& _& [. l    va_end(args);' q9 \; u3 b5 m& p$ c2 d! Z
    UF_UI_open_listing_window();8 j% m. {' o+ B" B9 C0 P, B: s, ]
    UF_UI_write_listing_window(msg);
. L1 n1 s4 e+ G5 e# F6 o    UF_print_syslog(msg, FALSE);% O$ z' \( {$ O, s
}' U( m7 E0 m3 B/ Z# c' ?& F

0 q: e8 t7 B$ w" k1 X6 _#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
  E3 C$ r  ]- u. `5 j! {- f' V
: p& r7 h$ Z; `0 h  {+ z7 Gstatic int report_error( char *file, int line, char *call, int irc)
" M& S8 H1 E; c" L" U{
5 b. H7 G' q& d0 @    if (irc)( I0 F( ^* r; w
    {0 x' u+ G* y) `" T
        char err[133];, {  d/ q4 l, x) m7 h) o

. r) ]; E1 o: `  R( h4 h; _& n        UF_get_fail_message(irc, err);0 l1 U. @. n6 P# q
        ECHO("*** ERROR code %d at line %d in %s:\n",
; r+ e2 z3 N& I  U: I            irc, line, file);
' e9 Z' M! Y0 ^, l! b8 r0 U        ECHO("+++ %s\n", err);2 |& W+ m! c6 L0 z9 |! ^( T5 [
        ECHO("%s;\n", call);
+ z/ l5 {, h3 J+ j) P    }) P2 K7 F  w8 f" i/ V0 F; }/ ]# z
; h( t7 o1 P" t- q
    return(irc);$ X( r- P7 C" F" Y. r
}3 X8 a) e7 r* R4 K! W; b4 V

' K4 {2 V; d* m1 I# T  D$ g/*ARGSUSED*/
  ^; @+ [+ s! ^. p1 g* ?void ufusr(char *param, int *reTCode, int paramLen)
6 \$ i# j9 _$ G4 v, z{) x0 ^, r3 |* a  ]9 E" k) _* ]! S
}
7 G- e$ _- z# ^- B) w7 {% d6 O0 |( t9 U( M5 B2 `3 u9 W
/*ARGSUSED*/, I8 i' @* q# a6 N, f% p
void ufsta(char *param, int *retcode, int paramLen)$ X/ h; x) o- y* D: ]
{" F- v! v- K$ Q. Q/ Q8 S
}! O6 C; Y& u& I/ ^4 r$ |

: H: V' s/ V* d# W+ Gint ufusr_ask_unload(void)
: \4 M3 A) {) R" |' O{) m: ~; P+ u" R* s) q" F
    return (UF_UNLOAD_UG_TERMINATE);: n' L: H" e6 K( B5 A- i4 S% Y  m
}
; A# R7 W- X2 c2 O% m5 a6 n& G' J$ O% U" {
void ufusr_cleanup(void)/ Y0 B# Z6 h6 C* }" b- C( f' z
{
0 h& \2 J1 m. h4 o: y8 g( G: J) u    ECHO("NX is shutting down - running ufusr_cleanup\n");1 ]( Y3 d7 ?1 T

/ w. ~3 r* W6 u: x5 {    /* put your code here */! z& C! v0 x4 ]( b
}[/mw_shl_code]
" t# o5 U$ L$ g. X8 R; b
上海点团信息科技有限公司,承接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$ w8 t% o2 o3 P. u/ j# t& r
请问这个函数是怎么用的?有什么用?

  ]# N1 {& S( Q' [# E4 j9 u$ X入口函数 改成 ufusr_cleanup
% p( j- p; [3 E2 u# W  M% c/ W: H! n  r  W4 r
意思是 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二次开发专题模块培训报名开始啦

    我知道了