PLM之家PLMHome-工业软件践行者

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

  [复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82172
QQ
发表于 2018-7-12 11:12:47 | 显示全部楼层 |阅读模式

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

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

x
6 V- [( I, O' O" }9 X, P1 m' l
NX二次开发源码分享】关闭NX后,做点儿事
& h/ W7 L0 L2 c: B5 }- ]& q0 f  k. y# d- Y- u( j4 n
[mw_shl_code=c,true]/*
4 d5 f3 R7 }9 J0 Y7 F! i% ^) E% J4 B9 W  @
    ufusr_ask_unload is invoked immediately following the completion of ufusr' Y2 G! H+ I& z( R& w/ r
    (or ufsta when the dll is run from a startup folder) to find out when you' B' [0 W$ x* x/ T6 I9 X
    want the dll to be unloaded.  If ufusr_ask_unload returns6 A7 J6 _0 d- Z; V+ v, s( P* k
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is( g1 {  \. _' ?) d" K
    unload when NX is terminating.  To prove to yourself that this works, set, s0 L5 ^5 Y6 }7 v1 {+ ^" b
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not
/ w* }! ^1 }) Z  h$ n    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
  o& M2 |7 Z/ X4 R( \  O# \  e    Log File and make a note of the full path to the syslog which will be shown
+ ?) L" y3 V, N! ~# X) a    as its own first line.  Run the dll built from this code (nothing noticable, {* J* W% A: s2 R
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
! ~. H* y  E, J  v    see this line near the bottom:" {' p; W8 i: x$ ?. i+ f% B
- w7 L% q$ W5 C4 i/ w" B
NX is shutting down - running ufusr_cleanup
5 j8 Q4 y8 `9 k' [5 l! A9 c8 {2 x7 E! c6 ~0 u7 g
*/
2 u. e6 V4 g8 Q: i' B#include <stdio.h>/ v& S4 V& q0 J/ s7 z' O- s
#include <string.h>
' R! z) \! I2 M7 n/ C: J- M7 o#include <uf.h>( |: _+ c9 q! m( I' T
#include <uf_ui.h>2 K6 B4 A2 G; z8 M
#include <uf_exit.h>- b* S/ P6 ^. {3 v6 b

" v, V+ W9 F2 o) \( k5 j7 Y#include <stdarg.h>4 r8 R# E. N  B, Y  j& N+ L) t

+ z7 B+ @" t; Vstatic void ECHO(char *format, ...)
8 J7 H" Z- ~( E2 q5 c{
. o* A% S1 X) p5 Y4 p: d    char msg[UF_UI_MAX_STRING_LEN+1];
' L, E+ E( P' P0 C  V2 E    va_list args;8 K% P$ S# ^. d. e0 o) l/ r1 L: {( \
    va_start(args, format);
- Z2 N+ E& \" @. ^" x    vsprintf(msg, format, args);7 B! w4 Q* S& w
    va_end(args);' m# {( h2 m- y* S3 v( w4 ^8 z
    UF_UI_open_listing_window();+ x9 I6 N. n0 X, ?0 r$ B
    UF_UI_write_listing_window(msg);' \% M5 s" g. ^- |) ?! v
    UF_print_syslog(msg, FALSE);; J/ j. O$ t7 o
}
3 \1 F' q7 X3 R+ }
% P8 n1 W5 D5 ~  u; e6 p# W#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
9 b4 z( O  X: O1 a& I  E& ?/ J0 }, j8 [4 u5 r
static int report_error( char *file, int line, char *call, int irc)/ r$ P6 V6 P. ~
{
+ o  \, ~9 |9 d( A# F+ p    if (irc)
2 U/ o. |; \. |, o+ v- V    {
1 Z0 s2 f% S7 `, S9 g& i# q        char err[133];
3 f6 n5 z4 |0 N+ m4 }6 w% M( y+ C5 w
7 d3 ]% f2 p0 H; u% Z        UF_get_fail_message(irc, err);2 y3 j/ p0 \2 a: u# `
        ECHO("*** ERROR code %d at line %d in %s:\n",
/ Z8 O9 z& H1 K& E5 e            irc, line, file);0 y. n/ t7 O- a( _5 i3 z) X% }
        ECHO("+++ %s\n", err);9 |# ]  v# B- @. A& g
        ECHO("%s;\n", call);! t% K# A& n' k. B! e/ T
    }: o- ^! E# J3 ?/ X8 _) l& T. j
; W; n2 ^" H$ E+ t
    return(irc);: E$ M' y7 V( F8 v5 {
}
4 G/ j) ]" T" {4 f6 d
. j5 Y9 Q; F3 e3 B) ], \. ^: f/*ARGSUSED*/
* Z; t9 ~8 d7 I2 pvoid ufusr(char *param, int *reTCode, int paramLen)9 Q0 M) S+ ^  i7 R+ h4 M% ?$ D1 C
{6 g5 r; M* ^% ?1 g! ~
}
, k5 N$ N; \- w4 X" K% u8 s" n# ~% K. X$ y8 I
/*ARGSUSED*// S# ?  ]; Z5 K7 B3 y& \% p
void ufsta(char *param, int *retcode, int paramLen)  t) ]# Q. t3 H. ^1 c4 j
{
$ n0 b: D5 s) m- w/ d}
4 j: F6 n( ?1 O5 \' C' f  j* O- t
int ufusr_ask_unload(void)) i3 c. Y; v7 v+ u. |- S5 i
{0 y4 a' n8 R# A& f
    return (UF_UNLOAD_UG_TERMINATE);
( \$ J  T0 N$ c; {' u  W  x}( o' v- H2 m8 L7 Z9 p4 p/ }& l

7 `9 U2 m# Z8 gvoid ufusr_cleanup(void)& u# r% D8 J& F* f* h5 E2 T
{
' B, W& ]4 D8 q6 r    ECHO("NX is shutting down - running ufusr_cleanup\n");  R/ p& S# H( a$ o; K1 Z

- n$ ^4 G) z% J3 f/ }    /* put your code here */9 W' H7 {7 w, Y/ }  h- x
}[/mw_shl_code]
" q* o" }5 F$ i1 j
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

全部回复5

1

主题

45

回帖

203

积分

培训VIP会员

积分
203
发表于 2019-12-25 08:49:24 | 显示全部楼层
请问这个函数是怎么用的?有什么用?
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82172
QQ
 楼主| 发表于 2020-2-13 08:43:55 | 显示全部楼层
licxsw 发表于 2019-12-25 08:49
' n0 a) V& G% L5 u( @请问这个函数是怎么用的?有什么用?

7 b) ~; M1 ?; Z7 f. b0 k入口函数 改成 ufusr_cleanup
. {, F9 d5 v. ?9 m7 x3 K& k, Y7 G, z# c6 Y6 @, z, S
意思是 NX 程序退出后,你可以做些事情 ,具体做啥可以自己写,就是个入口
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复 支持 反对

使用道具 举报

1

主题

45

回帖

203

积分

培训VIP会员

积分
203
发表于 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.doteam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了