查看: 4494|回复: 5

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

 火 [复制链接]

6

主题

4

回帖

60

积分

管理员

积分
60
发表于 2018-7-12 11:12:47 | 显示全部楼层 |阅读模式

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

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

×

+ ~4 S5 `( C' V% b" ?0 k% ?【NX二次开发源码分享】关闭NX后,做点儿事% ]/ ?4 h$ E1 f. _& n4 V2 C  q1 c

% Z' r- C  D) }& ][mw_shl_code=c,true]/*
+ p5 U( e( c+ L& H8 a/ D; M& G. H. F, O
    ufusr_ask_unload is invoked immediately following the completion of ufusr
) O: \  S: f; y1 c# [3 A4 A    (or ufsta when the dll is run from a startup folder) to find out when you7 m+ U; Y# i* b
    want the dll to be unloaded.  If ufusr_ask_unload returns
/ U, f0 y# \6 u7 G2 G5 W" [: O    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is/ \1 ?5 j$ Y" [% D, m0 {6 T4 [; @
    unload when NX is terminating.  To prove to yourself that this works, set3 B- u* p, x& A0 L( k9 c
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not* ^9 Y% B$ d- w# h- S
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX1 k) z  s$ d; q+ b" o' g% q& ~
    Log File and make a note of the full path to the syslog which will be shown
7 L1 Z* |4 s/ Z, {    as its own first line.  Run the dll built from this code (nothing noticable( V5 _1 h; {1 l5 I' M2 h
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
. p# `2 v3 r6 m( _    see this line near the bottom:
  w& N- }4 z# V+ x8 f0 g! M
/ N0 G4 }' ]1 R+ t6 S: G) ]( j. J" WNX is shutting down - running ufusr_cleanup1 o6 l& L" r$ E) \7 [" f6 o

* l. F  k% O. L# H*// |3 ]8 G1 ?0 }4 i8 g4 f
#include <stdio.h>: T$ v0 ^& J9 Z" |, i
#include <string.h>
" G" i5 ?8 |2 W$ |$ x6 s) D#include <uf.h>$ n- L' M9 h7 z3 M6 @: q
#include <uf_ui.h>
6 e4 [0 u. C; x" K#include <uf_exit.h>
) E9 e/ u4 Y4 Z6 a6 V' Q
5 k) ?% e1 s6 c#include <stdarg.h>$ \, v# m; B# s3 W* x

: z8 M8 Q  V+ A$ C$ ^. Z/ n; Rstatic void ECHO(char *format, ...)
5 Z) I. h7 R1 k5 ^4 m3 L) P$ n1 B{+ L+ ^& d' h. i* W" j/ ?* [3 l
    char msg[UF_UI_MAX_STRING_LEN+1];
; S% C2 G  o6 v9 ^    va_list args;
4 S7 N5 v7 ^% [9 b5 v  }    va_start(args, format);
# h5 e- \0 i8 x# Y    vsprintf(msg, format, args);! i+ j# x$ h) t7 n* z4 j
    va_end(args);
5 _2 D& |/ R' J9 S* h1 S    UF_UI_open_listing_window();
/ r( _# ~- [6 b5 \1 T0 P1 t    UF_UI_write_listing_window(msg);
7 k, J. F& j# L- i    UF_print_syslog(msg, FALSE);7 w5 N5 F0 q& E7 E& k
}
7 w* l, s9 [  p. ?# U6 Y" G1 A% d( ^  R% [5 @4 N: ?
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
( V$ _. m; P$ g5 ~2 H# _# _0 W4 h, C5 s, [, k  {
static int report_error( char *file, int line, char *call, int irc)0 X: W- `) H" ~2 G! m: _
{* R" c6 K$ D0 |+ D$ n" M9 H5 W0 J! t
    if (irc)
! C4 T5 D% t8 k) _1 L    {
0 R1 a7 c3 c: w: f        char err[133];" h. F1 }! G  x" z6 B" l
. {, d% q+ P, R! }' w
        UF_get_fail_message(irc, err);
. R& {$ e9 ]2 n        ECHO("*** ERROR code %d at line %d in %s:\n",- \4 e4 }  G3 q9 J  Q" W/ i. m
            irc, line, file);
$ |4 U8 u% N& B( X        ECHO("+++ %s\n", err);8 \. k3 ~+ L! V
        ECHO("%s;\n", call);
8 J) m+ I% Y+ w% j# ?, n    }
% c# N7 p( R0 [
/ l" j/ J" j! b    return(irc);
* u+ @3 o1 P  s4 t}
: t1 ~. w# n4 N/ Q( ~& w  c6 a* Q" s' h: _
/*ARGSUSED*/* K5 C7 B  b! `6 O" u: k8 w/ `: @
void ufusr(char *param, int *reTCode, int paramLen)- L  p/ n$ W  |" M$ m5 t8 r- g
{
2 P( m0 ?! C; R, D}( u2 i& Y* G$ ^; }, t9 N/ Z
8 p: R3 r7 y: V7 K" s, X
/*ARGSUSED*/, i/ d: |6 V/ B. _! k
void ufsta(char *param, int *retcode, int paramLen)
2 \+ |  s6 q. e) i- [$ _% e. m{
! Y* h9 X1 f( x( L7 x) c}
. c$ c6 r9 f. e/ T% P' r( ~2 Z: q5 `$ G
int ufusr_ask_unload(void)
5 h9 K& |: N- s- p. T{
# m  u* h; g( g1 @3 Z+ K    return (UF_UNLOAD_UG_TERMINATE);
- _" {, d1 y, [/ c9 D9 s}9 s  m+ c& c  b) a5 ]

! s- E# W/ f4 Z. T" z* Mvoid ufusr_cleanup(void)
% S. H* E0 X+ \% J. O. q{' J& `, m/ u/ }1 u" k' u
    ECHO("NX is shutting down - running ufusr_cleanup\n");0 {$ {) ^5 [4 l( r! O4 J
6 n, U( r% r% ?' o
    /* put your code here */% V' v8 I3 V0 p
}[/mw_shl_code]/ h( x  C  E) Y+ j! ~: j0 E( z) H
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

1

主题

45

回帖

203

积分

培训VIP会员

积分
203
发表于 2019-12-25 08:49:24 | 显示全部楼层
请问这个函数是怎么用的?有什么用?
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

6

主题

4

回帖

60

积分

管理员

积分
60
 楼主| 发表于 2020-2-13 08:43:55 | 显示全部楼层
licxsw 发表于 2019-12-25 08:494 B5 c7 c- O5 r; k# \0 R
请问这个函数是怎么用的?有什么用?

8 e  `# J9 Q4 l, J入口函数 改成 ufusr_cleanup 2 s2 O- ^7 H1 Y: ^( z1 {
  W' c9 K. g7 b* K0 V9 v
意思是 NX 程序退出后,你可以做些事情 ,具体做啥可以自己写,就是个入口
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

1

主题

45

回帖

203

积分

培训VIP会员

积分
203
发表于 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.doteam.tech
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部