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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x

0 H5 U! i$ M  [. r6 `3 j3 jNX二次开发源码分享】关闭NX后,做点儿事/ L# U8 P! p4 e; T) X
% Y( q: ~# u$ w' ~
[mw_shl_code=c,true]/*+ e' y6 u1 z* K0 K+ D/ G- R1 S

6 K) }. k. I1 \    ufusr_ask_unload is invoked immediately following the completion of ufusr9 G( n  V, p0 n% _) W5 K0 A
    (or ufsta when the dll is run from a startup folder) to find out when you
9 H( P! [6 `1 U8 l: t/ X4 {9 I+ ~2 `    want the dll to be unloaded.  If ufusr_ask_unload returns' O, X; F& w& u& m: m! y& f6 n
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
2 r* G3 \& q7 ]! P5 }2 t( ]    unload when NX is terminating.  To prove to yourself that this works, set
, C4 [% ?/ ?% i    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not
; n  U  i  b8 E# c" D  R) Y    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX8 R) K: g% V! P. Z
    Log File and make a note of the full path to the syslog which will be shown8 |% @! c9 v! z: s9 L
    as its own first line.  Run the dll built from this code (nothing noticable& x) L5 b' G1 S' v5 a3 V' _
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
/ m/ A6 M: R) @& D( U    see this line near the bottom:! O2 T, U3 U# {- ]+ O( c

+ K) _; {- {* O$ fNX is shutting down - running ufusr_cleanup, |4 c' C( h9 \; d' J$ H1 H
* ?7 ?# s% r1 E+ Y
*/
) ~' N" A8 E* Z5 ~' O#include <stdio.h>
% G+ D+ I# T. t#include <string.h>
. c1 ]2 Q% j, O4 n1 \& ]#include <uf.h>
5 q% F6 \$ [5 G, i% l- e" ^  b- F; z#include <uf_ui.h>9 H  i) i7 z3 U8 c
#include <uf_exit.h>7 p) v1 p; D5 R! p  l/ f

# _, X4 \4 L& M& s( `. g% {" |#include <stdarg.h>
6 k0 ?% t+ w8 u9 o9 P  d+ ?' K7 B' c2 ~9 r/ [" e
static void ECHO(char *format, ...)
  g* t4 W2 F. R{* S( Y$ \# e+ B& Q( t! [
    char msg[UF_UI_MAX_STRING_LEN+1];' @" e9 F3 Y4 B1 x
    va_list args;# R) c( l; I$ k0 g, w
    va_start(args, format);* x$ C) c" h$ i! r% B) r
    vsprintf(msg, format, args);
) r$ _# e, z) W0 l6 n    va_end(args);- G7 @# f+ d' _
    UF_UI_open_listing_window();) H" [3 O* T1 \) J
    UF_UI_write_listing_window(msg);
& ~2 `; B) C7 y+ E2 M8 w! ?+ O    UF_print_syslog(msg, FALSE);
+ ^+ E4 u; o/ w, y3 v6 G8 E}
2 a3 N! d7 w9 l8 A, ?. p* }
+ i' I7 G# m% \6 G& F2 r1 x#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))- r; a- a3 `' D  |
6 J# ?' \9 Y( k- g  b% K
static int report_error( char *file, int line, char *call, int irc)6 P9 O1 F0 [1 U6 X2 x
{, Y5 [1 a/ w9 q' V6 `1 H& }
    if (irc)
' w0 y9 F8 r+ w/ V0 W) q4 g% E    {
5 o4 v1 T$ L! d' u, w        char err[133];8 d9 D+ h  l: k

$ ^, X8 l3 J1 e$ w4 i# x8 e: J        UF_get_fail_message(irc, err);
0 g  ]0 [0 o" z1 E" [0 d: z        ECHO("*** ERROR code %d at line %d in %s:\n",) Q9 ^( z; \9 f9 S" O) N& ~& Y2 \
            irc, line, file);, i7 _+ y% q' k
        ECHO("+++ %s\n", err);
" n+ e% r' Q+ z9 j1 m/ B0 k        ECHO("%s;\n", call);
+ w2 A  F  Z$ |1 O: P  m& _    }& B* W2 Q) d$ \: l% j! `) V

' g* c5 i) b* h( G: U$ ?! ]9 h; I; k( Z    return(irc);
- V: T  _7 C( _$ t}
; p- K4 A1 w+ }3 t6 U% I
: Y4 T2 Z; l% j/*ARGSUSED*/
9 b7 M8 K! b- v7 v9 Z$ mvoid ufusr(char *param, int *reTCode, int paramLen)5 v+ D9 `0 ~1 Y, x- F; K$ t0 P& ^3 }4 \
{  w4 d& g5 @/ ?4 P+ n8 U
}9 v% \9 l! X" `( H) d
9 t) g7 G- n# g
/*ARGSUSED*/) v% ]- R/ ?* [% ?3 q7 _
void ufsta(char *param, int *retcode, int paramLen)' a( V6 F4 q7 I7 m  b7 [5 p
{
( \' G2 R+ ^  O}8 C" o2 _6 [8 [) C: G4 {

+ r. ]: k4 e8 m0 w2 {! Cint ufusr_ask_unload(void)! u2 M3 M, O, C
{. _9 y3 K2 w- w+ R  Y
    return (UF_UNLOAD_UG_TERMINATE);/ }/ H9 j6 m. n3 I% h
}8 F- [# N1 f0 b* j$ ?/ H

* @0 i( }: k  [. {7 ^9 R& [void ufusr_cleanup(void)6 R% G1 T3 G# o( O1 r# P; o* l
{
7 o% L. @* E% t  m1 T' G    ECHO("NX is shutting down - running ufusr_cleanup\n");7 W6 m1 h: _) L
- U& D0 ]) Y4 ^) _
    /* put your code here */
, n0 C0 ~% T( l3 v% ^7 V4 W5 z( B/ A}[/mw_shl_code]
; e/ U3 o# K; D5 A' X. e
上海点团信息科技有限公司,承接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:496 d- I" p9 N# \+ v
请问这个函数是怎么用的?有什么用?
* Y1 s' U. {; }& {% ?( p. J
入口函数 改成 ufusr_cleanup ' P0 }6 T6 r! c
6 e+ y* j" m. H) l6 U$ J6 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二次开发专题模块培训报名开始啦

    我知道了