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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x

4 h8 n8 ]; u5 Q4 }2 qNX二次开发源码分享】关闭NX后,做点儿事: G9 C1 y; a. _( w& ?: P& W

- H( e2 S8 }4 _[mw_shl_code=c,true]/*4 g) a4 `! S0 t( x% h0 G6 x
$ M* ^; B/ f* h
    ufusr_ask_unload is invoked immediately following the completion of ufusr
$ J6 T" D9 y3 S& d4 i4 c    (or ufsta when the dll is run from a startup folder) to find out when you
9 z& E  e8 L& [! _8 s    want the dll to be unloaded.  If ufusr_ask_unload returns9 h' A% V; {9 B* z& m2 I
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is3 @( \: \6 P! P6 l, F9 b5 v: j
    unload when NX is terminating.  To prove to yourself that this works, set. A4 [" w' B# `' I
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not$ G4 Q5 ~" A; t* o( s9 F
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
, }3 x  Q8 U6 ^% J2 E/ O+ N- e    Log File and make a note of the full path to the syslog which will be shown
0 E( j$ ?# S2 F2 ?0 d) `, r* O* J    as its own first line.  Run the dll built from this code (nothing noticable" J* U7 Z+ r2 s3 R
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
/ T% ^) |7 ^# Y: n5 O+ @    see this line near the bottom:& D4 P* v) b; h+ y

. [6 R# _' m1 kNX is shutting down - running ufusr_cleanup
5 p/ v4 a2 }9 Z% P2 {6 J4 `. J+ D$ ?, s; M7 h  @
*/9 I. T( G) m- m/ [; i$ T0 A; a
#include <stdio.h>
7 X6 c( T8 T& Z7 y5 E! A#include <string.h>
, ?5 e2 {& s7 r* x! X+ S, i; v#include <uf.h>* M9 T- m& h, z1 _; F9 x
#include <uf_ui.h>
3 E! T& q/ r7 h3 S7 `- U& Z#include <uf_exit.h>( T% I/ A1 ]3 Q' S) x. j
, F0 i/ U8 V: |2 m: v4 ]4 X) K
#include <stdarg.h>
0 j( I$ b$ b( O4 G
( x' y* b( i8 W! [, Dstatic void ECHO(char *format, ...)
- n- L$ ?. e9 X# A+ q& s{
# x! ~2 g4 ?& ~' O; X7 w    char msg[UF_UI_MAX_STRING_LEN+1];
! ~" [% B9 A' r+ u1 @9 D    va_list args;
) ~; w9 l& L+ v3 ~    va_start(args, format);
: ^" x$ p5 n. \' }% G1 l6 u, A4 i    vsprintf(msg, format, args);
2 j( U! \0 R9 F' ?& H0 I. W2 ^  x    va_end(args);
4 h/ f: M) V/ s$ o! O    UF_UI_open_listing_window();4 q0 c2 S! |8 s" e* L: C
    UF_UI_write_listing_window(msg);" r/ _5 v; u  I8 v- a4 C) i
    UF_print_syslog(msg, FALSE);2 V/ x4 Z% G8 c; [- t$ G' c' G! \! z8 H
}9 D7 m! A( G6 b% R

3 [7 b$ g% B2 ]6 }#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))! ?% K+ Y$ }3 b2 }" a) n
5 i; ]5 c' C) g% T0 e
static int report_error( char *file, int line, char *call, int irc)( z* _! P1 Z' `
{
' D( R6 J% r% F$ a- ^1 f- ?9 ]    if (irc)( T- k: \: q: N; A- o) J2 Z
    {
1 q8 e/ m; D/ t% Y! R+ c        char err[133];
5 F/ W  [' h4 t: D
: J9 Q! G/ c5 [& b" a        UF_get_fail_message(irc, err);7 u4 X7 N6 M) L9 o  w5 m$ u
        ECHO("*** ERROR code %d at line %d in %s:\n",
+ z1 _1 b# t6 g3 u( s. {            irc, line, file);" z' V- l: F, h6 v/ N5 B* }
        ECHO("+++ %s\n", err);1 L8 N- N7 |1 p; w
        ECHO("%s;\n", call);6 T, F! a! u' ?& m) G% y1 e
    }
  f" Q% [% u1 Q( a( Y6 B; t1 a" A5 o
    return(irc);1 {( d: D# E# b  y) s" c. W
}
+ d# S/ i; T6 Q2 r2 }
" h* h' G6 Q* b/*ARGSUSED*/
$ r* G& t" ]# r( dvoid ufusr(char *param, int *reTCode, int paramLen)$ D2 ?2 j& `9 L
{
8 f. u  q$ |0 B7 Q* ?  }}
9 [, p8 r. D7 m) _$ v( J! n7 T0 K* H" `/ A) p/ s1 S; O* H. E% V, S
/*ARGSUSED*/' G2 s/ j) `: L5 X7 d
void ufsta(char *param, int *retcode, int paramLen)4 W4 g* N8 V  i8 R3 @( A9 _! b
{
7 K  b" o6 }  C. {3 V) Q, i. F0 l}; I( O6 A/ L4 `( e4 t
) E: ]9 I0 X; ~; U4 K( s
int ufusr_ask_unload(void)
" n, ^3 d+ b; j: W1 C6 M{
% J0 @9 p8 r# b2 @6 o    return (UF_UNLOAD_UG_TERMINATE);. x4 I: a5 i. k% s
}3 k  S1 |6 c. ]7 G

- c, D7 J" `# R1 o3 L, {& X; evoid ufusr_cleanup(void)
9 J# o) _+ v( m1 X& F. _* d{; K, [+ G2 a0 B  U/ O. p
    ECHO("NX is shutting down - running ufusr_cleanup\n");
* g& F2 [7 j, T: q$ W6 {$ l$ p
& R; n+ p. D' `- ]0 d$ q) L3 ^    /* put your code here */; C' T  H* b5 F
}[/mw_shl_code]
* r8 W6 |8 q* p/ K( T: o* @6 l9 M
上海点团信息科技有限公司,承接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:494 n+ l4 t8 i- f8 z5 i% D& i5 W. Z5 b- Y
请问这个函数是怎么用的?有什么用?

$ Y! Z7 X: v( P入口函数 改成 ufusr_cleanup
  m1 n; J3 H% z7 F" t1 T5 Y! U  k" G5 z% ?) Y* L+ f" o- I6 G
意思是 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二次开发专题模块培训报名开始啦

    我知道了