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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x

: i4 z. e4 @3 I( t  cNX二次开发源码分享】关闭NX后,做点儿事
, c$ B" B( F  f8 i5 t. o$ b7 P8 o- W; l' T; A( q9 I. T
[mw_shl_code=c,true]/*) _3 B% H: e" C2 W) r+ P

! B1 d/ @( \5 T5 |, d3 X$ l    ufusr_ask_unload is invoked immediately following the completion of ufusr+ S0 d  V) g4 F
    (or ufsta when the dll is run from a startup folder) to find out when you
$ o" q5 M, j/ p% D3 p    want the dll to be unloaded.  If ufusr_ask_unload returns
# R' `: [$ |: ?& S& ]1 \2 E    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is. w8 d, G3 u3 f5 f1 S8 W
    unload when NX is terminating.  To prove to yourself that this works, set
1 f1 N3 [4 I2 b0 q    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not
2 H& B, v' n- k( u; Q    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX9 X4 Z; _" D# d& I3 N: C9 O
    Log File and make a note of the full path to the syslog which will be shown; y* v; P! Y7 e) {% x2 C
    as its own first line.  Run the dll built from this code (nothing noticable
; X- ^/ B) [7 x5 [7 R/ K! M! L    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
& @9 |$ g6 b3 k8 Z    see this line near the bottom:# Y. _% S: q& X5 W" g* ^, N7 S( R6 `

6 e  F; z8 [# M, n$ ?9 w5 gNX is shutting down - running ufusr_cleanup
; K' I8 I# u- J( |3 x0 [$ {$ d5 i/ P' _3 c; U, w& [
*/
2 W- B* w) i, p9 p3 k5 o1 y#include <stdio.h>
4 A' M) @/ f7 ^1 t8 m5 ?/ _, A#include <string.h>) s) @, C3 ^) x" \- p# E
#include <uf.h>
+ @1 H1 ~, \  l8 C#include <uf_ui.h>
% a0 d. o2 a* K" _#include <uf_exit.h>% d3 Q9 ?7 h: ^4 f% ]
0 x, y) @( W& w& I2 e# O5 Y
#include <stdarg.h>* P7 W7 {" {  s% P7 @0 \

) [: ?4 F" |$ `static void ECHO(char *format, ...)
4 Y2 E0 `: }% x2 B! H{
: K& r% @& ?  P5 K9 t4 a    char msg[UF_UI_MAX_STRING_LEN+1];1 }3 [: e4 A, G
    va_list args;
3 W: }8 C4 [- k! ^- ~: a) k1 w- O    va_start(args, format);
9 z( v/ V4 n- u, G- G2 ]    vsprintf(msg, format, args);
5 q7 q9 P1 L# j8 }5 ~    va_end(args);
: O& f  k  e# ]2 u( `    UF_UI_open_listing_window();, P, U' ^5 c" v  Y! d' R0 \! p( s4 z- C. `
    UF_UI_write_listing_window(msg);. @7 ^7 L5 ^7 t2 {# n" v
    UF_print_syslog(msg, FALSE);- \" d7 [* }" f- q. X$ u
}/ j: Z8 o4 M* h0 O+ V

. U7 ~0 j  g; u  g/ @#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))* D; Y8 k# y  M
% J" v6 q! j' L$ K4 y/ X% Y& n
static int report_error( char *file, int line, char *call, int irc)
- ^: @3 u7 @/ T: j2 h' c{, h! X% G8 i7 t/ q
    if (irc)
. L! Q4 O8 l. ]& h, O4 u    {' P1 b% }4 G& W7 H
        char err[133];
. o6 X2 i) u) T& d  `4 G
/ I; n' S% B+ [        UF_get_fail_message(irc, err);, `# n6 `! I* P
        ECHO("*** ERROR code %d at line %d in %s:\n",# h! x6 D: K7 p; ~
            irc, line, file);
/ B- M0 Z* v" ~        ECHO("+++ %s\n", err);/ m7 A% e7 k+ m
        ECHO("%s;\n", call);0 L; d6 X- R; v; |. C! u& y
    }
6 Y' x: Z2 c" a- `: z/ Y6 R3 O7 @5 x8 ]2 q! G# }# E+ d
    return(irc);
! m$ c/ C2 U% M}
  g' Y' n$ y0 q2 x3 l0 `
* Y5 m9 ^9 M6 ?/*ARGSUSED*/% i$ h6 s3 j7 n/ T
void ufusr(char *param, int *reTCode, int paramLen). L' [& M+ W9 C$ y$ |2 v
{' i8 S: o/ R- Y0 z( w2 l% Q
}
) ^: S2 h$ w9 f1 {3 Z) g- l; V& A5 w9 y0 e; U
/*ARGSUSED*/" D' j& I% T, l$ g+ F+ Z9 V: n
void ufsta(char *param, int *retcode, int paramLen)1 Y8 W$ N/ P1 m. S7 |+ C. K+ m
{
6 r5 O" {/ ~0 w2 r3 H# s}+ F, T9 T0 D& s; Y! ?* r
0 A7 r1 H$ C  |4 O
int ufusr_ask_unload(void)6 ?: l2 L; v) m- E
{
  z' l" J& H3 v. [0 d: }    return (UF_UNLOAD_UG_TERMINATE);
# B; b! Z$ \& B  V/ t9 @' @, p}3 s* x9 ?7 C/ w2 L2 `' V3 I
5 A! `) S- z; P2 t2 F2 S
void ufusr_cleanup(void)0 p( ^. W! h/ e! q  H, ?$ b
{( U8 w6 n# l8 b9 h
    ECHO("NX is shutting down - running ufusr_cleanup\n");
2 b# P, z+ u6 y! l% x1 T" u+ @/ A" x- p2 u. |# k/ P* T, P% ~5 }' d' h
    /* put your code here */
) F% X; u. Z4 G" C6 N# z6 m- Y6 {9 Y}[/mw_shl_code]
* p4 t! w6 T0 F, L- W: r
上海点团信息科技有限公司,承接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- h& I, H/ w' `$ R1 `
请问这个函数是怎么用的?有什么用?

" ]% }) u& e& j5 q+ M- K: q入口函数 改成 ufusr_cleanup 5 _" A& f- I+ o. @- W/ V( U1 N# m

( m" \) T: M( b: \& w0 P意思是 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二次开发专题模块培训报名开始啦

    我知道了