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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x
% Q8 \- O0 {; f8 h8 ~8 C; l
NX二次开发源码分享】关闭NX后,做点儿事
3 u9 h4 ~7 I2 k' o" x% h8 J% x
7 }5 k% j+ N; j/ F+ a$ {4 |, D2 l[mw_shl_code=c,true]/*
; H$ d& b( F# }/ F9 H
, g4 Q4 a* ^$ p    ufusr_ask_unload is invoked immediately following the completion of ufusr
* Z$ A( `7 `/ i5 |' A3 B    (or ufsta when the dll is run from a startup folder) to find out when you
2 w! x' z" p9 b3 w; k    want the dll to be unloaded.  If ufusr_ask_unload returns
0 ~9 f# [7 N6 l$ Z" w7 o* A    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is+ z1 {! y- _4 ]0 ]( H
    unload when NX is terminating.  To prove to yourself that this works, set0 `) F+ ^6 L6 S; x
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not
+ ~5 q- V! d# g; G0 ^    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
- R" f$ H8 w9 O! L9 L    Log File and make a note of the full path to the syslog which will be shown
1 F% T' Z9 o5 c1 [    as its own first line.  Run the dll built from this code (nothing noticable
& X3 H; t5 O' J9 A3 ?4 O$ m: d6 W& z    will happen.)  Exit NX.  Find the syslog and open it in any text editor to  I7 w' B& K4 @
    see this line near the bottom:) i$ V+ ]" L; A  ]' v" l4 P2 i

: p3 o$ K9 j8 z* G; XNX is shutting down - running ufusr_cleanup2 u! D5 b5 b9 e
, r6 o8 z# Q" @2 h
*/4 X( H3 n5 b! I
#include <stdio.h>) o8 N  e5 J3 G( M5 [5 e4 D4 Q* I5 H" p
#include <string.h>3 Z' l7 e- l! W2 ?
#include <uf.h>( l! m  q6 C* d0 o! H
#include <uf_ui.h>
, r! E6 r6 O0 |# y#include <uf_exit.h>
9 e4 m$ V- B$ c, `" K0 L2 k/ O. X; S- k) K" ]
#include <stdarg.h>! x& c9 U+ `& B" N- a

# {: U" S9 r+ f  [& Vstatic void ECHO(char *format, ...)# k+ J+ V  O7 x+ L& F
{
8 r9 W7 W# _* i/ h. Z) s0 S( a% S3 P    char msg[UF_UI_MAX_STRING_LEN+1];! [4 ^0 [  k0 x7 [* R* N* Q
    va_list args;
2 D" T3 g5 Q- Z# g6 l* H    va_start(args, format);# K, l) H6 q; j$ f! f9 J( _: q( V6 m
    vsprintf(msg, format, args);( A* [: Z- R- `7 Z
    va_end(args);
4 q* H1 Y3 R, E3 j- E- c    UF_UI_open_listing_window();" X2 V$ q8 N) w* x
    UF_UI_write_listing_window(msg);
$ a& J% T% K# \    UF_print_syslog(msg, FALSE);
" A& ~9 ]) f* u7 j}' ^8 R; u2 \' z7 m! `9 F

  A' y3 \/ ^0 H#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))" G8 P* \# h9 h# R' l' K; g' ?* I; y
7 ^! D5 z8 p' E. {: b* A
static int report_error( char *file, int line, char *call, int irc)3 A3 c) W2 @8 o6 [) z9 w. H  t
{8 N: ^0 M! l5 H+ {% B' d6 W
    if (irc)
: M! M* s5 o9 A    {9 e8 u, ]/ g1 W, z: Z, j* y
        char err[133];" l* r+ {7 d, W1 ]
; s4 G: E  |# ?
        UF_get_fail_message(irc, err);, s4 X. m/ `" y! X  K7 z' K) h  G
        ECHO("*** ERROR code %d at line %d in %s:\n",; ?; X( e6 y, ?2 ^; g
            irc, line, file);, o5 u/ z& ^$ O1 v& [- L; k
        ECHO("+++ %s\n", err);
7 l( g& f# ~' v- w4 j3 }        ECHO("%s;\n", call);$ x( S& ~$ g4 o+ G: Y$ s
    }3 O' c+ P% n* u# ~% y4 v
/ B1 r) g9 R) \$ \) m
    return(irc);
+ Y! |- o7 _$ s  ?& z0 B. ~1 X}0 M, A: P- U7 A1 `& n5 L& `
. n$ W5 F" Z! E  @" S- d
/*ARGSUSED*/" r; N% W. I: W, A2 k) N
void ufusr(char *param, int *reTCode, int paramLen)6 u) D2 S9 q5 ]) C
{# E" B  Y; D" p$ ?: W
}
8 @* e' H: [# C+ v3 y- _1 \; ~  }, H, q  P8 v
/*ARGSUSED*// ~1 U; o* f" A4 t; E
void ufsta(char *param, int *retcode, int paramLen)4 H" J9 i% G  v, [- F
{
: o. j% D! R& [% ^% w) k}
  @+ `- w, j$ T* G8 x, T& l1 N/ |9 O) U+ T+ e+ E! U
int ufusr_ask_unload(void)2 L, ?3 X6 Z/ J
{
) Y! e: }* N0 p6 k    return (UF_UNLOAD_UG_TERMINATE);
1 H5 v7 ?( x( ^4 e% |  D7 c4 m}# N' z' y, `( J! U! L

8 t7 ~7 A. |5 T: E6 x/ }void ufusr_cleanup(void)
7 _, z/ n( b% H5 c  ~' [3 u9 u( F{1 }7 {1 ]  M- M( `- `# V/ j4 V( W
    ECHO("NX is shutting down - running ufusr_cleanup\n");
* r" k) L% s' f3 w2 h; Z
% }; E$ [% }, F    /* put your code here */# K. Y! _8 k1 {5 C. }% H2 t1 U- T1 X
}[/mw_shl_code]7 n0 O1 P$ h3 j: G4 q: Z! `" H9 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:499 j& h+ M- t, b: S! K
请问这个函数是怎么用的?有什么用?

, o! Q* f0 q8 s1 @" b入口函数 改成 ufusr_cleanup 0 Z7 [1 S# q0 A- o% U. A
- ~3 }4 j, b  e! z4 @6 a! Y+ R
意思是 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二次开发专题模块培训报名开始啦

    我知道了