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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x

6 x' I) f/ e# o4 @* ^NX二次开发源码分享】关闭NX后,做点儿事" ]6 g9 Z; ]9 a% ]6 I( W

6 y8 e2 v' j/ }0 S4 [[mw_shl_code=c,true]/*# h0 b5 J' L+ ?4 e4 L; m4 {7 b/ u

" P$ u: ^- l% U8 j. [% _: Y3 ]    ufusr_ask_unload is invoked immediately following the completion of ufusr6 j; s, ^! d. Z$ Z" Q4 c) V
    (or ufsta when the dll is run from a startup folder) to find out when you
/ l+ Q+ _3 Y1 @1 j5 [3 U    want the dll to be unloaded.  If ufusr_ask_unload returns7 V) T7 E* _4 ]# ^
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
7 M+ e4 w+ d1 q7 [    unload when NX is terminating.  To prove to yourself that this works, set
' u- b/ u  e/ M3 P2 P    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not! `% X4 \0 g7 u1 `2 U1 n
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
$ V0 F' u# c& }5 v/ n    Log File and make a note of the full path to the syslog which will be shown/ @+ x6 l( D% n8 j
    as its own first line.  Run the dll built from this code (nothing noticable8 F1 E) i) x7 W$ ~8 k9 ~
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
( P9 T: D9 V; ^2 d. d; F    see this line near the bottom:
( E% G: u7 r4 N
$ A2 |1 h3 I/ Q# I& N' R4 ]: yNX is shutting down - running ufusr_cleanup. k- E1 _- d/ d
( L! G/ G1 L. W% I
*/
" J; O- ~1 Z! E5 j  e#include <stdio.h>: `6 J; g, U* K) @
#include <string.h>1 A- N* X7 x, J, h' d  L
#include <uf.h>; k. {/ C3 W. Y
#include <uf_ui.h>
7 i( Q& @# t7 z: b  @6 }% u#include <uf_exit.h>4 i, T( p& S7 `  c  N( e/ ^

- T) q" e; i5 a" s6 c# h# N' D#include <stdarg.h>: a6 a2 _* d2 |0 C- ]- [, ]2 X9 `

4 |" R' }, D, jstatic void ECHO(char *format, ...)* t- b% {3 j1 E4 Y. F: _3 j, d
{. ~3 l7 [6 L2 X8 \* Q
    char msg[UF_UI_MAX_STRING_LEN+1];/ v3 [; I5 q9 G4 }& B+ A
    va_list args;6 N+ P& E5 {2 c% h$ c
    va_start(args, format);
/ a4 @: h& j/ X; Z( {  O+ D6 Y    vsprintf(msg, format, args);# ]5 l1 a0 f' N( A& {
    va_end(args);
8 _: F# e# `' i0 B1 s6 L    UF_UI_open_listing_window();
* C1 G4 t$ [! H' ^- a$ S( S- O    UF_UI_write_listing_window(msg);, i: @: h1 [* y  _4 C
    UF_print_syslog(msg, FALSE);) g1 s9 E% ~% F3 C; u& \  J
}2 _1 G' L1 A4 p2 ]! t
# o4 Y" U0 @! {: v, L0 c$ }. L5 S4 o* _+ E
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))7 `# O1 o0 f  @) f6 ^& j, @
# U/ f" {4 ?; U
static int report_error( char *file, int line, char *call, int irc)
8 F. N( d+ z! m+ w7 @  J, }) ?3 R1 j{/ Q+ j5 b; U2 |6 l
    if (irc). i- r( x; m0 V( z4 v8 y; x
    {  F( K( J$ m6 _, P  T( _* h) q6 J
        char err[133];4 m7 z9 J; H. L3 L
+ _/ O, s$ ?' {
        UF_get_fail_message(irc, err);% h0 e4 q9 ]& b! o
        ECHO("*** ERROR code %d at line %d in %s:\n",
9 R5 l- Z  U$ r  |, W0 }! c$ r            irc, line, file);' H/ C- A* Z* c/ q2 d0 N
        ECHO("+++ %s\n", err);! H. y! h+ ], Q2 R: C0 J# r
        ECHO("%s;\n", call);
5 y0 H# p% F. K. A5 N3 b    }6 z: f$ _$ z( V& n% L# U2 c2 }7 H
' y$ F. C4 D) y* D' f/ ~: E5 a
    return(irc);7 Z! _. v- V, A2 C: f
}+ b4 n9 M' E4 Y$ ^4 `
4 I% r, u+ N- ]3 B
/*ARGSUSED*/3 ^1 P& \! `0 j3 F& n
void ufusr(char *param, int *reTCode, int paramLen)
7 M& ^0 ^& P) d8 A) i, j9 u6 y{
+ K$ o: H2 @- u" E6 p  D}* J% J+ H- Y4 d
' J% U$ x& t8 M4 w5 h! t3 C
/*ARGSUSED*/% g& b1 E: O; z. P7 [/ \0 ?) r3 t
void ufsta(char *param, int *retcode, int paramLen)
3 n; n4 i+ }6 o! I+ g& R3 Q{9 p( E- P. r$ H: l8 E( Q% g
}, K8 j; ~( \5 W4 S

7 L1 p3 s9 _+ {int ufusr_ask_unload(void)
/ d* s7 V7 {1 q/ c{
0 |. d" h: E4 k0 F    return (UF_UNLOAD_UG_TERMINATE);
# o0 S  g; c0 x3 }0 i}
  [  p$ a/ e- p; s, G' k, z- r
) C: f+ F5 F, V( s. G5 {7 d7 L$ Pvoid ufusr_cleanup(void)2 m; Z- K' @/ F2 X9 `8 p
{! v$ s8 ]% F3 [# |% |; F
    ECHO("NX is shutting down - running ufusr_cleanup\n");6 i- J, C# i* v) ~  ~# ^
4 u7 I8 e. }7 R3 C* T% ~7 ]* M4 f
    /* put your code here */+ E, h' r+ I% ~6 C. @: z5 a
}[/mw_shl_code]2 K; n) \0 q+ z) d; _6 f
上海点团信息科技有限公司,承接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
! X7 j2 Q* {, c: |3 a请问这个函数是怎么用的?有什么用?
5 E6 T) V1 e! p
入口函数 改成 ufusr_cleanup
4 m  U6 Z/ g5 r6 q; u5 T
- R# x- B9 v& w- V- c# {1 i' m意思是 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二次开发专题模块培训报名开始啦

    我知道了