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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x
$ M" Y: j& f. l2 u& S. ^
NX二次开发源码分享】关闭NX后,做点儿事2 H$ F6 c+ m2 v( M1 C- B

6 D8 y0 G, G0 n, _- E[mw_shl_code=c,true]/*
8 p4 N0 M5 S6 ^! G6 s$ k1 d$ @3 c, o+ l
    ufusr_ask_unload is invoked immediately following the completion of ufusr
8 L7 P: e' V0 V7 b4 _. @2 U0 f% T( w    (or ufsta when the dll is run from a startup folder) to find out when you
. {3 C9 Q# f: z0 A- x1 E    want the dll to be unloaded.  If ufusr_ask_unload returns
; c; p: x  B8 Z+ j) G9 s( m( s    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
% B* |. s. a) Y* G6 d    unload when NX is terminating.  To prove to yourself that this works, set
% i) S& e1 `5 r" F# J1 |% v# X    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not
2 \: \4 ~; K( J! b: E    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX1 f* j* ?2 G" z0 Q" z! ~
    Log File and make a note of the full path to the syslog which will be shown
4 X8 ]7 D; w2 ?4 \    as its own first line.  Run the dll built from this code (nothing noticable! t' K5 y1 T$ g7 D7 g! u
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to/ V! W- z8 k2 I+ y8 K4 T
    see this line near the bottom:
& Y8 G5 R$ l+ i6 P" ]- f2 L& v# h: R6 v& D
NX is shutting down - running ufusr_cleanup
$ p$ H0 n8 d( ?
1 I* D$ g2 w+ o, h4 U+ \. W+ z1 L/ R*/
9 z$ t3 q; P  X) @+ `7 g( _#include <stdio.h>
+ D" l7 _& A+ c$ s3 V7 _+ }% |4 z6 }#include <string.h>7 K0 s3 s7 _3 g
#include <uf.h>/ h) @; m2 i* F5 S2 e! u8 p
#include <uf_ui.h>0 |- O2 J, T! f2 i5 e
#include <uf_exit.h>0 u+ X. |2 P4 _$ L, a$ H

+ b9 R9 a* x; T0 Y5 c% C#include <stdarg.h>% v" u8 w! O$ ~5 C

$ E$ ~3 T$ ]  cstatic void ECHO(char *format, ...)
' R7 z( d- |: l" m0 x8 W{
  y  e( |% |7 h+ K1 Y    char msg[UF_UI_MAX_STRING_LEN+1];
: F1 _, {( x, \5 K5 H% u    va_list args;! X, y3 N: a8 w0 R$ Y4 B, |+ r
    va_start(args, format);& W" N, e3 p5 ^7 X- j8 r
    vsprintf(msg, format, args);6 ?" F6 l0 C- Q7 n. n: N, _6 E
    va_end(args);
# c: r& s  d, `3 f" D" A    UF_UI_open_listing_window();
( M; ~9 v* \1 Z+ [, d3 n9 n3 Q    UF_UI_write_listing_window(msg);
% O0 t# F; G; v5 ]5 z' g    UF_print_syslog(msg, FALSE);! n8 t, h# l/ o' E( x( ~  ]
}
) t- a# X8 ]& f+ B% O8 ~3 o2 b5 [) V, c0 t2 B
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X))); U) t) q2 X5 K( {' q* ~! Z* l
3 N0 w& n6 k3 l* P/ R9 H
static int report_error( char *file, int line, char *call, int irc)& n2 ]- r. ?+ D- Y  {' n. e4 Y; L
{
% P) t+ A" C- W' O. \; P/ l    if (irc). w4 I' V0 Y( X' E
    {
" ]$ I# H* K, H! d  v. q        char err[133];# q6 I* l& C! ]" |4 d

& |6 e/ T# s6 Q( ?$ x5 F$ K# [        UF_get_fail_message(irc, err);
. ~8 A0 s! T9 U1 N0 p        ECHO("*** ERROR code %d at line %d in %s:\n",
, i9 }+ y) V% D+ S6 p            irc, line, file);
7 t, i+ c# T2 F: }5 T1 d# A        ECHO("+++ %s\n", err);
* X6 y' w, q, E. E2 b. h0 q        ECHO("%s;\n", call);8 H+ m' e0 R" f/ z; s' \
    }, ^: p5 c8 Z0 k. S
1 T# n! t4 s5 m! P1 n) ~6 s0 [
    return(irc);
7 h  G2 `7 m" T* i- i$ l' K}
+ T9 @7 O5 E, N# ^. Q5 _, o+ c! m# c% H0 ~' F, q2 k( g. x
/*ARGSUSED*/
0 u: v2 E! w5 qvoid ufusr(char *param, int *reTCode, int paramLen)5 L9 d0 J5 T4 N6 |4 h9 F; }
{
* |& r( O+ ~% U}; s; c$ s- w) ~- |( U

9 d- u: W8 z$ u% E) q' V/*ARGSUSED*/; a. `/ |2 n- V8 v( ?/ @
void ufsta(char *param, int *retcode, int paramLen)' \: ?# M* ]9 V" e1 O' ^6 Z% l
{4 F) R! v8 E& f. z$ v: {) r
}6 p  N- P4 ?" Z4 \
4 Q2 l6 Z& Z* O9 X) w5 F  L
int ufusr_ask_unload(void)
+ ?; \8 O7 P, |{8 Q' X4 `+ ?  D5 H4 J
    return (UF_UNLOAD_UG_TERMINATE);
" z/ M2 a% V" b8 U}
! L; v) {0 r0 B6 I
- v) |/ R+ x7 Kvoid ufusr_cleanup(void)+ r; C, A1 z" h% l
{
! l2 s: A3 M- }* I! k    ECHO("NX is shutting down - running ufusr_cleanup\n");( x- N7 c% f2 r) j, Y  Y

: M! u9 h+ m$ o' b- U  ~    /* put your code here */
& k; e5 Q! T1 B}[/mw_shl_code]
* c: s# I, _* X+ k$ p0 A
上海点团信息科技有限公司,承接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+ P, A; \; t6 ^) Z
请问这个函数是怎么用的?有什么用?
* E3 _8 L% l2 Z
入口函数 改成 ufusr_cleanup 9 v* ^" j5 k8 v
  w9 o. P. z0 ?- C5 T. M' ~
意思是 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二次开发专题模块培训报名开始啦

    我知道了