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

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

  [复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

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

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

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

x
  W# _( L' ~6 P  m9 j: v7 W& W
NX二次开发源码分享】关闭NX后,做点儿事
2 q6 I, m8 h. S( J6 v
7 H% V# z0 N; m[mw_shl_code=c,true]/*
) P# m$ Z. y5 s1 ]# v$ U0 y& J6 X1 G' R( r7 m0 S& w+ ?2 k
    ufusr_ask_unload is invoked immediately following the completion of ufusr
9 W/ n3 X% C+ p4 b4 w    (or ufsta when the dll is run from a startup folder) to find out when you
  t" ]. u3 x6 |% @6 y    want the dll to be unloaded.  If ufusr_ask_unload returns
4 a& c3 N5 Y1 l8 ~1 G1 e; m* q    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is9 D# |/ B2 q3 o0 d& e3 `, h1 ~
    unload when NX is terminating.  To prove to yourself that this works, set
( o. s! U' m' ^% p  V    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not: o$ h( D7 i" ^. a% y2 M
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX3 b; {6 @  p6 I/ ]
    Log File and make a note of the full path to the syslog which will be shown5 M; N; t8 i7 w2 @- h4 K
    as its own first line.  Run the dll built from this code (nothing noticable
# h- L: s6 a: q& g- H: ~    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
3 k1 S" t9 S' \% d' o! V6 F: N8 ~0 W3 p2 k    see this line near the bottom:6 K: `8 s" l3 s- d

6 s) F$ B8 m! _4 _. O; t+ l' aNX is shutting down - running ufusr_cleanup
4 n% T! R; R, Z, t* N8 p0 c0 {- C* \( K+ x/ c) j$ @  C5 w
*/- k" g/ R8 [+ B+ H7 s1 Q
#include <stdio.h>6 a1 O1 I. Y& \6 l' J. q7 `
#include <string.h>) \: D$ p" R6 y: t7 P
#include <uf.h>
/ l5 b8 o; {6 w5 j' p, a7 s; N#include <uf_ui.h>5 Q8 [  z  ~  E' u& Y1 }0 \
#include <uf_exit.h>
' K4 |6 x! d  f6 j$ t' @1 T# ]9 |# ]$ }/ h- ^
#include <stdarg.h>
! z5 }$ _0 n9 t# R; B
0 |! y1 f0 m1 `8 ^6 ystatic void ECHO(char *format, ...)( \6 z6 x* }) ]- a, q
{
4 V# B, t- u# C' {' `/ ?    char msg[UF_UI_MAX_STRING_LEN+1];! z5 G5 L% x& u9 f. h
    va_list args;
, v) ^8 e( Z  z2 c$ y8 ~    va_start(args, format);
4 v9 o6 H  X3 a- ?* l    vsprintf(msg, format, args);" D9 t* q1 K$ T, T- r
    va_end(args);* N! F- v( u( Q9 h# q) e! O
    UF_UI_open_listing_window();' n6 f0 V# I' Y7 @2 A
    UF_UI_write_listing_window(msg);2 s) B. P+ D  s3 z
    UF_print_syslog(msg, FALSE);) f: t& e6 i& }
}
1 g& t( b( G3 t  G1 G
7 x/ W# |5 b, \0 w) Z#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))1 q1 c# _6 k+ o/ l! i
% \3 c5 Q1 q( f# n$ u
static int report_error( char *file, int line, char *call, int irc); s' h- i0 r0 T% u  y6 z
{
: F7 u- o7 m7 E    if (irc)
9 |9 v! v+ j) ?2 z    {
, X) U8 M, ]! B) N* V        char err[133];( w  A1 \8 k8 R4 W- G
6 ?8 o* g3 j: t0 \% f
        UF_get_fail_message(irc, err);
6 ?0 Z+ g1 E; S/ J! {7 _        ECHO("*** ERROR code %d at line %d in %s:\n",
, A" |" L( b+ C9 w2 r. ~            irc, line, file);# v  z  y# A: n& x- s9 V4 s0 L
        ECHO("+++ %s\n", err);
2 a5 X2 F8 t1 m2 x4 ?        ECHO("%s;\n", call);
, F1 W+ S7 |$ V1 `, i" c    }" f3 E; j: ]+ A( M4 ~/ {  V
% Z7 d5 r3 u4 t% @: v* ^  X
    return(irc);
1 Q# V/ x! d; x0 Y/ h}
; b8 R# }- o5 F2 M! U' X9 _; S# }( k
/*ARGSUSED*/4 C: E5 n1 r" ?9 b6 o4 {( I
void ufusr(char *param, int *reTCode, int paramLen)0 @, K8 H% s5 Y3 I: t
{
' u- S9 u  E( r) q}
" B9 T4 T% ]$ i( i2 L" d" L2 X8 v- U" ?+ y( ~! D
/*ARGSUSED*/
" K+ k5 k- M/ w7 `  I/ f! \void ufsta(char *param, int *retcode, int paramLen), @/ Y  V" {& h. x
{
2 P3 _# r0 e6 U" P}; s8 k7 A$ r! @
! ]9 z* o" N( H3 d, I: c' O) M: M
int ufusr_ask_unload(void)
: I: i) J& T3 Y2 k* [+ M{% x, R# x" I$ z8 o% C
    return (UF_UNLOAD_UG_TERMINATE);
+ |' }' E: J2 F& n}
. g$ p# R- M! t& g1 d0 w# _7 E4 X  a2 f* v% c
void ufusr_cleanup(void)9 G4 N" V, g6 i$ p" b( R( r
{3 L1 m9 }5 K% v
    ECHO("NX is shutting down - running ufusr_cleanup\n");# F# @2 R9 n) J- Q- m- G6 p$ Z
# A, B" o  C4 M# J% n+ V. [
    /* put your code here */0 P* w  c1 W/ U" [5 \, T) q' _, d
}[/mw_shl_code]" G7 \' ?" _& F# `- S/ 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之家站长

积分
82162
QQ
 楼主| 发表于 2020-2-13 08:43:55 | 显示全部楼层
licxsw 发表于 2019-12-25 08:49) U& Z( {8 N8 Y: n: e/ t
请问这个函数是怎么用的?有什么用?
* f0 R9 Z6 w. a- R. B
入口函数 改成 ufusr_cleanup ' n9 w6 I" c8 |8 E% }

' z1 g/ O) r: l6 c# u意思是 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二次开发专题模块培训报名开始啦

    我知道了