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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x
% M( T# m. R  m6 [7 o$ e& ^# |
NX二次开发源码分享】关闭NX后,做点儿事% ?2 w/ C6 U% l3 Z9 ?  e% Y
8 |9 o9 I& |. f# v2 H2 @
[mw_shl_code=c,true]/*
( D' h$ t) A1 k- Y7 Q! z% r+ u3 z) z) C& T- @% d
    ufusr_ask_unload is invoked immediately following the completion of ufusr
7 K5 ~9 [3 J  R$ A. R: H5 N7 G1 j    (or ufsta when the dll is run from a startup folder) to find out when you1 h7 |) [9 v) i+ r/ l0 W& S& n
    want the dll to be unloaded.  If ufusr_ask_unload returns/ Q- \0 K  i8 Z, Z/ I' T  ?
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
. }- _/ f& M( D+ w: u* J$ [    unload when NX is terminating.  To prove to yourself that this works, set; P% Q0 y4 W7 j
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not4 h! b- t; v/ s2 m& x' R
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX+ ~& K; Y, N1 Q
    Log File and make a note of the full path to the syslog which will be shown7 ]* R4 ~" e) u9 t, A4 I' g
    as its own first line.  Run the dll built from this code (nothing noticable
5 H; G) m/ T- S% a% S8 O    will happen.)  Exit NX.  Find the syslog and open it in any text editor to& s; X5 k, [- z& A4 q, l0 H
    see this line near the bottom:
1 }" L; l6 T6 t: |5 z/ Z$ S
* V, ^* f; z- d9 [4 O+ o, G4 HNX is shutting down - running ufusr_cleanup  c5 s0 k! ]' R
  F9 C8 W6 a7 J( o
*/* H# F0 l# T. ^; U, v
#include <stdio.h>
7 b2 U+ V, Z' s% d" O3 N$ l#include <string.h>
/ L6 z7 G6 c& k  o$ y, @) p#include <uf.h>9 D! F' H7 N. V; V0 j9 Z
#include <uf_ui.h>
# e( N8 s" E% I# l4 \9 V7 s#include <uf_exit.h>
  n) w; z1 B% g5 @, |/ A0 K! b' [% I: }9 k+ Q; M. a& a+ T! G
#include <stdarg.h>
7 E$ |, R1 k: K; ]/ J' B  C7 r
static void ECHO(char *format, ...)8 C! Z5 r- n: a
{
2 f8 ?  {; L% I$ T    char msg[UF_UI_MAX_STRING_LEN+1];- u5 e* J) a' ]! S8 q% `
    va_list args;' k6 O9 F0 U) ?" G) b/ ]7 \
    va_start(args, format);1 `' b! k( E! a" ?0 f
    vsprintf(msg, format, args);
) e- l0 g4 P1 |    va_end(args);6 r! J$ @# t: b. B" u+ E9 [: S
    UF_UI_open_listing_window();
% M! a) X8 o& p% Z/ J# f% N    UF_UI_write_listing_window(msg);
. c/ J6 _0 ?" \/ K$ N    UF_print_syslog(msg, FALSE);9 q# P  S' P4 S# i$ p8 y/ }. Y
}
! S0 O1 f& k2 l$ c8 {+ k4 M8 r8 n+ D  V( I8 J: U2 q
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))- a4 p, v8 n8 p9 A$ h0 d  S7 ]# o# Y

# c! c% j9 [3 r0 X6 S' l! L  O2 vstatic int report_error( char *file, int line, char *call, int irc)$ Y1 v6 y& _! }$ M$ n+ T6 g$ D' p
{( |$ t( Z# g* {2 _! u
    if (irc)) j& m7 g+ M( {( u3 M& t% ~
    {6 h6 q7 m+ M) P3 U6 V0 t# O
        char err[133];( ^0 [8 A4 c/ l1 p! E& `

) `% D' ?- y) y9 q; r) w        UF_get_fail_message(irc, err);
; C: l' ^- y* s8 C! R. c9 F  x+ Y! q0 @        ECHO("*** ERROR code %d at line %d in %s:\n",; [# u  I0 ~, X3 V
            irc, line, file);
) \" s, x0 G; |. C9 y        ECHO("+++ %s\n", err);
; J, \, Y5 E& {5 x        ECHO("%s;\n", call);4 I' S/ d6 g8 t0 w1 |% H
    }
( a; x; O! D/ T% @/ N* H" u: {& h+ c) I+ g4 l8 q
    return(irc);
4 K, W" _' l: s/ L5 ]' Y}# `, H5 p% a0 E3 ?$ }

" {$ r0 X9 P  X' t  Y# j# x7 S' d/*ARGSUSED*/
" r# e& h* R1 V+ `3 avoid ufusr(char *param, int *reTCode, int paramLen)# K) H" U3 D! v5 `' o2 m
{
  |% G9 r4 [  G$ j* V- x}6 Y# A6 {" e3 z
+ F2 y. a* D; L- ^5 M
/*ARGSUSED*/( P+ ?* Q  |; D3 o6 c% N
void ufsta(char *param, int *retcode, int paramLen)0 g* d! R1 k$ k# A$ R2 D
{
" t/ F: q# F; m# x}" c% T  g3 Y% T; I
3 C( j9 }3 l: Z3 }7 l6 h
int ufusr_ask_unload(void)
0 t) f5 O* k5 s; I: \{3 e& J. l* I6 W& @2 h. e
    return (UF_UNLOAD_UG_TERMINATE);
7 D, U( I/ U5 u. x  y9 h- a% Y; ^. A}
8 M9 v2 p  j% O$ h" B- P# b/ N  ?. n  H3 T. C4 c, _9 z( x5 f
void ufusr_cleanup(void)
/ a# V! p) R6 v/ `2 N. u{
, ^% p. m9 n& F- J; s. \    ECHO("NX is shutting down - running ufusr_cleanup\n");6 m1 N1 C7 s; F" s
% N. K7 w, c/ j2 `5 ?# O% v  h: O
    /* put your code here */- ], x# i1 q2 |/ w4 j! d. n; \
}[/mw_shl_code]0 `' ~) _- V+ D4 E/ c  x/ n
上海点团信息科技有限公司,承接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/ v- r1 \: I: \. |' f; n
请问这个函数是怎么用的?有什么用?
. a% `. L) W+ [
入口函数 改成 ufusr_cleanup
$ m3 \0 M' Q( C' u, U7 L
# o% `$ H: e5 D6 J; l  c4 b意思是 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二次开发专题模块培训报名开始啦

    我知道了