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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x
" J+ _% [( O+ \& c+ u# w1 P; |; @7 d
NX二次开发源码分享】关闭NX后,做点儿事
# {* k+ w; E- u" E) l8 D1 g3 u) g
; W  A% Q- u* K+ \; C3 @/ j7 p' t9 w[mw_shl_code=c,true]/*" e2 ^+ k3 k# x9 {

+ K- {8 O; a" C    ufusr_ask_unload is invoked immediately following the completion of ufusr
$ B  Z/ V* t) t+ ^) N3 t2 ?    (or ufsta when the dll is run from a startup folder) to find out when you
9 l! J; B* W" a1 l  }    want the dll to be unloaded.  If ufusr_ask_unload returns- V% |; R' ~: \* T) v2 \( s! P
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is, B; k5 x+ a% u/ z
    unload when NX is terminating.  To prove to yourself that this works, set+ o% m/ S9 N# x9 z5 ]$ I; e  Z( A
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not9 q+ R2 n! F/ A. o  H3 h& `
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
; v6 `" Q, V# ]    Log File and make a note of the full path to the syslog which will be shown. [6 |$ |& N0 i
    as its own first line.  Run the dll built from this code (nothing noticable
0 o' ]9 m! C2 v    will happen.)  Exit NX.  Find the syslog and open it in any text editor to% g8 H  A5 y9 j, a# O
    see this line near the bottom:# H$ Z( o$ I4 r0 u

+ k1 l8 v0 s  O! v& Q/ }7 YNX is shutting down - running ufusr_cleanup, V: V* y& L+ o9 P" ?1 K4 O

5 O! d+ z/ Y6 @& K( h' u0 E/ i*/
- K$ D$ T7 _$ I' v#include <stdio.h>3 M) o% b+ x9 }. ]8 ~9 p
#include <string.h>
( W( T4 g& P( s8 [#include <uf.h>% r" G# R6 f# |/ G; }0 ~
#include <uf_ui.h>
1 @% Y- n$ U$ O2 r#include <uf_exit.h>
: h. v3 p# y- v2 |8 j' Q
* j- y( V: N6 R9 ]( H7 `#include <stdarg.h>
$ ^( w; E; q% R) O: I. U2 M5 C8 y; P& e" M8 x
static void ECHO(char *format, ...)) w, Q* x. K8 |" l& U
{# p: Q% Q8 Y: X) K+ x" M) W9 ?
    char msg[UF_UI_MAX_STRING_LEN+1];9 J3 F8 u+ t# Q
    va_list args;
8 C( F+ G- h: q3 K8 |% Q1 F    va_start(args, format);6 S1 o2 \% B& i0 j: D4 p$ g  r
    vsprintf(msg, format, args);! @- V8 W4 c; o9 Y2 R) X& v1 O, U
    va_end(args);2 w. v( S$ G# q% S! D! x/ @
    UF_UI_open_listing_window();6 E- q- L5 m6 u5 M" [7 x
    UF_UI_write_listing_window(msg);7 ~. @; U6 E- Z% u) I
    UF_print_syslog(msg, FALSE);3 ^2 w7 Q4 m0 E6 t8 j6 u+ F" B
}
% f  S9 H. o" C$ a& M: U  v3 L2 a3 R9 ?) B+ y4 Q
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
& I/ {! k; ~4 K) h0 I1 {
# f) j  P5 P2 [% M& C0 pstatic int report_error( char *file, int line, char *call, int irc)  ?/ i, o3 w/ m$ g1 w. y* S
{' W% n$ D3 j! }9 I% F* N
    if (irc)
- V  Y+ r1 h1 i7 f: P" c    {
8 i" X/ R/ M8 e) t" i        char err[133];
2 U. l7 s: L6 X& V' h
  x( B: h# j* }        UF_get_fail_message(irc, err);, y% m1 `; z/ m- ]; s9 g# i
        ECHO("*** ERROR code %d at line %d in %s:\n",
' v- e1 k4 W9 U3 A, a, E            irc, line, file);
% f5 P9 }3 B7 ]1 O1 }; I        ECHO("+++ %s\n", err);
5 m* o& b1 K( Y        ECHO("%s;\n", call);( l! W) i. k9 F* u* g( D+ G* R
    }
( o0 H" c; u$ w7 b. ^6 b- S* O( |0 e/ H, t7 M/ q5 ~
    return(irc);/ r( y7 u' W+ d: I
}3 [+ f1 }2 ?& j% R6 |7 C1 d2 s
8 `! f, T! Q. J4 P" u9 X# V' B" v: q. a
/*ARGSUSED*/8 b+ t7 j7 G; |+ f* A1 K0 x
void ufusr(char *param, int *reTCode, int paramLen)* F6 T( q9 W7 c! A% @
{( H' A3 j/ E9 r$ U" @# R
}& k5 C: |! l9 h7 z/ N+ V

6 @2 D, S8 p- _% v* W, d/*ARGSUSED*/
$ `. D2 Z/ x2 d! w1 Zvoid ufsta(char *param, int *retcode, int paramLen)
9 n( n! Z2 k$ ^) k; ]{! c- b7 G9 V* h+ ~
}
, _1 i' I. `# V% _* L" y
1 w: d# [" f8 Nint ufusr_ask_unload(void)
3 ?, X2 R5 O; |( P' G2 |+ _{/ z- p" B/ z# y5 T: R5 {9 w
    return (UF_UNLOAD_UG_TERMINATE);- P  N+ ~; ?# ~; q* z( _. t
}
6 Z3 K- A/ n+ y$ E: {- P; G, p* V6 w# D  ]% V
void ufusr_cleanup(void)+ h& B2 h, V0 Z+ V5 ~/ \  {
{
. L5 v  v: L$ N    ECHO("NX is shutting down - running ufusr_cleanup\n");
4 h7 a/ \- O! W  [% T5 N5 A! \7 u( Y) P
    /* put your code here */( u3 V6 Y) W. a3 E+ k' E! r2 S+ @
}[/mw_shl_code]1 p, ]! A# ]  k) {( L$ Y5 l9 R( l
上海点团信息科技有限公司,承接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
7 }! E0 I/ h& E0 G/ o请问这个函数是怎么用的?有什么用?

- A2 l- O5 L& Y& C6 i4 H  _入口函数 改成 ufusr_cleanup % [$ c8 g1 I) Q- s7 b1 q- G/ j8 M% X
; }% L' z7 r- l5 H: w
意思是 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二次开发专题模块培训报名开始啦

    我知道了