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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x

7 o0 R) v  S: ^) [NX二次开发源码分享】关闭NX后,做点儿事
4 L2 x; `& z; r! |: R# m, J) P: H' W4 a( s0 n, A; q
[mw_shl_code=c,true]/*
% A2 d* I1 b+ V. _6 O$ ^; x; G" t) `+ g8 u) s; n$ y' d' @" \
    ufusr_ask_unload is invoked immediately following the completion of ufusr
' J0 g$ t. ?+ a    (or ufsta when the dll is run from a startup folder) to find out when you! u/ ~+ V& \( |. U5 w& A
    want the dll to be unloaded.  If ufusr_ask_unload returns
# ?7 `4 J0 \5 M    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is+ N# b: d5 v8 m+ }1 \; U; f
    unload when NX is terminating.  To prove to yourself that this works, set% Z9 g) L3 g5 ?& o8 ^
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not
3 ?# i" w, E% n3 t. ?6 H' P    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
2 a; A- L) o8 K3 V  r8 @, c    Log File and make a note of the full path to the syslog which will be shown0 S1 a1 C9 G% @9 j# W
    as its own first line.  Run the dll built from this code (nothing noticable) A' ~/ B- ~1 j  h) L  i, q. o
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
. X# n# a: Z# O% Q2 X. \6 k    see this line near the bottom:& e; s( H9 N0 o! m8 t1 ^1 O- ~

( ?4 P$ g& w7 A' k# `, ANX is shutting down - running ufusr_cleanup
0 `2 H4 c8 S" q- @: w  `& }+ v9 v+ L( H1 F6 D* ]5 |" ?: _9 f. Z" e
*/' W9 a0 z/ b  P# i
#include <stdio.h>
% @3 D: G8 M" t! |$ T#include <string.h>" d. \7 E2 r5 g( ?4 ?1 j
#include <uf.h>& [2 E" T+ Q( Y( v; @* w- P
#include <uf_ui.h>
1 n( x( f# O' M- F" U#include <uf_exit.h>2 J1 q$ q  i0 Q6 P7 W" ]

. B9 S# F8 W( K! S# |' s/ \  W#include <stdarg.h>( _: F7 [) d$ d( P) s
; e( Q( C+ Q5 F( Q" r- x
static void ECHO(char *format, ...)+ c. a9 G. y" h3 m: C6 l
{
4 _# w+ S- Y! p! m- S    char msg[UF_UI_MAX_STRING_LEN+1];
& y- W( f/ ]* ?. w8 M% [    va_list args;
; G  f" K" Y+ ^! E: [    va_start(args, format);- y5 ]3 i' D) Y; H7 F
    vsprintf(msg, format, args);
1 K8 g$ I6 P2 e, w7 d, E) p% }5 w    va_end(args);( z# i/ Q+ X& V9 C. F9 U
    UF_UI_open_listing_window();" f# ~. m! p" u, ^9 Q  P
    UF_UI_write_listing_window(msg);
- D3 y7 g0 L( ]& b    UF_print_syslog(msg, FALSE);) h) y) p, I& M; M2 `
}. N) f3 H; F8 W3 ^& M

! v5 Z) g- Z( K: |#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))  ^# M# f/ |+ Q6 t
' Y8 j+ r" h0 @: y  y4 w% C$ n1 m7 v
static int report_error( char *file, int line, char *call, int irc)
8 J8 p* a  B+ r7 i, [{& e3 ?) s+ x* r- t4 h& u
    if (irc)$ q( T( |' I) |5 q
    {
( ~3 t9 S" r$ t9 W& J        char err[133];1 |1 y, ^4 g+ |) H4 z4 ?9 M! t! _* B
# U" W. i. K; V& c
        UF_get_fail_message(irc, err);/ b8 T/ A+ V$ ]& V2 @( D
        ECHO("*** ERROR code %d at line %d in %s:\n",
3 s7 @8 V- G5 N8 b- m; {            irc, line, file);
+ |5 f4 G# y& U4 v6 u" z+ a$ ~        ECHO("+++ %s\n", err);
+ y* x- K% G% G- K" g& y3 i        ECHO("%s;\n", call);9 }$ w2 K( w/ B$ a
    }( c' [7 g3 A. _3 d6 i

/ Y5 L! r. J: @% Q0 [' N    return(irc);
  G1 k# I0 z9 e& |7 A* ^}
2 K  \/ C+ B" N8 V, y/ k7 d% h; O  y  R
/*ARGSUSED*/7 H! c3 t5 m2 j, j9 `4 J3 B( n
void ufusr(char *param, int *reTCode, int paramLen)
$ R; c! x: |  q' |! \! N; u{
7 g3 F  A9 n+ G4 m- ~/ i2 H}: D# i' l+ Y. X
; T# ~* j# x  r: G4 ~3 W* v! l
/*ARGSUSED*/# Z' {+ U! Z, i6 ^
void ufsta(char *param, int *retcode, int paramLen)+ W# G8 [0 S+ P- L9 f+ u+ Q1 `1 n
{9 f8 f9 u+ A: N9 Y. q$ j5 _
}
7 m, \8 [6 d. j2 @$ B$ h3 w  F5 c+ l
int ufusr_ask_unload(void)
8 {9 X6 o# `6 P. P0 j) V{
+ v9 C% y* x' H) h# i    return (UF_UNLOAD_UG_TERMINATE);  v6 ?! ?/ c, M  d- O1 Z
}8 a* d, d$ b. p; P, b: S9 T

) k; m, Q( [- S% B# J/ _void ufusr_cleanup(void)( v" ~2 @$ j- V9 p' d3 ]
{; ]& E  m( j; S; g( C5 Z
    ECHO("NX is shutting down - running ufusr_cleanup\n");
; h& C: w, ^; m, W" N/ z
% ^) \( T" ]3 M( T1 Q) F) S    /* put your code here */4 H0 x  Y2 |% x3 d5 ^( Q4 h2 q
}[/mw_shl_code]
' L$ {- H9 a4 J: Q. h+ Q
上海点团信息科技有限公司,承接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:491 v" d: o8 q$ Y6 B. ~
请问这个函数是怎么用的?有什么用?

) \- I5 r7 y) e' d; G入口函数 改成 ufusr_cleanup + l; V* Q) \2 B! ^2 M  G1 C! p2 [

) }, t: k" V1 z7 ]' m3 c意思是 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二次开发专题模块培训报名开始啦

    我知道了