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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x
! ?: ?9 N0 w% o* Z5 b+ S7 R9 N
NX二次开发源码分享】关闭NX后,做点儿事7 w2 k: h# h' N! g5 N" ]! m
  b2 |9 |$ `: ^( o9 w
[mw_shl_code=c,true]/*
4 X% F# Y$ J$ @1 W- s4 b4 ^4 Y, O4 f) B
    ufusr_ask_unload is invoked immediately following the completion of ufusr! ?& `2 ]* m) `4 V. P
    (or ufsta when the dll is run from a startup folder) to find out when you
, _7 C( \1 i: g0 j( c. b0 f  i    want the dll to be unloaded.  If ufusr_ask_unload returns5 F; a  i# o' e+ N
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
7 _1 a0 B" ^+ g+ Q! o( X1 O    unload when NX is terminating.  To prove to yourself that this works, set
/ Z  m, K, g' I- x9 x$ p  l    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not
' f. j/ h, r( o    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX# H: h, q2 W9 k! S) y* a
    Log File and make a note of the full path to the syslog which will be shown
* h% B6 \9 I3 a' g# c    as its own first line.  Run the dll built from this code (nothing noticable
0 ?8 d/ r+ g  }" X, v7 O/ I6 H6 \    will happen.)  Exit NX.  Find the syslog and open it in any text editor to' g! V) z; H5 `! X4 |
    see this line near the bottom:! N/ E% G  f+ m$ r8 V- J/ I* y
( @- W2 i* ]) j6 W1 c, I
NX is shutting down - running ufusr_cleanup
0 C' }. q! w2 K0 \' K! x3 M
# q: N1 D7 U' u/ x*/, i# N8 m+ f% h9 U- j/ n9 s% z
#include <stdio.h>
" N' j& x% Q+ e8 f#include <string.h>* c$ i5 j) G7 T; n8 S& n% Q/ y# o
#include <uf.h>
# W+ \. u& K3 v8 C2 l#include <uf_ui.h>
6 C; p% r& Y8 ?. G! p#include <uf_exit.h>  E; W1 a7 @  F( U- f( D2 K0 r

8 D# i6 E# y, @3 h#include <stdarg.h>  B' z, R* _% j7 _- G1 Q, a* N

0 z/ x( ]' C2 u' [  t6 l# Bstatic void ECHO(char *format, ...)
' L: u0 [* z+ P- r: }{
0 B' F& l4 W4 X% d2 V; W3 x    char msg[UF_UI_MAX_STRING_LEN+1];
4 y& M) D9 N6 f. m    va_list args;$ F! ^1 }( |  K' ?; }4 g
    va_start(args, format);! k$ I' J' G! ~0 u1 ]* U6 ?1 M9 `
    vsprintf(msg, format, args);' f# u' H% u( v" X& R
    va_end(args);
. J: o: j3 C5 T# x  S    UF_UI_open_listing_window();
4 ~# H, b1 c1 k1 `1 J( \; o( z    UF_UI_write_listing_window(msg);1 N7 f% Y+ z! f/ O8 p" F9 u! n
    UF_print_syslog(msg, FALSE);5 b$ g/ p. L% R1 q5 k. C
}
8 Z* w; R, p" e  J
3 q- H9 Y; T: R6 H  H: S#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))9 C, D) E- R& ]: ^# k" O2 y

8 X! P  u6 Y6 D- N  p+ pstatic int report_error( char *file, int line, char *call, int irc)
. i9 o, I3 O$ [! N; |{
( M5 g6 g1 t/ J/ G& M% n    if (irc)
8 w+ p- f2 L4 H4 J& W9 @" c# _) P    {0 m0 X. B) }9 w" f3 z
        char err[133];+ _% a( p" z, T; ~
% \6 V6 A) H/ b0 e3 Q+ U
        UF_get_fail_message(irc, err);# n+ K5 |9 r5 d1 n
        ECHO("*** ERROR code %d at line %d in %s:\n",- {9 j8 V1 U: a! }$ B. [; j
            irc, line, file);( D" E8 F+ v5 k+ j* m9 s# H$ i
        ECHO("+++ %s\n", err);, c- p+ i& G/ Q# ]& _
        ECHO("%s;\n", call);& z8 j3 T9 F3 G1 ]- u+ B$ Q: i
    }
, Z" Q; ~4 ^, |9 G: A3 B7 F% I3 w, w" M3 t* E  H' h
    return(irc);* H6 I0 f4 M7 R, ?, q
}
5 f/ G8 c  @& u6 x. S8 ^7 z3 e$ t+ [( m" G  Q9 X9 r
/*ARGSUSED*/
- x  p; v/ H% c5 r) r: Jvoid ufusr(char *param, int *reTCode, int paramLen)$ {# a2 B, Q7 O4 p  Q1 w
{* L- B$ F8 K& N; d
}- A$ y' |- e, Y* S9 ]

1 k& D) \2 D. h7 A' W1 a/*ARGSUSED*/
' F8 u* A* _$ O5 `4 Nvoid ufsta(char *param, int *retcode, int paramLen)& L% u5 N0 A, n8 N
{
  r+ N. Q" C) W2 l7 [& S" {! A2 F$ h}* |4 D/ h% @) Y" m  H) J9 a
% M0 r! k7 |1 [: M" p1 I9 {7 L( L$ o) M  m
int ufusr_ask_unload(void)
2 t9 u+ ~7 Z- I4 w# A8 |* `{
6 v* T$ h1 P9 P3 @6 z6 k    return (UF_UNLOAD_UG_TERMINATE);
5 z0 {" R' h# C, j}
2 ?; k$ Y5 Y/ d/ Z1 d* j8 h/ J0 [  r5 n4 }# x
void ufusr_cleanup(void)8 l7 [5 j2 ]$ }0 _, Y
{# |2 F7 V7 _8 v  R) P8 X, P
    ECHO("NX is shutting down - running ufusr_cleanup\n");# }5 S$ D2 n* J9 v; B

9 p. O% [0 a+ F/ y4 x: g    /* put your code here */' f% ?/ f9 c& W$ Z+ P9 V* e% N
}[/mw_shl_code]
$ K! T; d* N% _& G! W7 ~
上海点团信息科技有限公司,承接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
- Z  j0 i% i' l. K# w请问这个函数是怎么用的?有什么用?

+ g3 R5 Y( s6 _: j. ]/ ?入口函数 改成 ufusr_cleanup % F: _3 _: a) N$ H4 p8 g& Y, G& X
& p; I4 |( _2 ^: q0 Z! G- n3 C
意思是 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二次开发专题模块培训报名开始啦

    我知道了