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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x

  A+ f+ S# T' _* gNX二次开发源码分享】关闭NX后,做点儿事
9 ?8 K. @; G7 H% C. X' \
( R7 n7 ~: `' o* v7 h' u1 A[mw_shl_code=c,true]/*3 O& L) M+ s- ]) z  v9 g
% A" \6 \4 b/ K9 z& r$ [( w% d  o+ t
    ufusr_ask_unload is invoked immediately following the completion of ufusr
0 W" J  z) W/ y/ \4 F3 s+ f    (or ufsta when the dll is run from a startup folder) to find out when you$ x0 Y1 D% ^$ G4 C5 i+ j9 Y
    want the dll to be unloaded.  If ufusr_ask_unload returns( h/ e" U9 |; H+ L
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is' z6 I. g5 B  Y, X
    unload when NX is terminating.  To prove to yourself that this works, set( K8 v" ]# q; m" E* R
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not
1 v7 i: z3 B' d    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
; E! M1 g# G' g4 t1 j- {    Log File and make a note of the full path to the syslog which will be shown
4 s2 [1 o7 S  m6 t    as its own first line.  Run the dll built from this code (nothing noticable
5 {; Y- o( W) V$ a3 Y3 ]* V    will happen.)  Exit NX.  Find the syslog and open it in any text editor to5 d1 s: P0 `# x) S9 L3 u
    see this line near the bottom:0 T+ L* K0 H. T/ s8 h
( U% Q% U2 I; ?1 Z" J$ E+ F
NX is shutting down - running ufusr_cleanup9 v! R' P5 ]2 d9 s) b
6 M4 N: n6 O% j% F- x% `
*/+ m/ I7 j( r% d5 Y
#include <stdio.h>) s* B# ]3 k9 K6 p
#include <string.h>4 h! g* K: ]% e4 Z% X5 ?
#include <uf.h>
9 X4 i: M( b6 _" }" g#include <uf_ui.h>/ L3 m. U. ~8 z- G
#include <uf_exit.h>8 i- u8 A2 ?' T

, ~" @- X( w6 \" ]) ~#include <stdarg.h>6 H) v' e" z# m

  |2 P! K8 k0 R- t  f+ hstatic void ECHO(char *format, ...)/ H! `& L/ ~6 V5 ?* M0 P
{3 m8 N6 ]9 V% }& Q& ]! }1 F
    char msg[UF_UI_MAX_STRING_LEN+1];
+ x* ]) _# y8 ]" E- Y) N    va_list args;, g( C5 c  H1 m; T: O6 {- v
    va_start(args, format);( s# _% T& B1 G; p4 D
    vsprintf(msg, format, args);
! p' H2 h+ N+ t9 B. y0 H/ U- c: `    va_end(args);  O. L5 s( J" k. c0 P, K
    UF_UI_open_listing_window();4 u/ o0 J* A( W  J7 @
    UF_UI_write_listing_window(msg);" J# P( U( z6 Y& j/ J8 h% A
    UF_print_syslog(msg, FALSE);
. ?2 |$ Q; q$ Q: d}  G* F3 X  H; w( j1 k: a

8 m8 B( Q$ }$ p) c& k- h8 {  x#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))' v" l; h4 _9 }0 Y7 Z% W
- D5 H0 l6 G: ^$ V. L5 n
static int report_error( char *file, int line, char *call, int irc)$ H  H) E) R- y# A9 q4 `8 N2 {' ^
{
- }# X# D- Z9 Y! Q. Z( s    if (irc)6 j  ]* r0 q' }- \/ ]$ S
    {* }, v/ w7 e- y) P! U& v/ a
        char err[133];
8 K) e1 }+ u5 \# N1 p3 E* ?
' X; v* i9 O) h( T$ k# \4 k1 s        UF_get_fail_message(irc, err);8 a! L. d- L" J8 m/ R3 f7 a2 @! l
        ECHO("*** ERROR code %d at line %d in %s:\n",# {0 a3 t7 w1 {/ {( O" }
            irc, line, file);8 l! s6 ~# N/ F5 g5 |' b3 D
        ECHO("+++ %s\n", err);. F8 @) `2 C: x3 {
        ECHO("%s;\n", call);
& s8 M5 [; \! N8 y% |3 ?    }
5 w/ z8 \% ]4 K$ q" K& k
1 ~( V" k2 d) e# S2 \    return(irc);* z+ Z7 I2 N; U( i; w* l) P- u
}$ q# L# ]  G# z5 M
4 ^  H' `# o+ y
/*ARGSUSED*/% s5 z" S) k( A: Y  J# i
void ufusr(char *param, int *reTCode, int paramLen)" z$ S7 [( }! \- B4 A) m  \
{) u- ]' B6 x# \* d9 ?
}- G/ {3 }4 p/ d& K& C$ U

/ F4 c; s6 [8 `7 X# h; c: r/*ARGSUSED*/' z' [- ?; K  q
void ufsta(char *param, int *retcode, int paramLen)
( C) Z6 n, X0 T  D. [; N4 \{% g6 X$ o; e# h4 ?- I7 v
}4 U- D, m& z! R

! {6 K4 m6 s) Q$ f/ `  o5 ~/ W: o5 Xint ufusr_ask_unload(void)+ E* u# `& V5 R# C0 o# E: p# h. X
{! i' Z. _" i7 T  ?0 i
    return (UF_UNLOAD_UG_TERMINATE);
) \9 o  S& s' [0 E9 T* T0 _}% e6 [) Y7 ?* K' Z$ I

$ O1 X. Q! D" h+ ^# i9 Xvoid ufusr_cleanup(void)( `  n4 |/ J: o' v5 |
{
; I) y8 N' [5 v( Q7 O8 k% J7 S    ECHO("NX is shutting down - running ufusr_cleanup\n");
1 f1 O1 T2 s$ k" }8 K% O' y0 O4 [* c: A! U2 z; I
    /* put your code here */0 m/ Y% g" O& X
}[/mw_shl_code]
6 F; ]( n/ @8 Y8 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:490 R& R8 y% u3 F. t' r1 O
请问这个函数是怎么用的?有什么用?

% j7 y, @9 |' A0 [* r) l# q& D入口函数 改成 ufusr_cleanup
& l8 `! \/ \0 V8 t' a1 u- A8 a# \+ @
意思是 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二次开发专题模块培训报名开始啦

    我知道了