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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x

0 {' I& E) _% X% j5 d5 E2 ]# ~3 CNX二次开发源码分享】关闭NX后,做点儿事
& \! h0 ?' Z5 P' Q! B$ z' D" x+ n, Q) A7 Z( x
[mw_shl_code=c,true]/*+ C  P  Z- a, u% D; J
  i# p4 D' ]/ B
    ufusr_ask_unload is invoked immediately following the completion of ufusr
' {9 g  c* t& L8 Z/ p    (or ufsta when the dll is run from a startup folder) to find out when you
# H) s. X( V8 W, w4 q    want the dll to be unloaded.  If ufusr_ask_unload returns
$ [% Y0 y5 @: Y4 J* S. E/ U9 Z# S    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
* O+ c. W* p8 Z9 s1 J  H( }: j    unload when NX is terminating.  To prove to yourself that this works, set( d$ n, ]* O% v& S7 v  |; q
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not
4 m7 m1 l2 I6 l0 T; z    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX! K7 E3 v* Y3 N) H
    Log File and make a note of the full path to the syslog which will be shown8 D. @9 M" G. v' B- k6 t. e. r1 b
    as its own first line.  Run the dll built from this code (nothing noticable* E9 O' a5 C5 x6 B  ~/ i
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to  r: [& G. \$ [. i' I( ~
    see this line near the bottom:- M2 w2 @0 c' w0 k2 I
. c7 Y4 h( W7 c4 s( V
NX is shutting down - running ufusr_cleanup+ U! _7 s$ M7 H2 B: e9 I

0 d: e+ N! s& {" w, u*/
1 ]' C! k5 f* D0 k7 F0 q#include <stdio.h>% y2 D* D; w9 T2 L' f
#include <string.h>: z/ B% h2 T- e( d
#include <uf.h># I  h) N- }, p' I  q6 K" @
#include <uf_ui.h>
; }" J% B3 s3 V5 Z" X( [) K#include <uf_exit.h>
/ @% I  e4 W- B. r$ }9 m% E- q0 O+ a, t/ L
#include <stdarg.h>" a+ O& {) r, Z0 t, ~5 i! u
# _/ j* S6 M: T; H+ Q' L
static void ECHO(char *format, ...); g* h, d: E$ }& w
{$ a8 o: P9 p% q. b5 k1 F' q7 z
    char msg[UF_UI_MAX_STRING_LEN+1];
6 B% k5 I8 y' e    va_list args;, X- d: [- Z& U  ^3 H' U& Y
    va_start(args, format);
+ h" p7 {4 i5 B    vsprintf(msg, format, args);1 ?* _4 L9 q7 D- o# ~8 C/ b- @, k
    va_end(args);
0 w2 r/ i+ z( O5 @, [    UF_UI_open_listing_window();; H1 j* B8 K6 c- f
    UF_UI_write_listing_window(msg);
  Z7 z( r; g/ k6 @. V    UF_print_syslog(msg, FALSE);/ F% d% I6 G* P% n% z! P. ?
}
) @* O0 ]8 y+ G3 ?# P$ N, ^6 A/ c9 D( h" B4 e/ s6 c
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
7 H& l6 L, {! i$ O& `) r6 X5 T0 r8 f  D
static int report_error( char *file, int line, char *call, int irc): u. N$ r& j* X6 B0 }5 r
{/ \3 [( E1 I$ a8 A+ V" K7 o0 Z5 X
    if (irc)3 Z6 E3 X$ t7 \% z% z3 X* B* V
    {
9 Z$ j- l  {# H4 [  Y        char err[133];# V% n# p, N8 N( E/ A
. W. O* \% A9 ~0 j4 y# F; n! K
        UF_get_fail_message(irc, err);
+ L# A4 U7 a3 V; F" x4 ]- C2 l! r        ECHO("*** ERROR code %d at line %d in %s:\n",
6 f) }, P& ~" L4 R" Q1 l            irc, line, file);# I5 k# {, Z6 Y4 _* r
        ECHO("+++ %s\n", err);
: M9 ]4 A! g0 m& R& V2 v        ECHO("%s;\n", call);
' Z: J/ }* F# f" A. z# p( W, I' H4 o# X    }
" s& n, J" G8 N! }9 \/ A, a: v8 y; h% S  [" B& @" U+ b2 P" k, v. L2 v
    return(irc);  T9 L7 u6 E$ W) O  D
}8 T# k" n, t& |! ?
! h8 p! i1 L& s" X
/*ARGSUSED*/
/ Q8 e) M3 E/ x5 Evoid ufusr(char *param, int *reTCode, int paramLen)
! o" {' u* ]6 }" B9 Z8 K( R1 K{
* b. h$ O- l- |0 g( h}- b; R  W0 u% Y( C& M% K; W  G) ?& |

- n+ s0 i. Y' N  H" d/*ARGSUSED*/) j; v. [9 B! H5 |0 u$ c
void ufsta(char *param, int *retcode, int paramLen)2 B' L5 L" ~$ o4 j8 n5 z+ j/ }
{
) k7 L6 z, v2 e; I! r}
, a1 z9 t4 K" s1 |
6 x* G6 D8 l7 O/ Cint ufusr_ask_unload(void)* W: i( N% y# @3 a! @% C
{" q: H0 E! G3 }8 G
    return (UF_UNLOAD_UG_TERMINATE);
% V8 b/ {3 L% l, h}* S) c9 v3 X) D1 N9 ^

  _7 b* G6 l" f& n, w) a* @void ufusr_cleanup(void)4 x& F& h8 q+ ~$ G+ |
{# N9 u. P* `/ L: Q) T! A
    ECHO("NX is shutting down - running ufusr_cleanup\n");, p3 R5 ~+ d& m! y

; B5 u9 P0 R2 R0 [) ?) q1 c  Y    /* put your code here */1 i9 x+ T7 ~! U' Z
}[/mw_shl_code]
; g; _* g4 W1 ~, P5 z# k/ q$ J
上海点团信息科技有限公司,承接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:499 r! ?- A+ q( `
请问这个函数是怎么用的?有什么用?

8 @7 z8 a# @" E! N入口函数 改成 ufusr_cleanup
- Q2 U+ g4 k8 \0 ]$ _6 Q+ w# C+ m
6 G( j' D, s; N- f. S意思是 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二次开发专题模块培训报名开始啦

    我知道了