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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x

4 j5 [, U$ M, s" i6 T! W- S" vNX二次开发源码分享】关闭NX后,做点儿事* y( C: G% j" j+ ^" i: w( s

; p, S3 v* `; e/ \# [[mw_shl_code=c,true]/*5 F7 f2 g9 f$ H3 _$ W0 q$ q4 J0 j& Y- e
; e) G  `( |) Z3 L* t1 h
    ufusr_ask_unload is invoked immediately following the completion of ufusr
' w6 T, \' i: N! m) }6 S    (or ufsta when the dll is run from a startup folder) to find out when you+ W/ Y! |  W* V5 Q' Q
    want the dll to be unloaded.  If ufusr_ask_unload returns
6 C" ?. l- A  z6 l  j    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is9 @& a4 W" o+ p( |
    unload when NX is terminating.  To prove to yourself that this works, set, a5 N. v3 Z, j
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not
5 e4 D2 r' r/ t( @: P: ^3 e    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
, V8 v, j1 |/ X+ P* o    Log File and make a note of the full path to the syslog which will be shown& x( m, j. R' T- r, R  H
    as its own first line.  Run the dll built from this code (nothing noticable
: H. N) {- j  V3 S& Q- _* ?% {! D    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
% L8 G& d, V/ V* U5 ~    see this line near the bottom:2 z6 @0 M- \" l" G+ l1 |. Y

, E: Y6 z" v5 a! G6 i9 cNX is shutting down - running ufusr_cleanup& M/ R6 P* H; S' e. p% d2 {
5 ]+ B9 F- P: R+ t( `" G
*/5 J  b7 R& J" f; u
#include <stdio.h>
9 X0 u' X. B( J- h& a! s#include <string.h>
: ?  H& k: a# `$ q; i" _" W" ~6 M7 _#include <uf.h>- U, a9 S. B$ G6 z! [- m) l5 P
#include <uf_ui.h>
( V# y8 G, u) q; I5 g#include <uf_exit.h>
9 R6 ?: G/ U6 U8 M  S$ z
9 @1 y( B* H% d- L  h9 L#include <stdarg.h>
- E( b! S/ H$ J$ G% v( x( \7 b2 w$ l( G7 Q; N& a; _6 \
static void ECHO(char *format, ...)
  R+ a5 Y' H- }3 X4 R{# y% b, _5 `" l/ ?6 K" v
    char msg[UF_UI_MAX_STRING_LEN+1];7 r: D2 y: \8 l! s5 J
    va_list args;' q9 q4 z+ o: C& `+ C3 s# M( j' I
    va_start(args, format);
( I# }0 |& A, w    vsprintf(msg, format, args);
6 w, f4 u# V  \0 H    va_end(args);
2 L, W( d, A- s, c7 [! }( B- \    UF_UI_open_listing_window();
, Z- N1 M( d4 Q3 u    UF_UI_write_listing_window(msg);5 S  u3 }) Q+ q# Z4 Q6 c* C
    UF_print_syslog(msg, FALSE);
' c7 }" [" Z4 k2 w6 C3 }! N}: m. i* q6 t5 f
% I' L' f0 k8 f+ c& S2 N: Y
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))' l5 L, D! s: }$ Q* p
' J$ i# @# s; i: r2 t- t
static int report_error( char *file, int line, char *call, int irc)+ ~* @* a1 \$ T1 y
{
/ y3 _+ Z9 C# y, o    if (irc)
% @# Y  }. J3 j* V/ w6 X$ i0 _    {
$ v4 M4 P/ z; k# z        char err[133];
& c# C, m  }& k( L0 }& G) {) W( R1 N0 j
        UF_get_fail_message(irc, err);# c7 H( M/ E% W- h: H9 j5 @
        ECHO("*** ERROR code %d at line %d in %s:\n",% P& H* @/ u3 r, h$ X" g1 y* I
            irc, line, file);
' q, `0 L! S. D9 ^/ I2 ^# m        ECHO("+++ %s\n", err);6 o! A) j9 g; S
        ECHO("%s;\n", call);; \0 m) X" \/ y& N1 L
    }
# s. o1 G- p( T/ e' I- s- y
% }6 w5 M9 O* r+ Y: d; Z; w: t    return(irc);7 P" Y# [3 c: B: h3 X7 |
}) g- j( X5 W' d) z6 v/ B" ^& D

3 b4 b9 V6 C3 `! V& L5 j" w2 E/*ARGSUSED*/
& c. E8 w- R8 W9 @" O; mvoid ufusr(char *param, int *reTCode, int paramLen)
* r+ p. t$ Q1 l5 _/ ?) t2 E# g) I+ e{; Y- F! O# ]/ @  ^0 M* I
}, n( [5 G9 u- [0 B

3 v' R9 ~. p4 d3 F, X; [/*ARGSUSED*/' B  h# c  r0 l$ ?/ w4 S% Z
void ufsta(char *param, int *retcode, int paramLen)
& l/ J9 |7 a9 w3 O  U& j$ N' k% P{+ F6 Q, ^$ E/ z* i
}+ s' [% }8 y# u! S9 _% w

) D& U# }& s' _, l- Y/ V& c/ _! ?int ufusr_ask_unload(void)" T5 x1 l1 |- }5 r; D5 H6 s
{/ f1 b) N, I+ @% E) j
    return (UF_UNLOAD_UG_TERMINATE);7 B9 \, b+ @3 T% Y- [% F
}
# P8 W  j1 {! B3 Y# \" V& F5 h# }
3 T# R8 f! B8 i9 \! a9 c2 Uvoid ufusr_cleanup(void)
/ `$ }- X+ v  E{& r! U  n) ~' n+ \
    ECHO("NX is shutting down - running ufusr_cleanup\n");
6 U5 R8 x, G* B( Z1 y( p
4 N9 x+ ?! h! K6 O& H- E' Z1 D    /* put your code here */& t6 J; Y! w6 m
}[/mw_shl_code]4 w* z7 w7 u3 Y; w/ a$ g
上海点团信息科技有限公司,承接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
3 E( L5 `) C2 s3 ]! e# A( O请问这个函数是怎么用的?有什么用?

3 p5 T# c) ]+ B+ q入口函数 改成 ufusr_cleanup
! B1 R0 Q4 ?/ H+ c) c% G1 m( y' E, L) B; j
意思是 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二次开发专题模块培训报名开始啦

    我知道了