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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x
) d. m7 Q. u3 T4 S
NX二次开发源码分享】关闭NX后,做点儿事5 s8 z3 f3 N+ N  j6 S
, c( p9 R. k4 z0 i1 O
[mw_shl_code=c,true]/*
% l: Q; X3 H- l; @, D
% D+ H5 E: z+ a) ]+ I    ufusr_ask_unload is invoked immediately following the completion of ufusr" v" Z8 T8 u* `% w5 i* R- V
    (or ufsta when the dll is run from a startup folder) to find out when you( J( r9 [' V9 p
    want the dll to be unloaded.  If ufusr_ask_unload returns
. p- g. g& l0 E1 \2 r# N" j1 \    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
+ P! t2 M) e, \- N    unload when NX is terminating.  To prove to yourself that this works, set! u. C+ q4 |) |" K3 i: S" W
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not& `6 b  U% J% P2 q. N0 ]2 ]  E- y
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX/ {8 V0 B9 V8 n# u. a2 _. F
    Log File and make a note of the full path to the syslog which will be shown
: c2 S3 [% G, l1 e    as its own first line.  Run the dll built from this code (nothing noticable
! D. b) s7 _  K  @+ d6 X4 F    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
! Y: ?6 g4 B! s0 f/ {, C3 ]/ z    see this line near the bottom:5 p; c$ c, E! K2 {: T

, l8 G; y. i  nNX is shutting down - running ufusr_cleanup
7 }" \( X' {) ], ~2 K' y  T8 r) ^- y5 }5 n" t
*/& ]6 ~# q6 x- t  @
#include <stdio.h>" S2 ~4 r' B$ {4 f' z" j/ W. S$ x3 |
#include <string.h>
( `! Q! U) |* A: |#include <uf.h>& [$ G4 p+ p% X+ A8 ]. O
#include <uf_ui.h>
- e& D  t; b+ F3 Z* Y#include <uf_exit.h>
+ p- L1 ~9 w% a7 ~: J. x4 w; D# X7 M
#include <stdarg.h>
* H% ~. c+ @; t! c4 `; f% o  r( V
6 D9 t; p% w8 B& w0 a; l" t; cstatic void ECHO(char *format, ...)& j5 H' j3 d. |5 H
{( E5 x) g$ Y+ v! W3 m* M" I1 q& ^
    char msg[UF_UI_MAX_STRING_LEN+1];- ^: H2 V; h' I) D4 J  _
    va_list args;
7 m8 f# b- v) o! l& [    va_start(args, format);
9 O1 _+ J0 k* O; o2 D3 N    vsprintf(msg, format, args);
5 N+ P. h. c/ s& o$ m0 T6 u; l/ X    va_end(args);
6 b* N7 E4 w0 |$ g1 m" Z5 s: `    UF_UI_open_listing_window();
. B, a( x  G+ Q& A3 k2 T    UF_UI_write_listing_window(msg);( t4 Q+ j) c* F& C& |9 V
    UF_print_syslog(msg, FALSE);% A! g$ G7 D. _, ~
}. O7 m& H. W# r( e4 H3 C) Y

/ \' l6 ~/ B, p7 N, k' p#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))) ?4 K0 ?# f& O4 F: ]' C) f9 N0 h
: ^4 O9 E9 A6 l+ x! w- J0 h& f5 }
static int report_error( char *file, int line, char *call, int irc)0 j: W9 u  ~" u- @
{% o" Q  M+ y7 F8 ^: s4 W
    if (irc)4 B$ o, A* `- B5 z8 X1 U0 c
    {
, w3 k5 \  Z6 C! z; n3 X        char err[133];7 a  [& a) h# a) f

% b: b1 ?  @) o3 |- V        UF_get_fail_message(irc, err);
& B/ P) t/ T2 I" S& n: x6 Q        ECHO("*** ERROR code %d at line %d in %s:\n",6 t, u% l$ Y5 x, s8 i7 j6 e
            irc, line, file);" E3 B1 K* V; {6 P
        ECHO("+++ %s\n", err);
, q$ f0 O. X$ B6 @# o5 M1 e; O1 o% ^        ECHO("%s;\n", call);
2 D. D2 a5 Z' ?9 l# P    }
/ Y+ z$ _0 {$ c9 H
) b; {% Y' }3 N. |  h3 O    return(irc);$ f9 h$ L; n( E8 s2 J( e/ G+ m
}
, c4 n: R: I8 |; K2 R9 g* v
  [8 b! w' H6 Z) t  c# `+ n5 D/*ARGSUSED*/
7 ~* M$ R2 |% l& Z" L/ o6 y( evoid ufusr(char *param, int *reTCode, int paramLen)
5 j5 o. q7 c6 k7 w  ?( S* ^8 k{
7 G" I# Z$ g3 v! H9 ]}
& t4 e1 A# }7 Q* h+ x; C& k2 m: X  U: g
/*ARGSUSED*/
  y9 I7 j+ Z  s0 Y6 L6 Z4 k" tvoid ufsta(char *param, int *retcode, int paramLen)
6 O( f- |/ d' O% U1 I{
3 w5 p* B3 o# ~) _. O; q- g9 I}
0 t% W8 o3 }# w# @+ x" k+ T$ \, h; V+ v% z. ^6 G% D- \6 U4 W8 i
int ufusr_ask_unload(void)
3 q; g, Y' p4 z/ c) J{# P# g+ ^) n; k3 Z, L
    return (UF_UNLOAD_UG_TERMINATE);
4 e: D3 w; u9 b& A, W, k}
" ]: X" H0 b/ n% e9 t2 O' K# ]- j% O- s# S
void ufusr_cleanup(void)
3 M9 r3 E6 K6 g5 f4 W* |{, `$ e0 {8 d: ~3 ]# s, U( I3 N
    ECHO("NX is shutting down - running ufusr_cleanup\n");7 N" g0 }1 ^4 }, \0 E3 `: Q
6 A* c; R  d1 F; p9 }
    /* put your code here */
/ {6 _2 ~9 k* C}[/mw_shl_code]
1 j  m+ e0 v4 s& a& m' i
上海点团信息科技有限公司,承接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:490 l% A% F# M# ?( h2 p7 y
请问这个函数是怎么用的?有什么用?

, z5 [0 }* E/ \7 {3 ?8 K' ^% M入口函数 改成 ufusr_cleanup
7 ~: X* t" l4 T! w7 \7 c# _- Z5 D4 ^+ x
意思是 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二次开发专题模块培训报名开始啦

    我知道了