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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x

" J' k  a/ E8 H, o# ?1 T5 fNX二次开发源码分享】关闭NX后,做点儿事
6 b/ t0 f  ^$ D7 [& W& I* h; \$ J: W6 I9 g5 p& a  s: A
[mw_shl_code=c,true]/*
* q4 A) b* m) Z- b0 i2 G
( o+ h  X" D! N  t5 m0 p: H    ufusr_ask_unload is invoked immediately following the completion of ufusr. q& }# E( o: m) g6 p
    (or ufsta when the dll is run from a startup folder) to find out when you
. H( F# I- Y! e! U0 H4 _/ S    want the dll to be unloaded.  If ufusr_ask_unload returns8 S% P" K$ S" G$ L' a5 ~; c
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
$ L- ^9 q0 F0 O    unload when NX is terminating.  To prove to yourself that this works, set
  Z" @; g8 `% S6 z+ p" B9 }    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not
% m6 B6 u5 J3 i& n    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
/ M5 q' C  M7 h. c0 r    Log File and make a note of the full path to the syslog which will be shown5 X% r/ }5 R" C5 I, t
    as its own first line.  Run the dll built from this code (nothing noticable# T3 w6 A. W6 ~1 @. W
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to. R; z& A) N" y2 Z" u' G
    see this line near the bottom:
2 c: U. D4 O( y; e, ~3 k: B
2 D# k' b- |4 x. `( GNX is shutting down - running ufusr_cleanup, j+ {' T" Y; |) n
( N) L: D8 {% N+ ^# D: m
*/
' E- G' t4 V! X#include <stdio.h>
& x: {+ a3 S) y& P+ r  p#include <string.h>
! X/ E- X" v$ [3 T( E0 l" |0 G#include <uf.h>; j2 E5 P( O- Q4 r
#include <uf_ui.h>
4 |8 K2 E, {4 x0 v#include <uf_exit.h>0 k8 V) E7 ^- I+ ]) J

; c$ x+ }2 z% F0 H$ U# j# v#include <stdarg.h>
- ]  x8 t9 Z; H- t0 B7 T! F# A
0 j, V7 r4 {  i+ T! Z2 Bstatic void ECHO(char *format, ...)
1 W( Y$ c: ?+ X1 }9 P. W{1 C( [9 e, P4 y1 U- K- R1 @
    char msg[UF_UI_MAX_STRING_LEN+1];' ?0 c& }/ Y% D& m" _1 F1 A6 q
    va_list args;: ~% e2 a9 ?5 r& j
    va_start(args, format);+ W' H5 z0 w$ h) x, ^
    vsprintf(msg, format, args);7 @- c# H( P* W; \6 d9 P* f- x
    va_end(args);7 f* I4 M. _- b2 M- \" V
    UF_UI_open_listing_window();" k( u2 \/ z- _& Y- y; u
    UF_UI_write_listing_window(msg);
9 P2 T5 E) \! b4 U5 k9 ?6 j    UF_print_syslog(msg, FALSE);
9 A! u" w- u) G# n+ K}
5 B6 @) H" ~8 Q7 E3 a& ^1 r. d( i3 {! _  t: a# V- L" d1 R
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))$ k) b  h& `$ J+ H- o6 O4 n0 a) i4 g
6 z8 F% G- }) Q& j) O6 K
static int report_error( char *file, int line, char *call, int irc)6 K6 H3 X- b: m$ d; o
{
; R0 v# w8 l8 K; W, t6 L; E' \2 G    if (irc)
9 r: H. j* E5 n  Z    {
: P( r) j/ M& [; T2 k        char err[133];7 g, n) U+ g% z

7 U; e( p9 d4 k# q        UF_get_fail_message(irc, err);
) j4 R' g2 T( b7 S; f# H3 W        ECHO("*** ERROR code %d at line %d in %s:\n",! h! s# _& @' N, Y" S$ p
            irc, line, file);
- M" |: C  W1 j        ECHO("+++ %s\n", err);! D9 F6 `' n* m; ^3 X; o1 D* _
        ECHO("%s;\n", call);
7 \' o3 O) x) j9 i5 O; }9 b4 p    }
8 Z6 [7 ]/ T: x6 _6 T6 k/ J
5 z0 b7 d* G! ~3 i( H- ?; m( \    return(irc);
- I: c$ @+ v( n; x}  W8 C7 S" f9 L. C7 v
6 |; n7 P, p6 J6 Z/ d9 [
/*ARGSUSED*/
0 a; }* M4 i1 ?. Nvoid ufusr(char *param, int *reTCode, int paramLen)! g$ C, K+ }  W& B4 |* N( ]5 d
{
5 b$ }* p4 V$ m3 C6 j}. f  K0 h" w: p
/ S+ `+ D5 l$ W- P5 r' m, \* Y& [
/*ARGSUSED*/; q" N. v& |: h
void ufsta(char *param, int *retcode, int paramLen)
7 V: G% [7 [4 A2 F6 f* T" ]{/ _$ K  c  x* t6 Z/ u
}; g7 ~, b, }. Y( k, u
% l% h1 r6 `. ]
int ufusr_ask_unload(void)
: Y8 {' J# f5 J: `( {) p{  E2 e, M2 _; K
    return (UF_UNLOAD_UG_TERMINATE);4 e) F" R0 [& P6 v6 |% r
}4 D8 ?! H, k  E2 h! H( e" j

1 H" v' O2 C+ J- ^0 J0 z$ @void ufusr_cleanup(void)
: S4 H" b5 p0 V) h# b{
1 X: X$ P% _7 K) b) L8 {    ECHO("NX is shutting down - running ufusr_cleanup\n");6 A( Q( m( d$ Z# Y" D$ x( e

, `5 N% I2 ~- k0 j    /* put your code here */
# {" ]0 X1 P0 n}[/mw_shl_code]. r) [; u3 x7 H+ h5 a1 x, N' }
上海点团信息科技有限公司,承接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
  H% k# f0 d- c$ K& I' m4 c请问这个函数是怎么用的?有什么用?
8 z( C2 v: r8 o! M' Y) ]2 W
入口函数 改成 ufusr_cleanup
! f& W2 ^$ S1 X1 ~7 C& U  |+ H
. v" B7 X- s" ?2 m2 B) W3 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二次开发专题模块培训报名开始啦

    我知道了