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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x
: k" t3 G+ B- x
NX二次开发源码分享】关闭NX后,做点儿事
6 r  }0 h* A3 a- _* x2 B3 S$ i8 t- s& J" p9 H7 _
[mw_shl_code=c,true]/*3 b9 g6 ~% M' j! n

( q1 B+ s4 r* Y5 h    ufusr_ask_unload is invoked immediately following the completion of ufusr
8 e/ o2 t/ h( m9 D) I4 r! {0 [    (or ufsta when the dll is run from a startup folder) to find out when you4 c$ C& G6 [  j& K8 V  {
    want the dll to be unloaded.  If ufusr_ask_unload returns& a, W6 E9 M( @. @2 t2 Y" |- p. r
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is9 I- m1 l; q$ d. X
    unload when NX is terminating.  To prove to yourself that this works, set: w* y# ^! F0 |( Y6 R
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not% o. w2 E0 G( m( W" s6 C
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX( c% ?9 u2 @. ]* F  q( o& \9 @! U
    Log File and make a note of the full path to the syslog which will be shown: A  s& N4 R1 p. K
    as its own first line.  Run the dll built from this code (nothing noticable
$ B, O! l+ u2 P0 }. e    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
& o  n3 K4 Y. L/ ~0 |" S  G$ s    see this line near the bottom:
, Q- W% J  D) M) [, @6 v+ P, k4 \/ y# c
NX is shutting down - running ufusr_cleanup
  B* v" Q) G" g2 L
1 X. S& X" x) i) S*/
: h1 _# g1 F% K: r1 \* `" A, B#include <stdio.h>+ p6 D$ e! l2 t" M# s8 X
#include <string.h>! F2 K/ g3 ], u6 |- v
#include <uf.h>: H1 V# W0 o. L
#include <uf_ui.h>
( j7 e- m/ M+ G; z#include <uf_exit.h>
! }) L& ?, s( F& T# t9 U& F! b* ~. M
#include <stdarg.h>
3 z9 I+ @* y% Z+ H7 E  H% z3 Q
# w! R' B, m+ w9 L. Lstatic void ECHO(char *format, ...)
0 ?0 v* l* W5 R0 u1 x& N) Z, d{
: ^1 V6 I% a. `, l+ j    char msg[UF_UI_MAX_STRING_LEN+1];
4 O! L) T7 j4 t# a! @, O( R    va_list args;
2 e. k9 N3 L! Y# w- S    va_start(args, format);6 O) ]3 E2 Y$ j/ z3 R. ^4 x! s+ Q
    vsprintf(msg, format, args);0 ?" B+ ~0 W, [) \
    va_end(args);
' u6 i" ~/ q& }( ^% S    UF_UI_open_listing_window();
+ s2 b4 O" N6 p; ~6 O    UF_UI_write_listing_window(msg);
: g, o7 @, o: b    UF_print_syslog(msg, FALSE);! s" c  o+ t4 O' I
}
* |% G* z2 x" O- G
* I2 H7 A, U4 g8 s% U, B#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))- H  r* Q4 ?! D% }, Q

/ |/ N: T( r+ k' J$ o, fstatic int report_error( char *file, int line, char *call, int irc)
6 F) w# E# s! N& `- N* Q{
9 l% y8 a' b' T+ p    if (irc). f: x8 T& ~% Y# f/ Z) i  ?
    {
& G4 V1 f' E2 n- b        char err[133];
2 \5 S3 R9 i" `! e# v; Y
3 C& y; u6 R, x$ F. V* ^        UF_get_fail_message(irc, err);( o" z$ C( S4 e' j& U( a- |
        ECHO("*** ERROR code %d at line %d in %s:\n",
& @( E8 g( Y" h8 u: G            irc, line, file);
. T" @  ]" |9 ^+ s6 ^: Y. ~2 Z/ \7 m3 l        ECHO("+++ %s\n", err);5 S- a- n- l. k
        ECHO("%s;\n", call);- h" \% i" D! F0 U/ u
    }
! B* D* F8 R: l+ x0 z* ^5 @: g" M( Y
$ Q4 j2 P; K1 [( Q  Y; p    return(irc);
7 F0 N; \/ O+ V8 l: }# P- W}
4 ^7 w( S; ?" p. L& `; ?$ `. l2 q( a3 R5 k
/*ARGSUSED*/
7 a8 E# R2 D) Z4 z! @void ufusr(char *param, int *reTCode, int paramLen)
$ {0 V, v9 U3 o$ _{
- F/ }/ s; J1 }! D}6 q, Y: @1 ?- a% \! u4 H

! Q6 k: e6 U( h; [9 U/*ARGSUSED*/3 f" u) D3 H, i  @+ O: \
void ufsta(char *param, int *retcode, int paramLen)
( W) F  o8 O# \7 I) g7 \- f& V+ `4 L{
( V4 m  e8 ~8 k% K  S}3 I, R; m- A" u) L7 |/ P

$ C# k" ?/ b; X. a5 ?% lint ufusr_ask_unload(void), X# ^9 @' P0 V! M( j
{
8 Y- j6 v3 _% i* x$ X    return (UF_UNLOAD_UG_TERMINATE);& R( e+ y! Z2 m. G& v
}
3 H: @1 r+ y1 h5 h7 [! N
3 _5 X9 }& P0 P7 ~5 C. Dvoid ufusr_cleanup(void)( ]9 o4 l9 J8 s1 M1 Q6 V; s
{
- X. |5 ^2 L* N' g6 b    ECHO("NX is shutting down - running ufusr_cleanup\n");
/ C5 H! j8 }) z+ b' ]- ^6 @0 \
4 _5 Y4 ]. }8 a/ a) s" i2 y    /* put your code here */) B9 I$ B5 i- J. ^) K
}[/mw_shl_code]$ q" }/ |2 Y4 ^, M7 [- g4 a
上海点团信息科技有限公司,承接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% j$ }9 \" C& q6 b
请问这个函数是怎么用的?有什么用?
0 W4 A& w" s: N( P+ ^! N% b& @
入口函数 改成 ufusr_cleanup ( O# K+ y- v6 ^1 N4 O/ G

% h2 V2 @% F, F3 j1 y; e0 f意思是 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二次开发专题模块培训报名开始啦

    我知道了