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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x

0 Q+ J9 i8 |4 d5 D+ L+ c( eNX二次开发源码分享】关闭NX后,做点儿事
' e- x2 D1 F. q6 {& l8 I& r
+ V& L7 g1 F7 V[mw_shl_code=c,true]/*
' p1 A& ?' h1 o% q
6 S2 a* x. p& D: O* h# e    ufusr_ask_unload is invoked immediately following the completion of ufusr9 R/ e3 u! S: c/ z% ^
    (or ufsta when the dll is run from a startup folder) to find out when you# A% \; q5 v7 V+ O7 n# Y$ F+ }
    want the dll to be unloaded.  If ufusr_ask_unload returns1 _$ L2 p5 w# P$ y6 u
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
, N2 p# [. m( `) t- Z, \    unload when NX is terminating.  To prove to yourself that this works, set$ g% t, `4 _% D
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not
" K/ y7 L" W7 F; q    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX5 }3 d5 R) h- k9 U3 y
    Log File and make a note of the full path to the syslog which will be shown* ^% \5 V- S9 c
    as its own first line.  Run the dll built from this code (nothing noticable
' c( c/ q7 R5 w( C3 P    will happen.)  Exit NX.  Find the syslog and open it in any text editor to9 l7 E* p/ h/ r1 K  d! [+ D
    see this line near the bottom:
5 D& T$ G3 g6 z/ I1 d/ r; o
1 {* m7 R, `; |! c% J9 i/ r$ J" zNX is shutting down - running ufusr_cleanup
; a9 f) O+ U  u  k5 b" p2 x8 O% W4 F" j/ e- J7 X
*/
$ \; s; [) X# [4 q8 {8 I#include <stdio.h>
, S3 C7 G# i+ z, |#include <string.h>
+ }! |4 ~3 G* N5 S! B$ d; o2 P#include <uf.h>! E' L, J4 {+ I: [$ M% a0 F; S" o. P8 Y
#include <uf_ui.h>8 i( p0 L2 {$ @+ Z8 K) h4 ?
#include <uf_exit.h>
: d; N: a1 t$ _0 ~3 u- m3 p# }' k+ Q
#include <stdarg.h>/ G( ]" r3 s. S2 F) x

- ~+ }" v  f# g9 ~4 v, Qstatic void ECHO(char *format, ...)
& v! j# }7 x# z& w! J, l{
0 R( X7 l3 c4 r" a5 w    char msg[UF_UI_MAX_STRING_LEN+1];! @5 c* J' B0 y. y; c
    va_list args;  f( e/ q; u# n5 k! V# s8 H
    va_start(args, format);5 _; r6 D6 C9 z
    vsprintf(msg, format, args);+ n0 ]# `& w1 q& f* U% A
    va_end(args);
' r6 [) M; s0 Q    UF_UI_open_listing_window();- |  b$ Z! V# b' h7 }
    UF_UI_write_listing_window(msg);* J$ ]% N4 v! {- C' m. X
    UF_print_syslog(msg, FALSE);
8 ~$ U; v' W: P; A* [}
. `6 Q9 S1 x5 E
3 T: M& ^' Y% V+ P5 _; q# y9 }#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X))); `" Y4 O4 O# b
0 z9 G6 g! j3 U$ @2 L
static int report_error( char *file, int line, char *call, int irc)' s! Y3 A+ a+ B3 i2 E" y
{, z) Z( n; K" |( Q2 q  |2 `
    if (irc)
, x/ k! G% t$ P: B( T4 [& o    {
, z6 ?9 W# Y; ~0 r7 a' b        char err[133];
7 \# V# o1 \- L
. ~% x% J# L+ Z  K! A        UF_get_fail_message(irc, err);
4 h1 Q7 ^1 l( v/ x        ECHO("*** ERROR code %d at line %d in %s:\n",6 @1 R/ T. M3 R. T9 o# {
            irc, line, file);
3 X9 L: P6 \  e0 R3 t        ECHO("+++ %s\n", err);
4 @. {1 v8 Q6 E0 q1 W        ECHO("%s;\n", call);% ], Q: k( w% @2 ?. C: w
    }% C9 {" g; S" p# G+ K7 X

. T- f* V& U: [) [2 J    return(irc);& R* h( f9 u5 l9 u& X$ E$ w& q( R
}! \" z( C/ e0 R" ^9 O: ]
- _: s  y0 }$ l* ]) m1 f/ Q7 o* u
/*ARGSUSED*/
9 S, e6 z  x) Z% d9 }void ufusr(char *param, int *reTCode, int paramLen)$ V* c( [" k' k0 `
{
( R3 E# `/ I( u) ]% J  a: o. t}
0 d1 l* Q  b% ?% s: S( E. A: t6 m3 m+ J; F5 T7 I4 T5 W
/*ARGSUSED*/' |! q1 O8 [5 q  B) f
void ufsta(char *param, int *retcode, int paramLen)3 S) F9 X% b. k0 E1 Z8 l
{
2 r( P$ N: ^9 h" ~  c9 S' ~) e3 o}
( p+ A5 s+ v: P  q+ T% m" W. d/ k' M( [. d; c* K" S
int ufusr_ask_unload(void)
  ~+ g! C8 S1 P, U2 V* y/ a  W' F{8 g9 Q) U* u9 C' A) \
    return (UF_UNLOAD_UG_TERMINATE);) A5 M5 r% i  T* J$ j7 t; F% f
}
% v6 U  ?7 ]1 p, h$ {0 L, {6 M/ k" a% [/ J5 l  I
void ufusr_cleanup(void)
& \7 L4 B6 q+ C3 U; B1 Q6 a: y2 r% Q* Z{+ t7 h0 M# ?  ~1 t/ s) z$ d$ m
    ECHO("NX is shutting down - running ufusr_cleanup\n");
5 k2 o6 s. Z8 b) V: F
8 L5 Q2 k6 ]0 O8 z0 s# y7 d    /* put your code here */
1 q: ~, z" w# \* }}[/mw_shl_code]- |# K+ v9 y2 ~9 l" Z. h) B/ Y0 H
上海点团信息科技有限公司,承接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
6 Y+ J: M6 u, B请问这个函数是怎么用的?有什么用?
( X  C. G# u9 j' a9 I: h9 Y6 l' S
入口函数 改成 ufusr_cleanup
% g$ e0 z0 a% M* A8 W) E1 T; D) B# O; ]
意思是 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二次开发专题模块培训报名开始啦

    我知道了