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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x
+ W5 L# i3 ~8 `" G$ V
NX二次开发源码分享】关闭NX后,做点儿事
) M4 [5 N0 x" }7 ^
+ L# e) Y% ?5 q& M8 C5 S# R) i[mw_shl_code=c,true]/*. V# v; \' c# N8 `$ c
: ]5 F4 q3 F. }2 i
    ufusr_ask_unload is invoked immediately following the completion of ufusr- J9 J$ h# s* E
    (or ufsta when the dll is run from a startup folder) to find out when you
* `2 y: u+ J" w. k- d6 Z1 c    want the dll to be unloaded.  If ufusr_ask_unload returns& }# e. J. [1 W& q5 B, H
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is* Z1 @1 m, Z# q; h
    unload when NX is terminating.  To prove to yourself that this works, set
4 z& i: y" V! x    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not
9 w& D$ {8 c5 }2 d    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
# ~$ M2 f, @% B    Log File and make a note of the full path to the syslog which will be shown9 |( L& V  |$ r8 V! \* w% D
    as its own first line.  Run the dll built from this code (nothing noticable* e6 \7 @" e  K: G8 E
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
' Z+ \; v4 B* R, S2 S    see this line near the bottom:
  K( }  O' R  c7 a( o! O$ |7 t- \6 e' O7 W  r
NX is shutting down - running ufusr_cleanup
2 p# Q2 D' v$ t& [' c
! d; Z" r" a  g, ~*/
& o) T% s" X6 g% I. Q4 \#include <stdio.h>6 f: Y, B/ o+ A+ ]( Z: ~& w
#include <string.h>) Q, T7 v0 Y+ `8 F
#include <uf.h>
/ |( ~+ [5 y( E, k; [& O#include <uf_ui.h># X4 S! E5 w+ @. p. Z9 N$ z
#include <uf_exit.h>
. e6 j: p$ F2 ?$ n
# q" k3 I0 B; S& c) O* Y& Z4 t; A#include <stdarg.h>
- a; Z4 s2 G# V/ q0 N  R: W- v; I- {
static void ECHO(char *format, ...)
6 c2 o) e' y- }; `{
- W3 p; C6 @2 A  G' S& w3 p5 ], ~    char msg[UF_UI_MAX_STRING_LEN+1];3 \& s/ h& [' ]# p% C
    va_list args;0 X+ e( ]2 r; c
    va_start(args, format);
9 H2 u& Y( v7 Z# U* @    vsprintf(msg, format, args);
5 I4 }9 u' B- B8 F6 p    va_end(args);4 Q1 {& L4 ^5 A1 _$ A/ N1 f
    UF_UI_open_listing_window();* s( d5 y* j$ \' N% t
    UF_UI_write_listing_window(msg);4 x5 f( b, x1 g) K; K1 O: }) m
    UF_print_syslog(msg, FALSE);* L! B' Y: K% l) Z. |
}1 I2 v# y+ w3 _- ]9 U- Q

* j' r) D; w' ]- s! [9 g" B4 A#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
5 |4 F0 R; K5 g
6 V1 j* I8 c' ~$ astatic int report_error( char *file, int line, char *call, int irc)
* _3 {  G( b0 K1 Q) G4 A{) [% m1 _% i+ f' E! y# ~! I7 I  a) x
    if (irc)" {" a: w$ h, z& R! L& K, s4 [
    {
. ^6 h) f3 G4 y- o- M/ k        char err[133];
6 v/ B5 M7 q/ q. C9 V
6 f. U& h7 J) ~8 B! i: ?! T        UF_get_fail_message(irc, err);1 n) H7 P- b' K) b4 L! |
        ECHO("*** ERROR code %d at line %d in %s:\n",
' }' A' t1 p0 L% \* C) `  ]            irc, line, file);
/ ~0 B) h, X* f5 N        ECHO("+++ %s\n", err);
& I; P5 K: _, V. G: n        ECHO("%s;\n", call);6 Z, k" l1 k6 J) _; M7 T/ c$ O# w& T  K
    }' D- l5 I9 k1 N5 l9 Z. m+ z, j
/ N1 |1 f7 v. |: M( I9 e
    return(irc);
- `  a4 a& _+ L- Z# u2 ~9 Z}6 F, I# L2 \% N; Y8 a& b

3 F: j! K2 ~/ W- Q/ P& v  y3 W; L/*ARGSUSED*/5 B: O2 g* f9 Q, M$ @$ [4 Q
void ufusr(char *param, int *reTCode, int paramLen)
# X/ B  @# |0 s' L& n+ z2 `3 k{: o, A0 t: G7 Z" n; W5 P/ d: O7 w4 E
}
& c. O8 R# l7 w, f8 o% p, l- W, @$ {" ~( ~( @% _
/*ARGSUSED*/2 T* p! m* u5 [9 X! e( x# `! g
void ufsta(char *param, int *retcode, int paramLen)' X1 i- ?& Y; f0 ?" Z/ D6 ~
{
% i+ H  T2 J1 j. L2 x8 h}
% z" |8 \9 P9 {2 `5 k. l: e$ E; z% V
int ufusr_ask_unload(void)0 ^9 k5 o& W& N8 S& _- o& X- F
{* i/ T" w+ C& [# H* R
    return (UF_UNLOAD_UG_TERMINATE);% ^, A; n+ J3 S: e& `5 l7 U0 t
}8 R4 f6 t: M0 X6 U- V

. u5 V+ n8 O% o7 }( n; W/ ]void ufusr_cleanup(void)
1 k- R# J; A- a+ m% k" B3 G- Q{6 q9 W# j, I( P! a& ^2 r
    ECHO("NX is shutting down - running ufusr_cleanup\n");8 f9 r8 z7 R$ H7 u4 ]

: I6 F# e6 v0 @    /* put your code here */# i; T2 B+ ~5 Q$ i
}[/mw_shl_code]2 Q' V! H# I" I, P) F0 w
上海点团信息科技有限公司,承接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" D% _, S% F) u2 Z$ v
请问这个函数是怎么用的?有什么用?

# f( X! J: T, `* n( b2 x7 Z入口函数 改成 ufusr_cleanup
7 ]# J3 a4 K5 H8 v$ ]# ^9 h  ]6 c
( K4 D* \: U. w- @, 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二次开发专题模块培训报名开始啦

    我知道了