查看: 4493|回复: 5

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

 火 [复制链接]

6

主题

4

回帖

60

积分

管理员

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

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

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

×
" p7 f4 k7 E! c! E; o3 h
【NX二次开发源码分享】关闭NX后,做点儿事. N+ u1 u$ w, }9 E
8 P# X, V0 f% w: A! C
[mw_shl_code=c,true]/*
+ l, x, N- p0 T4 h: v( G* {
+ _! i5 j! R' a, ?9 }- q    ufusr_ask_unload is invoked immediately following the completion of ufusr8 {1 a$ L/ Q7 ]7 k( F" z/ b4 I, w
    (or ufsta when the dll is run from a startup folder) to find out when you, s8 |7 p( j  E# Q
    want the dll to be unloaded.  If ufusr_ask_unload returns
+ A2 O# x7 Z( U& S$ z6 V    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
2 @4 x) r6 ~: K    unload when NX is terminating.  To prove to yourself that this works, set
2 G3 ]: W* S5 f3 i& o! T4 ~5 O; Y3 m    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not! r2 F% p' v: A! e5 B' `
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
7 ~- q! L  J9 s' _2 [8 u: p6 r4 Z    Log File and make a note of the full path to the syslog which will be shown
6 A+ W- v* w7 V# }  [/ [    as its own first line.  Run the dll built from this code (nothing noticable
2 H8 S* J+ S+ d4 P7 F' R9 R# ]1 n& T    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
7 }3 u/ l/ d1 u+ r4 ~* E! x    see this line near the bottom:
8 u1 p$ e! w9 w* Y. W' c; T1 m, {7 d2 V  |$ K) p7 Q
NX is shutting down - running ufusr_cleanup
$ b$ f) c9 ~- C$ W' F& N" Z3 z
0 x1 r$ Y/ y2 ^# f2 N  l1 D*/4 l- K) P; B5 h/ v3 s8 B9 G
#include <stdio.h>" u' @* Y7 K- ^& y
#include <string.h>0 a4 N3 ^" |6 o" s# ]4 i
#include <uf.h>
6 h8 R$ i2 s1 ]& w( B$ S+ |* W#include <uf_ui.h>
' \3 |5 ?  E3 M' ?7 u7 r# \#include <uf_exit.h>( Q. T9 ~5 ~8 e

$ a* h+ J1 I& O5 J/ }#include <stdarg.h>
1 k) J* a  u; T& F+ ~
! q/ J* q* \, d! O  O' H1 Rstatic void ECHO(char *format, ...)  x( p4 t, W) t0 s; d' U0 [
{, C; h2 ]" @) i% W# }
    char msg[UF_UI_MAX_STRING_LEN+1];
" ~1 t! L  O% X# ]% A0 }/ _    va_list args;
+ j! R; p7 q& y3 q+ Z    va_start(args, format);
  M$ Q8 T9 K1 ~) U6 b$ T0 L    vsprintf(msg, format, args);, M# f! s% t2 c: F
    va_end(args);. H9 \" v5 y# g: F3 M
    UF_UI_open_listing_window();
: e- x9 P& o; w7 |( ^    UF_UI_write_listing_window(msg);' V) i, C: O0 {
    UF_print_syslog(msg, FALSE);2 A) }- x3 z4 B3 }9 Q+ |
}: L" v2 i- g# [; k1 Q, ]4 Q
5 o0 J9 d6 _1 l" V
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))$ _/ G8 F* X6 u) L

5 Q/ Z* {! |8 L$ Tstatic int report_error( char *file, int line, char *call, int irc)
, ?: V2 m! J  \- c9 a' x{9 Q5 ^' K- X1 w7 C) l5 x7 |% \! c
    if (irc)0 A" @7 {* V0 K- Y
    {. m$ t  B( O5 n& R) ~8 I
        char err[133];% ?) _; K& Z; S4 Z0 \+ w) Z

5 I# {' ]9 x# D' _        UF_get_fail_message(irc, err);
2 E6 f! I9 h4 x5 K2 g# V8 g2 y        ECHO("*** ERROR code %d at line %d in %s:\n",: V1 b0 k% h- Q) Z) A) U* s/ K
            irc, line, file);
# s* J, H! b4 B+ ], c' H        ECHO("+++ %s\n", err);  k5 k  e; @# x% p2 K
        ECHO("%s;\n", call);
' n7 x/ e1 Y" e" x  x! D8 I: ^6 }" k6 `+ J    }9 |2 |3 l) I+ }* r6 x& f

( Y2 C4 Z& w3 t8 H7 ]& {+ C7 Z    return(irc);! C* m" t! s0 x
}
+ r, H5 `  L" S  B# n8 S# v, J) l, V# a: l0 U7 P7 ~1 ]+ m% f
/*ARGSUSED*/8 ~8 r7 Q% h9 d9 H( @( O
void ufusr(char *param, int *reTCode, int paramLen)
! P7 S' _: J: i1 `, X6 o' o{- W8 `; E2 l, K: f8 V6 j1 F, e
}
7 S* G% n3 b( E1 E! F7 B1 V9 @' `0 k! f
/*ARGSUSED*/
8 l4 z" l; m% wvoid ufsta(char *param, int *retcode, int paramLen)% P# k* z, w- X( z. O
{
! n3 q; \) V1 i- G: o: A}
) p4 d: g0 b3 o7 a( k6 s" \+ K; C6 M
int ufusr_ask_unload(void)' l: x% M  v, p$ w% p9 j
{
  W1 m5 Z8 t, k$ Q1 J- Q    return (UF_UNLOAD_UG_TERMINATE);) m/ R  Y, D0 r/ N2 I" [0 \% E
}
! s  g. O6 {0 k  ^) w
2 h% T; \4 r$ n: l1 L$ m5 @void ufusr_cleanup(void)+ C# E, ~: _5 w8 |! g2 g
{
% S1 X3 T% S: G    ECHO("NX is shutting down - running ufusr_cleanup\n");
+ T. \: M3 Z4 ]5 m$ D. Z
; f7 o/ [8 e2 S% S1 D    /* put your code here */
. C8 l' W! s, H}[/mw_shl_code]
) K# M$ l/ _& D: I/ V
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

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
回复 支持 反对

使用道具 举报

6

主题

4

回帖

60

积分

管理员

积分
60
 楼主| 发表于 2020-2-13 08:43:55 | 显示全部楼层
licxsw 发表于 2019-12-25 08:49
" u; b* D/ w4 q( c% v' P4 g请问这个函数是怎么用的?有什么用?

$ n) F! I% {: m9 u2 Y4 d6 O. [入口函数 改成 ufusr_cleanup
6 ^7 d- c. V, Z, f: T8 I
5 N( J' ?$ J+ S5 b( o) |意思是 NX 程序退出后,你可以做些事情 ,具体做啥可以自己写,就是个入口
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.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
回复 支持 反对

使用道具 举报

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

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部