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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x

; J/ j$ q4 [, t. H$ n3 x* S; BNX二次开发源码分享】关闭NX后,做点儿事
6 A  B1 a6 J+ m0 S: E6 F- n$ V5 ^! Y3 U9 n# u
[mw_shl_code=c,true]/*
- S: W* L  \5 _0 R# U* i# h
+ q3 c7 r; n  i/ I% c6 v, X" ~    ufusr_ask_unload is invoked immediately following the completion of ufusr( K' b6 [% ~7 g7 D. G% a; M
    (or ufsta when the dll is run from a startup folder) to find out when you
  E- A) Z9 V* b4 T    want the dll to be unloaded.  If ufusr_ask_unload returns
4 S4 h7 G! N' m$ {    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
, g. u" k- b0 Q8 u; ?0 L    unload when NX is terminating.  To prove to yourself that this works, set
5 f) ]5 R( {3 A+ n. P    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not5 f% q. ]4 S) a# t4 o( Y) A
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX& a- P* d! T7 ^2 z! O
    Log File and make a note of the full path to the syslog which will be shown- J8 @6 o  d8 p; _0 V/ w* y& A3 j: X2 _
    as its own first line.  Run the dll built from this code (nothing noticable2 J+ k$ o2 T$ n$ c, U
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to  _* B* ^8 M( s9 O) N1 `
    see this line near the bottom:
& q. F/ ?9 f4 z; O+ D* }  l
0 V# l* ~" P- H$ {/ INX is shutting down - running ufusr_cleanup
& K) [9 \; V( T& z- u8 D  s7 G. ~( q5 A
*/5 z% {+ E- p+ s* Z
#include <stdio.h>
  G2 B. b. C0 V' w/ f+ R. U8 K" O#include <string.h>' z6 S9 |: }5 w, @$ s; h: u( b+ r3 R
#include <uf.h>
3 B* [$ X( E. \& q* _% C$ Q0 c#include <uf_ui.h>. d4 R1 [7 w8 D2 l
#include <uf_exit.h>
6 N. h5 Q- n6 _1 m/ X. D, k% M. ?( \; Q1 Y: s# L7 k/ C
#include <stdarg.h>
6 ]# T* v3 h4 @, h2 O0 P& ]2 U/ [% i% v; T
static void ECHO(char *format, ...)- ~4 P! F: d- e2 ~9 l
{) J* y) b0 U% N) H3 ?+ e1 C
    char msg[UF_UI_MAX_STRING_LEN+1];- A) Y4 H/ A0 [1 q& N
    va_list args;+ o7 S- V. J3 k$ v- X& X3 N# `
    va_start(args, format);
3 l+ R8 m  |  F# N* D1 @: e6 `4 _    vsprintf(msg, format, args);
' O. w- T& ^, a' {6 r6 |* C    va_end(args);' `( v" I* R1 V3 `
    UF_UI_open_listing_window();) \5 R; S" b+ N0 F; d, |' p, O
    UF_UI_write_listing_window(msg);
" c1 C! I4 S  E    UF_print_syslog(msg, FALSE);
+ M( b" a! S8 p# _}
3 S6 g" ?2 ]/ P' P$ A0 _0 `% J
. B8 W$ }; I) m# h- Z#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
, Z7 u) x' c* q. M- t$ I
8 Q* O' c: W1 ^$ D2 a, rstatic int report_error( char *file, int line, char *call, int irc)0 C4 B! h7 t5 h& W. k( r- x8 A
{2 L$ G4 a4 y* c4 e- f: |
    if (irc)
+ Z4 \6 _; U% V8 D* v    {
$ t0 G: X* `% |  ~        char err[133];
7 D5 t' I6 g4 H9 B' L) s- t/ D. d* N$ `- C5 ^" L- E- p
        UF_get_fail_message(irc, err);) R4 n! r- ^0 n) h9 X# }1 u
        ECHO("*** ERROR code %d at line %d in %s:\n",# b; h1 m& w! Z# W# P: u
            irc, line, file);
" y/ d3 D; k  l+ \5 j        ECHO("+++ %s\n", err);
  Y% f* A' a% F1 f% O        ECHO("%s;\n", call);; Z% d4 \1 O& i5 G4 s
    }  Z* K: b& t/ T8 }* t6 X" b4 J
9 B* H* }0 y8 s  M# h0 J
    return(irc);4 r$ ~; I$ v( W
}6 s% g- m/ I, T

. G$ G3 e* a5 c/*ARGSUSED*/8 j: X9 H( T3 Q; ~$ g) M
void ufusr(char *param, int *reTCode, int paramLen)5 g  U5 {1 G9 O8 G  V7 m9 v
{+ m3 R7 `( ^+ ?/ ~
}* G" f: T( z, t7 `7 f+ B' y% m5 D
/ L+ @9 ?" p9 @; ]% k+ E& F' l
/*ARGSUSED*/, ?5 d/ |7 N8 v8 r' G6 L
void ufsta(char *param, int *retcode, int paramLen)8 K8 j5 O' S0 ]- P$ l# A5 q
{5 P4 b3 o& x! C! w7 Y2 r
}
0 r( x) X* X/ ?3 s0 q" H" q  l: p# ~0 K' Q/ I& g9 c8 g) b6 L
int ufusr_ask_unload(void)/ y9 c" u/ Z# @3 T$ t0 q
{
+ O; L6 X/ g3 k6 s, x" z# c    return (UF_UNLOAD_UG_TERMINATE);: l. _# r9 Z. P
}2 H* k; c* H3 j7 v- k
( ~1 b: }( ]2 w7 e. `! U/ z
void ufusr_cleanup(void)5 c; I) w) G, [
{5 i  z4 W* h& W
    ECHO("NX is shutting down - running ufusr_cleanup\n");
4 k6 Z! z; ?# f! e9 E1 E- [& G4 }2 M; W& B$ W1 K) @4 l+ a7 N" L. d9 a
    /* put your code here */
9 P) b. H( T) d3 G- r* o/ x8 a}[/mw_shl_code]* z* R8 R& S) o# y/ Q
上海点团信息科技有限公司,承接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
& l6 I- |$ L% B' Q/ `7 m请问这个函数是怎么用的?有什么用?

* q% l# e) A. n6 T入口函数 改成 ufusr_cleanup : C  _" O2 Y  l

8 z! Z$ V2 D& w% X0 z8 [4 N2 Y+ H意思是 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二次开发专题模块培训报名开始啦

    我知道了