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

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

  [复制链接]

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

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

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

x

9 J2 c" W3 r' ?4 bNX二次开发源码分享】关闭NX后,做点儿事6 `  v4 f/ c1 A' R/ c/ U
8 {3 ~# }$ U$ U4 i, R- r
[mw_shl_code=c,true]/*
5 k- C" N! j: Q- O0 s/ H& t& i4 H5 @6 D7 w- B0 P/ l
    ufusr_ask_unload is invoked immediately following the completion of ufusr
+ A/ j# e  A7 D- H% ~7 U1 u& Y0 w4 i    (or ufsta when the dll is run from a startup folder) to find out when you( g# T# a5 ?/ m; a$ Z' T
    want the dll to be unloaded.  If ufusr_ask_unload returns8 W* Z% z' _3 y) @" m; \
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
0 P* Y: e+ ~: G+ J8 D    unload when NX is terminating.  To prove to yourself that this works, set* c/ o6 H( o  U' `1 _) d
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not- D, W2 g3 g- W' H% ~
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
8 j& H$ q1 l+ S    Log File and make a note of the full path to the syslog which will be shown
$ I$ D; U' S6 j7 }/ X+ ~    as its own first line.  Run the dll built from this code (nothing noticable1 w4 t, c0 `9 U8 ?, U, K6 }
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to' G/ j3 ^7 D4 P9 M/ W
    see this line near the bottom:( ?) X. f1 N: \0 N& r2 \  H! S$ x
( H: f$ I; d: W3 o: B# s  q+ b4 p
NX is shutting down - running ufusr_cleanup! `! P2 }! ~8 w& ~3 q5 P
' M9 u- w. _  b9 s& S
*/6 v* P! B" W. V5 Z9 L* k+ u
#include <stdio.h>
* M, ^9 u$ i! E* W$ N#include <string.h>+ z2 B3 r' w: o# e& @7 t
#include <uf.h>
/ u. C3 z' w2 M& [4 `#include <uf_ui.h>
% R# |. P) c' M7 a- H8 u& s#include <uf_exit.h>
- \( ?5 q0 O* D2 W# s; q4 L$ `6 G& {+ X2 \
#include <stdarg.h>  y: f8 C7 M, u& ~8 K! `

- Q% L3 }3 x- X, Dstatic void ECHO(char *format, ...)8 g1 G& o# ^3 \4 G6 h! ^
{" O$ p! Q4 F2 V$ O9 G
    char msg[UF_UI_MAX_STRING_LEN+1];
; X* _- l- w+ m" V    va_list args;
( A% r3 r+ Z, P+ a2 G: B    va_start(args, format);1 X; P% l4 L! Y+ D3 V
    vsprintf(msg, format, args);
" P( ]- I- U3 ~# i4 ~8 a  m$ D    va_end(args);0 ~  b; K& L8 q9 _7 R2 I' U
    UF_UI_open_listing_window();
3 I1 C( p) c2 [: q, O4 W! Q. \    UF_UI_write_listing_window(msg);- ^6 v$ B9 i( B! M8 q1 X
    UF_print_syslog(msg, FALSE);; K* m' [( @3 N1 Z
}
# }. |0 h* |/ R9 k. ~8 U3 c
4 r( L* N- @* o, O5 {) e#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X))); i8 c6 s" }% A

2 Y  M- d) J- M3 I# rstatic int report_error( char *file, int line, char *call, int irc)
) I5 R8 W" A; \- Y{2 x( z. q3 _; z  ]- C; f6 |( g8 Y
    if (irc)0 I8 w9 [6 }" e# K
    {7 W- T; f5 T% U" W7 Q+ C/ v
        char err[133];
! k) Y# c) P" Z% G  B
4 R, S8 |) w( ^, k$ E6 b, O, _9 n        UF_get_fail_message(irc, err);' w, u5 J- O7 N
        ECHO("*** ERROR code %d at line %d in %s:\n",
4 \, I' F$ |& i& D6 M" ]3 w7 E            irc, line, file);
+ O7 N2 \6 b2 S. X6 v+ y        ECHO("+++ %s\n", err);/ F9 E% Z! K+ w6 z2 ]& I
        ECHO("%s;\n", call);3 P$ E( h. w/ y. n$ ^& p( ]
    }
) q; o2 q6 i/ y  J" ^* |5 M8 a( d) p, z+ L1 L# A
    return(irc);8 o6 f- _# N7 N+ T* L
}9 R1 n7 ~1 v7 w2 H7 L! ^3 r  U. b

6 c5 h( ]9 r. H- ^+ g/*ARGSUSED*/
6 J! X$ ]1 K5 l- K  F/ ^- ]- p. ivoid ufusr(char *param, int *reTCode, int paramLen)* E& L4 y1 q; A: @7 o, M) [2 D3 w
{& B8 ^. l* n4 B  v7 |
}' j" z9 ^2 x5 P7 x: x1 S
3 ?* N) g! K: D- Y
/*ARGSUSED*/. S1 Q) r6 P$ l! n% u5 z
void ufsta(char *param, int *retcode, int paramLen)
6 K, b& _! W" y0 Q3 X/ F{
& B. z! m" T! m8 E' z4 E}# i# j6 N1 x) Y7 ^( X- R: h* H! ^0 ?$ Y
2 {3 c" z2 I1 M; s5 \+ z
int ufusr_ask_unload(void)
' d% M( K9 n6 ?) ~$ Y{
6 J* T9 k! ~6 s! A& i2 V+ e4 |    return (UF_UNLOAD_UG_TERMINATE);
. m( c0 W2 W5 W}
' s7 s- e: v' |) P% d
1 T0 l% V$ b# p  s- K/ k' A, f* wvoid ufusr_cleanup(void)1 @) o/ Y0 T' L" O1 o% c. }. X
{
4 B8 z. }! N) U    ECHO("NX is shutting down - running ufusr_cleanup\n");' n4 v+ X; z4 R$ N; O3 l7 r
* a4 H, X9 j# D! A1 k
    /* put your code here *// j4 i: C9 ?9 @4 a* c' W. K
}[/mw_shl_code]! |) ~8 y9 `8 E& y3 {$ z
上海点团信息科技有限公司,承接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:492 a. T, Q+ y$ ~) h6 ?
请问这个函数是怎么用的?有什么用?

/ G8 ^) L" h, }4 D6 N入口函数 改成 ufusr_cleanup
2 Y. v/ B/ f1 }8 f7 F) K
3 A, U7 j5 c" g2 d意思是 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二次开发专题模块培训报名开始啦

    我知道了