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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x
) L. K" p9 @: n2 f2 D
NX二次开发源码分享】关闭NX后,做点儿事
8 V' g! Y  W+ s: T' l, L. R- D% }' J  F% ^. X) w
[mw_shl_code=c,true]/*
* Y" g! M  S+ o" x# {8 \% ^* |
$ w+ ?0 K* Q# `9 C1 a7 y+ n& E    ufusr_ask_unload is invoked immediately following the completion of ufusr; X" L# x) L# f: U5 N
    (or ufsta when the dll is run from a startup folder) to find out when you6 s0 q9 H$ m% s* n
    want the dll to be unloaded.  If ufusr_ask_unload returns
1 \% }+ n9 T3 |5 l- s4 c    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is1 u& Q( s0 b. J% ]3 j4 X7 j/ e' z
    unload when NX is terminating.  To prove to yourself that this works, set
& a+ C" b) g. Z" Q3 [    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not% e1 Y" G1 b$ r; Z; l1 ?- P% r, m
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX$ Y+ r% D/ e( E7 I% k; I& k6 S
    Log File and make a note of the full path to the syslog which will be shown
: C; G% u+ c- J) r! z. D0 Z1 X    as its own first line.  Run the dll built from this code (nothing noticable
+ X1 y' k  ?1 c  m  Y: h! E6 B4 O    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
: t# E6 B) k- r% x9 [    see this line near the bottom:
3 X5 I0 ]5 P4 a, b
0 c3 R& N# n4 F4 l+ HNX is shutting down - running ufusr_cleanup
, s3 B% M. J7 G/ n3 {
* a  C  K# X$ A* p, U*/& m+ o+ a' w% K1 ?9 ?5 ^
#include <stdio.h>
, y" ?2 F# @6 m$ p- t9 ~#include <string.h># O% V- R, v$ A+ m5 v) r+ r0 ^
#include <uf.h>9 Q3 O4 f$ z7 _, f  B
#include <uf_ui.h>
5 g& X1 X/ P+ D/ a7 b$ q#include <uf_exit.h>. M: p4 C8 z. u+ @4 Z

5 `3 @- F1 J" d" n5 s$ h#include <stdarg.h>+ V/ E( z6 C$ J3 }: Y0 q2 x- u

, T, S# t8 S2 Y  A% W: }static void ECHO(char *format, ...)9 x7 v1 _  F( N+ F
{( \' `8 k7 G: [# a
    char msg[UF_UI_MAX_STRING_LEN+1];
  T" h4 O3 R  N  A' ?    va_list args;! r2 e3 o+ Z5 t6 d2 l2 x
    va_start(args, format);
9 K' K7 a' X- ~* q    vsprintf(msg, format, args);
2 t: r  c! @# Z# {: Q" ^  D    va_end(args);* P- m& b$ `, W! y# `. G* {4 \
    UF_UI_open_listing_window();  _1 ~! i! H7 k& Z
    UF_UI_write_listing_window(msg);+ ]" f% Y7 r) v0 Z9 Q* E* s
    UF_print_syslog(msg, FALSE);7 b* c% P5 f# l0 l' j
}
' j7 ^; |4 w3 B, ?' L
! b5 V4 [/ O0 f9 G/ N  f#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
7 d7 ^: u) B1 Q; f6 A0 H) |, X8 l/ d
* _. L# d  }  q" @" ~static int report_error( char *file, int line, char *call, int irc)
/ a9 l5 l6 |( j3 k{+ C- C+ v% X/ _* @: o3 E& f
    if (irc)
; E# V: S  W7 }8 ]    {
2 k8 X: J! {* h, C0 ~- V+ N5 X        char err[133];$ i$ w2 E$ W6 K" {

* f; M- j7 W+ }9 ]9 l0 H        UF_get_fail_message(irc, err);
" g% j4 H! ]. p9 `1 o" N        ECHO("*** ERROR code %d at line %d in %s:\n",' X9 j1 `" r/ P% s& G* b" {) N
            irc, line, file);
0 |; N8 I" l9 {- u- d! U7 L0 b        ECHO("+++ %s\n", err);$ n+ T3 y, T8 `8 i+ h
        ECHO("%s;\n", call);; ~, p9 H, n. p
    }! k: J1 Q5 r; J- R$ e, a; [- N$ O
8 n& l" I) c/ A  b7 X
    return(irc);
1 ~/ E8 ~! v9 A& r' k+ Q}
* C( q1 W2 V4 q$ m/ _
7 y  `1 B9 V" I/*ARGSUSED*/
: R" w( L4 n0 H; w& w! d6 G" bvoid ufusr(char *param, int *reTCode, int paramLen)8 v; u6 m  A0 h' o$ A. u1 ~' i
{
/ i6 T$ p8 M2 ]; L6 g2 z}3 v! Y; \! {' S' B! Y

% Q+ w: Q" v$ X0 r. Z6 J3 I& Y/*ARGSUSED*/
" x) O$ I* X+ S; F. ?5 H- F  l2 Svoid ufsta(char *param, int *retcode, int paramLen)
5 @# ~" O; p9 y" f, b2 t! C% ^{
' j( B7 X' K, i/ c2 S) N4 E& C}
  @% s& A5 _& o
$ N2 x8 L6 O, u; s0 \int ufusr_ask_unload(void)% ^' e$ ]! @1 F) N% P3 @. M0 M  b
{
" I: E; s8 x' W0 A# g2 }    return (UF_UNLOAD_UG_TERMINATE);
- n. P9 t" x* x( h}
5 Q  l( T1 M  n* `8 x- z- p1 w- Z% g3 G$ Y! J2 }  \' ?; Q
void ufusr_cleanup(void)
7 P, ]* R/ p  f6 l0 f: G4 x) r{
+ p: {$ M7 n6 P$ j    ECHO("NX is shutting down - running ufusr_cleanup\n");8 f4 A6 c) Z5 T) B# d6 ^4 f
1 i. z/ w! y! s( K! A
    /* put your code here */
1 c, n$ p" |; P: x}[/mw_shl_code]1 b: v  V( J# ]6 ^
上海点团信息科技有限公司,承接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, O9 c5 `) ]' d! Q
请问这个函数是怎么用的?有什么用?

6 v, P, a8 ^& i2 N1 y1 Z. J入口函数 改成 ufusr_cleanup
# q3 c/ ~% i# g* R; m7 Y1 w) W$ I8 L9 P* ^- u* G: a* Q
意思是 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二次开发专题模块培训报名开始啦

    我知道了