PLM之家PLMHome-国产软件践行者

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x
4 E' W* `* K0 G9 Z9 z: B
NX二次开发源码分享】关闭NX后,做点儿事
0 ~& c' K( z% n+ _- R2 ?- h0 O; ?' ?4 l! r# v5 e
[mw_shl_code=c,true]/*
/ z3 d1 F* S/ C" j/ _
# Z/ c  T( i% c, z8 h% U    ufusr_ask_unload is invoked immediately following the completion of ufusr
& ]8 ]0 b% M' q5 y/ x    (or ufsta when the dll is run from a startup folder) to find out when you
/ @+ I( x5 t& Q9 R    want the dll to be unloaded.  If ufusr_ask_unload returns& @5 t& d& B6 R5 q2 A
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is: ~: p3 e: k( e4 b
    unload when NX is terminating.  To prove to yourself that this works, set- a9 W5 P: v' _- [, ]
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not# p5 m# U. {/ Y8 z* c
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
3 H( I* q1 @" L" q4 S. u: R    Log File and make a note of the full path to the syslog which will be shown
7 s% I$ {5 G# \+ ?2 q5 |1 b    as its own first line.  Run the dll built from this code (nothing noticable
/ t2 B2 w+ N5 o    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
+ b5 l# Z' n& z  Y- L/ W7 z, S    see this line near the bottom:
& U, }6 B+ X6 w/ l8 `; X7 j& C+ D
1 A# h0 ?  W( cNX is shutting down - running ufusr_cleanup
8 z" i# {; P7 A. z7 e" I0 g# i: w+ q6 y* D6 ?1 F
*/
* W! }" m* e7 K" R9 i7 {#include <stdio.h>, y( j; ^5 k1 ~+ [. r  x7 C
#include <string.h>
" n: f0 Q( M9 z& T4 X% V# v#include <uf.h>) _1 _4 e$ S" Z7 U
#include <uf_ui.h>3 t; S8 a; x2 E9 g' E6 ^
#include <uf_exit.h>
- f1 e' t* O) D( l: \2 j' e, c$ l# ?7 a5 [" c  F/ U
#include <stdarg.h>  o1 ^6 O' i6 R& S- J* q

, A& M% Z1 }* R6 }( C$ ]( R, S6 ^static void ECHO(char *format, ...)
  u  O2 i' I3 |, |1 g+ y: |& c{
+ M* C$ j6 [6 _1 A" @    char msg[UF_UI_MAX_STRING_LEN+1];' v3 p# C; k0 {0 U1 b. M4 p' x2 A
    va_list args;
8 f8 ]4 l6 x4 [& Z) |( R; z    va_start(args, format);5 \+ N% \0 Q7 m$ J
    vsprintf(msg, format, args);
% u5 h9 Y9 s1 g% @, f& m1 [    va_end(args);3 Q# e) R6 q' s: b7 u! l* P
    UF_UI_open_listing_window();
% X4 x. }" m5 G+ q# F    UF_UI_write_listing_window(msg);: A3 c4 A) g" m  v7 N7 z6 L& P
    UF_print_syslog(msg, FALSE);
! ]9 g5 j9 b" T3 ?* h, y}2 j7 U8 E/ l$ G; a1 D0 P8 f& s
5 @* T1 d2 N) o) U! T
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
) }8 K3 J; B5 @& w9 g0 @8 }; R1 X6 ]9 a% z# Z8 ?$ T$ \
static int report_error( char *file, int line, char *call, int irc)
7 b- E0 Q6 H2 H% }5 Q1 H{
. d; q0 u7 b, n# G9 |    if (irc)
# Y' B# T0 F( y+ E4 f! z8 Q    {- \0 p' E0 d7 p5 A
        char err[133];
1 V# O6 B, l2 p9 I* l" x+ d5 |. [- |$ u, E" P
        UF_get_fail_message(irc, err);: T- N, v, _+ I7 v8 t4 z, a# r$ o0 t
        ECHO("*** ERROR code %d at line %d in %s:\n",
6 Z- n7 x( y3 B3 X2 D; z" ?2 |  l! o            irc, line, file);
, p  f! C" E$ ?1 K* U        ECHO("+++ %s\n", err);
0 b; G% \, H8 M, H        ECHO("%s;\n", call);1 b4 [, Z6 ]  ]; P  O+ S. g( T
    }8 B" u. N) q; r8 l" X

5 E4 {% H; I( ^    return(irc);6 y% t% r2 y8 x" S- U; w, k$ ?7 h3 I
}9 z& Z! @; C! N; B& l5 [7 O

7 v3 ^) {: G0 }7 F6 p9 w/*ARGSUSED*/
# b' S, E  M3 r8 q# `void ufusr(char *param, int *reTCode, int paramLen)( i5 L$ Y  `/ S. n6 n
{: z$ ?& R; z% C! }$ B
}; n1 ^7 V# D1 V8 U9 I- [1 p

1 e# M0 |7 g: j0 O/*ARGSUSED*/
& k  e, Y; o3 r/ T, nvoid ufsta(char *param, int *retcode, int paramLen)+ c2 W8 \9 K+ F. j. S
{* J* k& T' M4 a2 ]. g( x) D
}5 G/ v* |' L  [' M: y

. R8 G( A2 ]2 L$ I( g1 vint ufusr_ask_unload(void)) T6 p9 u  R9 n$ N" S" P: f& ?! V
{
9 a9 m) {* [) \5 w+ D2 g9 Z; @3 k    return (UF_UNLOAD_UG_TERMINATE);7 T  G+ |8 m  Y% @$ N/ C' c# A8 b3 _
}( `4 D+ _7 _& N0 {  P- c8 k) n6 o

, R0 D1 C0 A4 A: K7 _; Qvoid ufusr_cleanup(void)- E) }# B4 V: W
{
1 m. s( Z5 q9 l0 e) Y+ t7 a2 v4 e    ECHO("NX is shutting down - running ufusr_cleanup\n");- \& E+ f9 h) Y5 r1 z
6 x* R$ G0 F2 ]9 u0 w; o
    /* put your code here */7 @( b% k' L% P# T$ r$ k: B; ?7 Q
}[/mw_shl_code]/ }% o3 V) Y  }7 n0 b
上海点团信息科技有限公司,承接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:497 K+ E" m9 ]# n3 @# N2 X
请问这个函数是怎么用的?有什么用?
1 l/ n! S9 ?2 z5 Y
入口函数 改成 ufusr_cleanup
  z4 G- k; R% P9 c: v# @. T- a: v2 N3 l
意思是 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二次开发专题模块培训报名开始啦

    我知道了