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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x

' W& A5 ], T% X; @; `, _4 TNX二次开发源码分享】关闭NX后,做点儿事
( [* w# x( G! q' k+ B1 O: o. C5 Y& S0 I5 O: [" s
[mw_shl_code=c,true]/*" v9 e" v) o, [' P) j( B$ O
( n2 D- Y# Q; B& Q
    ufusr_ask_unload is invoked immediately following the completion of ufusr
( R9 P: s5 O# h) g9 G+ F4 s. O    (or ufsta when the dll is run from a startup folder) to find out when you6 C) K- @' s4 k( E' v) U8 @
    want the dll to be unloaded.  If ufusr_ask_unload returns
" S. E& j  H7 G    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
$ ]+ Y7 L+ }3 @4 y/ `    unload when NX is terminating.  To prove to yourself that this works, set! U$ T  w1 @# ?
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not) J) y0 _' L! Z3 F* ~4 t, s+ ]
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX: R3 b: e$ P0 L7 a
    Log File and make a note of the full path to the syslog which will be shown
* Q0 M7 G6 S2 d' G7 V3 Z    as its own first line.  Run the dll built from this code (nothing noticable
" F# T, {& Q5 y  R. t3 u  W    will happen.)  Exit NX.  Find the syslog and open it in any text editor to! A) C# F) }" `. n: e
    see this line near the bottom:6 q/ E& ]+ V- N$ k

) F2 [$ a/ f  O6 z; S3 R/ ^( |NX is shutting down - running ufusr_cleanup
/ N# ^# G3 p& p3 l# U( D9 Z! U" I7 E/ `0 D1 Y1 {
*/! _6 B$ w; M( J
#include <stdio.h>
& P0 F) R4 ~$ r  U$ z: N% B- N" A#include <string.h>
/ m0 v2 _: @: ?: \- c#include <uf.h>/ F8 X, ~8 B$ Z7 L- @
#include <uf_ui.h>
, J9 \4 J% Q# Y! e3 n3 p( h#include <uf_exit.h>6 E+ L4 L5 t/ f, ?! K2 k( ^
' q. ?. s7 e4 D3 J$ v" `1 @6 s4 r
#include <stdarg.h>5 i4 ?' A2 N1 j8 {' f% O( w
. y' ~  q9 f: ^9 W* y: [
static void ECHO(char *format, ...)
! s+ x5 m/ F- \3 {% g# ]- ~{
/ e" |6 F+ G0 i9 ~    char msg[UF_UI_MAX_STRING_LEN+1];
8 e* R! F, B1 l! z. k: O    va_list args;& }# T5 t& o# m3 c& P
    va_start(args, format);
$ t. w6 X. m9 c, R; z    vsprintf(msg, format, args);) n% g# H' k2 j- F: `- s
    va_end(args);! u1 ]7 D& [7 a% x; W; G7 T
    UF_UI_open_listing_window();& c4 @- P/ p! W9 E
    UF_UI_write_listing_window(msg);+ f) g# ?  q. G' y0 s. F  S
    UF_print_syslog(msg, FALSE);, R, r8 |3 u7 {2 Q1 \3 L) }
}  Y- J# H9 K- b: r$ `5 w+ B
4 A, s( T1 E- V7 v" f
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
3 w& R9 k, w6 e: _% V' ]+ U
' n/ w2 F. p+ [* pstatic int report_error( char *file, int line, char *call, int irc): ?9 Q  u6 ~  |9 Q. P2 |
{
0 ~1 c+ {. v1 X7 J8 a+ X    if (irc)( d8 k6 g6 F9 e
    {
( b3 Z3 n( t2 j% W* R5 G' V        char err[133];
2 K# N7 K0 w+ J5 ]
2 J( U0 p$ T- a5 ?3 o" m        UF_get_fail_message(irc, err);
2 L, [& l7 I0 V/ Y# S  {4 j9 V        ECHO("*** ERROR code %d at line %d in %s:\n",; K% U; y' F( e( ?; Z
            irc, line, file);: v5 J+ ^4 B" w# j7 f& M" n( ?$ @# c
        ECHO("+++ %s\n", err);3 s0 W# q4 o3 N9 s; t
        ECHO("%s;\n", call);/ j1 I" q/ C, ^; w. J
    }
' G( {" T- y- ~1 m1 ?) L  x2 C" ~0 s! @7 F- k# R- l
    return(irc);
5 H, Q2 Q! i' o. G/ E}4 z3 S1 a6 g: G0 _- {

: j9 X& Q  q! h8 w% T8 `& K6 m" a/*ARGSUSED*/. w( q" A5 g/ `
void ufusr(char *param, int *reTCode, int paramLen)
' o2 z6 r6 @( l7 {{
+ [" A" I# K  R4 J+ x. b}
- t; C4 o2 R" n6 T. F0 K6 B/ s+ @% A# k' ?& W
/*ARGSUSED*/
/ ^% ]  R" |" M7 uvoid ufsta(char *param, int *retcode, int paramLen)
2 B2 V9 y' l! |/ Z5 y0 \3 O" u4 m3 v{: ^- s3 W& L( A: S' x' Z# i
}1 v9 M& E- I- o. g1 a! M( D( S

; u  {7 d% X0 B# v* v3 Vint ufusr_ask_unload(void)
1 W5 Q- v" q3 k* g, {- f4 \% c{1 M; S6 a5 w7 n2 a5 u
    return (UF_UNLOAD_UG_TERMINATE);
' E. {2 L7 i& t, _' I8 P, L8 j9 t}
3 J2 t% @* U9 ^. d( ^0 E6 t3 ?: N2 y4 O" N) [
void ufusr_cleanup(void)& z" V7 O( E- K& L5 J7 A- H1 J1 k
{
, c& C" x5 E3 {6 p8 F4 d    ECHO("NX is shutting down - running ufusr_cleanup\n");2 E+ Z, {7 S5 L

; P- j1 h, N9 ^& w4 K. c' F9 m    /* put your code here */
2 O4 n. \3 j! E# d}[/mw_shl_code]9 m6 q" m7 W$ ?  K
上海点团信息科技有限公司,承接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
! B+ ]6 w- G8 ?1 G1 P6 o3 N9 K请问这个函数是怎么用的?有什么用?
' m9 G2 t+ C2 {1 L/ c! D
入口函数 改成 ufusr_cleanup * I  v% ~4 }% z% Q& f

1 d# t( l  e. s意思是 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二次开发专题模块培训报名开始啦

    我知道了