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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x
) v: M: j; g) y: ?9 P* y) G
NX二次开发源码分享】关闭NX后,做点儿事
9 A& w8 D4 y3 E1 h
; q  H( X- P% v1 }* S% o0 N[mw_shl_code=c,true]/*4 k! p" Q- E1 C9 {& i- k

' i2 ]! g1 Q4 w- _    ufusr_ask_unload is invoked immediately following the completion of ufusr4 B7 g. Z8 N0 t, X
    (or ufsta when the dll is run from a startup folder) to find out when you* F2 m* [0 B; t# }
    want the dll to be unloaded.  If ufusr_ask_unload returns
5 l1 f' w' i0 J3 e$ ], Q4 v    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is3 M5 ]/ r+ l: }4 b3 \% m' n
    unload when NX is terminating.  To prove to yourself that this works, set
& C  G) ?% |1 x  [3 v8 K1 k8 x    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not* p- K+ ?0 G! B7 k
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX/ {/ y" O6 Q/ w  p+ {
    Log File and make a note of the full path to the syslog which will be shown
2 r) b) [' G+ P$ S: V2 W    as its own first line.  Run the dll built from this code (nothing noticable
# R  B# _! ]- H: O1 l  q' U' ?5 x    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
6 t7 \/ c( j9 q' g    see this line near the bottom:
9 M* Q2 L9 a* r; W% @$ Y2 q
9 z/ n) F2 k, T, y' W- eNX is shutting down - running ufusr_cleanup
6 {+ d/ h9 B9 }* `! k, Q% z0 @( r7 I& n) s* f" q: z% y
*/
* |$ j7 H: F/ v+ X/ h#include <stdio.h>3 c4 `: M9 z! c; ?, d" ~
#include <string.h>) {1 H3 h* w4 Q' p5 w8 c
#include <uf.h>
, m) i5 c1 r# f( C6 J: z#include <uf_ui.h>
. v6 [1 O- p2 h, w: ^7 w1 V! _4 v#include <uf_exit.h>
* a+ i3 A! g7 T7 z0 _% t' o5 v" {8 A3 G! _8 b8 O
#include <stdarg.h>. y+ _' G- q6 F( f
; ^3 B& @( e: M4 [
static void ECHO(char *format, ...)
+ ?1 q3 t! `6 ?/ d5 M{: k) ?( e& ?0 L" m2 R# U* i
    char msg[UF_UI_MAX_STRING_LEN+1];; Y2 A. U5 N2 f9 \# E
    va_list args;& T8 c1 W9 N5 o4 i5 F1 t; k: U
    va_start(args, format);
0 a4 ]/ Y! b1 c3 e4 |    vsprintf(msg, format, args);
' l% V. d0 ^; m2 b8 W- y1 h    va_end(args);
. [4 V9 g% y5 i$ B! L3 D    UF_UI_open_listing_window();
+ g# _9 g! q; U7 |1 O! x    UF_UI_write_listing_window(msg);6 f0 J* M; c: w3 S
    UF_print_syslog(msg, FALSE);
, K% T* I% j* _) E}/ G) j6 H; T8 V. E* L

2 W( T% I4 E. C! p  B9 N* J& W3 Z#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))1 Z, J2 D2 m+ ]3 W  T7 A6 _2 d
" X9 k8 h9 b7 O& y; t
static int report_error( char *file, int line, char *call, int irc)1 A1 v  P+ S/ F
{. `% \' h4 n, G& l% u. I( q2 D
    if (irc)
2 G# g0 w4 H* ~! M) Y    {
# q4 g) \, o9 n( {2 i' J: i        char err[133];
* O3 @5 s( u6 d& s0 q! k& Z0 ]* N  A
        UF_get_fail_message(irc, err);
4 V0 r+ \- V* X% G0 Z, T        ECHO("*** ERROR code %d at line %d in %s:\n"," [( E" p5 ^. G( s  N
            irc, line, file);: h7 O" V, M; F* S9 F
        ECHO("+++ %s\n", err);' D3 w2 k) y2 o9 n9 _2 `) I# V
        ECHO("%s;\n", call);2 u7 |5 S( g+ W/ @# R$ j
    }6 s- K1 Y- D& x6 |5 ]1 c9 J9 X
  a3 i  P* m2 S1 l( @7 V
    return(irc);' R' c: i. }- W4 U$ ~) E
}  q# X3 A  D  h/ ?7 Y( k/ o3 b

0 Z, R4 ?+ ~! ?1 m/*ARGSUSED*/
; Y$ q+ {" ]+ \! Yvoid ufusr(char *param, int *reTCode, int paramLen)
* k2 V2 L" c9 O' [2 i0 D! \{/ H4 j3 C8 M' z( d' W
}5 Z; B1 ~0 l. I) j+ ~4 c# h

0 W; S  z/ C1 E8 H, a! U/*ARGSUSED*/
4 \0 W7 \( ~  Pvoid ufsta(char *param, int *retcode, int paramLen)  U4 k2 |0 C6 q; v
{
- x- I9 w' ~( I}2 c8 ?% u( g7 M; q; K. {8 K
1 T: |: Z3 y& G/ B9 Z) D
int ufusr_ask_unload(void)$ j9 z# D! l" [6 C5 `6 g
{! r, {( V7 J9 n$ r& O
    return (UF_UNLOAD_UG_TERMINATE);
; C9 J; z) R: B}
6 @5 y+ E  G3 R: Y# E% a4 c& A' J* y  |9 k" N
void ufusr_cleanup(void)
9 i  J0 t" s, ~" O( G/ d/ X4 ]{1 b' y2 E& m: b9 z( R+ E0 p9 g
    ECHO("NX is shutting down - running ufusr_cleanup\n");
0 l# O8 s1 F- d6 ]* z7 p1 Y
" e- a" e. K+ D+ ?0 S    /* put your code here */
% j, H" e( j' H2 p" H6 I5 q}[/mw_shl_code]
9 @. I: @2 ^# Z! q; I, v
上海点团信息科技有限公司,承接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! u/ s6 ^% U: r; C
请问这个函数是怎么用的?有什么用?
% O; S3 i5 H& k3 c0 Q
入口函数 改成 ufusr_cleanup
" C/ U. S7 o+ B# _
7 t3 S' E) g+ U意思是 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二次开发专题模块培训报名开始啦

    我知道了