PLM之家PLMHome-工业软件与AI结合践行者

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x

$ s1 ?7 k, o3 a; X: TNX二次开发源码分享】关闭NX后,做点儿事
% Y: Y; ^. @" f* y$ w' w2 c$ l! F6 u" z0 c
[mw_shl_code=c,true]/*& M) G- {% U( }& ^3 R5 `2 v) T
, s5 D" W( X0 `. Y+ o
    ufusr_ask_unload is invoked immediately following the completion of ufusr
1 p$ J$ d# P7 w3 Q9 r5 d4 E    (or ufsta when the dll is run from a startup folder) to find out when you
7 Q* K# ]7 n5 s/ \' ^# P9 W    want the dll to be unloaded.  If ufusr_ask_unload returns
( O3 \0 T2 ~  M' Y3 n    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is! A( @$ a6 s5 ]
    unload when NX is terminating.  To prove to yourself that this works, set
3 B0 Q. g' J0 O1 G( A    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not. g' Q. [+ J' |3 z! i* Q, `, b1 M
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX0 w1 f4 s/ \( J5 ]+ _. y
    Log File and make a note of the full path to the syslog which will be shown5 ]$ _! A  ~  E% v1 V+ X3 h
    as its own first line.  Run the dll built from this code (nothing noticable
0 G1 }; M3 u- s1 u2 H7 N    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
/ a2 T. y$ E) I! v# G- O1 W    see this line near the bottom:
# ?. Y2 F. ]+ m2 ?
0 C9 l: X3 Y8 j1 [/ r+ P+ mNX is shutting down - running ufusr_cleanup) m: ?9 m; c5 @$ r: ^/ a

( k- Q4 J4 _2 O8 {9 f/ X4 r*/
: q$ l# S9 b; A0 p6 _' p4 e#include <stdio.h>
6 o( O6 S! o8 n- G4 j, I#include <string.h>/ H: p8 }9 d# G+ n. ^; s3 L
#include <uf.h>- q3 I: G1 p  b) Y: K% {+ ~
#include <uf_ui.h>
4 @! h2 W. N: M! A#include <uf_exit.h>. w- f) Z" \* d. \; o4 w- {
8 x! F9 k6 ?7 n5 @5 U  z
#include <stdarg.h>6 A0 [0 C) Y3 @+ k
6 D& t3 ?4 z5 J  g0 K
static void ECHO(char *format, ...)
0 g2 w  {" R, Q* E( d/ n8 R( Q{
( p- q! j  X  A    char msg[UF_UI_MAX_STRING_LEN+1];7 s% ^% n; k: ?2 O: P6 Z. t7 C
    va_list args;4 f( w* b, A9 l) F! }
    va_start(args, format);4 j6 l9 k* I; ?6 j
    vsprintf(msg, format, args);
: i& E* d) |/ r8 r8 D# v    va_end(args);' J: n! l+ d! t8 k
    UF_UI_open_listing_window();( u4 i) r; e7 u  ]' ~
    UF_UI_write_listing_window(msg);" e' @8 `8 V5 @' i6 h' f  T
    UF_print_syslog(msg, FALSE);
6 B: C$ a! Z& ~1 ?& {0 d- |5 F}& G1 [7 @, P1 L
! o+ Y8 a( R8 p( r
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
2 g* _  w) T& N6 g! _8 T  s7 a& L, M+ }' {
static int report_error( char *file, int line, char *call, int irc)
( t  p2 H3 M, K% S4 I{5 Z& `0 ^8 {% J
    if (irc)
3 g$ R3 ~. P; E- Q& N( D+ @1 Q    {# A) ^5 S! ^7 h6 C) e
        char err[133];) T% O3 E, [% I2 b5 s! [+ s; M
$ I$ w5 T( p0 z! ^& C5 C0 i
        UF_get_fail_message(irc, err);
2 W. |1 F9 M6 d& \2 k$ k( Z! \        ECHO("*** ERROR code %d at line %d in %s:\n",& T* }# X  |/ X
            irc, line, file);( e; {) a9 N, \# I4 `! {
        ECHO("+++ %s\n", err);
& Y* d4 c$ h! M        ECHO("%s;\n", call);1 T" i6 J1 g! U7 J, K
    }
  r) S7 S8 \& {7 i* p+ o0 V' y9 M8 x3 a
    return(irc);
& |" t5 T4 n3 x" J% F& i}/ D! U2 h; A* s" D7 {
# U( |% _! ^+ t8 o
/*ARGSUSED*/
  A5 I* s5 Q9 m+ ?! rvoid ufusr(char *param, int *reTCode, int paramLen)# A% ~! w% D) N7 |! A' i0 [% a7 p
{
9 {1 W8 N5 l. ~, a/ O0 X}
3 P4 m* L7 l2 Z
) i9 }4 m& ^2 a1 F/*ARGSUSED*/; t  G; a1 j5 t
void ufsta(char *param, int *retcode, int paramLen)
  x) A/ |0 U/ x3 g6 u" s+ n; D{3 d, ?. U1 L) H3 w; G- }' ^
}
, @5 Y4 W6 o$ O1 G5 a5 n0 u2 y8 Z1 @) M+ d: q
int ufusr_ask_unload(void)" `2 d) u) k5 C  z+ {" _' |6 v
{
3 M5 u. o+ M, Z9 `5 q# K. V1 E    return (UF_UNLOAD_UG_TERMINATE);
' c  }: u( k6 O. v& J% J}
# t. _$ k4 ^7 T: B5 M3 a
4 }: r8 _2 F# f7 y  Qvoid ufusr_cleanup(void)
/ g) M, ~# r  \" K, k9 X; a{6 ^* H2 m7 J6 I' `& q
    ECHO("NX is shutting down - running ufusr_cleanup\n");
1 B, T& e$ E  M" l3 k1 U4 C* s7 n$ @7 Q/ _% C4 e% r* C7 m8 s
    /* put your code here */: B# `9 B; b. z0 g# U4 ]/ ~/ B/ i
}[/mw_shl_code]
( w  M, r' n! N0 @3 h
上海点团信息科技有限公司,承接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
9 Q& H* d3 M0 I" @请问这个函数是怎么用的?有什么用?
. Y, w# H* X6 Y9 ?1 b) P
入口函数 改成 ufusr_cleanup
% u, h: I: H- S
  W0 {. _3 B8 j7 n4 ]1 U意思是 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二次开发专题模块培训报名开始啦

    我知道了