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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x
* _) o( s! [& y0 x. Q6 c4 m0 V
NX二次开发源码分享】关闭NX后,做点儿事
+ O- C; g( ]0 y4 Z, Y" q- x$ u- n) i( W/ F" x4 y
[mw_shl_code=c,true]/*
8 l) g$ \  j& @: g5 D
. ^- O5 m; J4 y' l    ufusr_ask_unload is invoked immediately following the completion of ufusr1 T5 u) a0 J$ G6 J2 x) J8 g4 {
    (or ufsta when the dll is run from a startup folder) to find out when you
. K) ^5 s) ]$ N# l  H    want the dll to be unloaded.  If ufusr_ask_unload returns4 Z0 H- {: F/ ^5 L0 R+ q6 l
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
4 y" X9 H9 E; |    unload when NX is terminating.  To prove to yourself that this works, set$ @, s* @: G% Q# h1 g  P# A
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not4 i/ r( l! L' H. H8 ~' R* C# H' I
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
* \5 u+ D0 y* l$ X* `3 X2 M    Log File and make a note of the full path to the syslog which will be shown( @" c% b3 y- P1 |4 S& S
    as its own first line.  Run the dll built from this code (nothing noticable
( ?0 L  V) O2 h2 u& j1 M$ w0 m, X) K9 H    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
7 c4 G: |6 Q  P    see this line near the bottom:2 ^7 G/ ~0 O/ x1 J  p
, @! j2 U. Q9 G7 H! D
NX is shutting down - running ufusr_cleanup, R# T) W: [. z  q4 P$ f
  G. k  ^8 F$ L; U3 t& F
*/
% R% q. x  e( x  X! R#include <stdio.h>  X+ c- w9 z% `, B' T) v
#include <string.h>
  o( ?, ~. m# B7 i" a0 t#include <uf.h>
; L* C2 U! ?: A0 [#include <uf_ui.h>- u9 L, F* t! M  D6 I: a( z( ^
#include <uf_exit.h>
' [1 v; v. t- }5 X7 I# a
1 C5 t1 `+ n  [( a, G; J#include <stdarg.h>$ p' T: ^. Y- i( ^4 Q

9 l/ l) Q3 p$ c( t! H) N( c0 N: @3 Mstatic void ECHO(char *format, ...)
. i, o* R  r* N$ N% r1 ]/ L  \{; h5 u" j1 J5 K5 z5 t
    char msg[UF_UI_MAX_STRING_LEN+1];# j  I6 ]5 N" j# L! E% O( v  F, R
    va_list args;* ]$ N& A' L" t
    va_start(args, format);2 C0 I" e" F( h6 y( \' `+ ]: W" ]
    vsprintf(msg, format, args);& A$ U% y; E1 V, s8 L1 \3 c
    va_end(args);
) _/ m9 v: s+ @% N6 J  ]    UF_UI_open_listing_window();
" Y/ W9 m1 b( V2 d+ d+ u    UF_UI_write_listing_window(msg);* P+ X7 [6 d' B, V$ B
    UF_print_syslog(msg, FALSE);
4 F4 y, ]* t* n% e, f( H; R3 \% k$ n}# C0 _( g6 ~  `1 P& |3 U& I- y
; w& i' s- B6 W+ ?! `
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))% h8 N) }+ `+ ^$ v4 V5 S8 `  A
: B( f7 c0 U' m! h/ ]' y: V
static int report_error( char *file, int line, char *call, int irc)5 v7 U8 x  H& B0 n# [
{7 M+ y, `+ \  }$ r
    if (irc)
5 M& S5 X, V! [6 F7 _6 Q    {4 T3 u1 I5 N) o; X
        char err[133];
. r$ |' z1 |+ p9 ]  }- ^# u4 j5 ?* l
: Z8 ^, c7 |7 G; m, V0 Y8 W        UF_get_fail_message(irc, err);$ s! ?& q2 F7 F4 E6 ^: y% N
        ECHO("*** ERROR code %d at line %d in %s:\n",! q; e  G8 {& W/ U
            irc, line, file);' \2 v4 Y& P7 w/ Z0 p- j
        ECHO("+++ %s\n", err);
: y3 S2 }; x/ u/ j        ECHO("%s;\n", call);
$ Y' G$ K: L% c3 j! h    }. M3 D, q# L8 _

$ y  ^( J$ e1 @- h5 B- T9 D+ X: {& q    return(irc);
3 v! j8 m: `6 B  L' C( |}$ I% R3 Q/ y! V* w9 {
) e+ ^7 E5 V5 ], o* J
/*ARGSUSED*/
% b7 c9 d! e: G# tvoid ufusr(char *param, int *reTCode, int paramLen)
: s# O2 v9 ?* J/ V8 ]{7 m# m1 f$ c( E
}
) \4 g% P. Q: u6 I6 t$ p5 Q) _/ T9 D$ ?9 n# d8 W
/*ARGSUSED*/
, H* n) U! n% Z, ]  M5 cvoid ufsta(char *param, int *retcode, int paramLen)9 X* ]( V4 R& s, e
{
9 g; \9 m8 _9 K( N  n0 W* P2 |}/ ]3 U$ Q  X: U! l8 K! i

* i4 F4 F7 _$ H0 [' C# m  T. Q. hint ufusr_ask_unload(void)! Q: B8 N. g9 M
{
( C9 I5 X4 s0 S    return (UF_UNLOAD_UG_TERMINATE);
. }3 t3 C3 T0 A1 l7 K: b! i}
8 a" D+ z3 i# n  g0 `, _
0 Q8 V' ]/ ~5 d& svoid ufusr_cleanup(void)
: e$ {5 k: v! S1 K4 |5 E{% n) g: ~2 E# z
    ECHO("NX is shutting down - running ufusr_cleanup\n");: _, z+ T- i8 T: B; c$ O  _

( D) [- c8 U3 l! O& l7 b- y    /* put your code here */4 b& ]; x  M/ J& s' ?7 ^; Z
}[/mw_shl_code]3 Q( x5 ^3 I+ e2 u  n/ D
上海点团信息科技有限公司,承接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
5 L/ y( o  g! @. c6 N) D- J请问这个函数是怎么用的?有什么用?
, I: ^& F4 D: v. d: Z' V
入口函数 改成 ufusr_cleanup 4 W0 s0 }8 i1 Z# v
1 d* p' M: e" _0 p2 w8 O$ {
意思是 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二次开发专题模块培训报名开始啦

    我知道了