PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

PLM之家PLMHome-国产软件践行者

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x

( C% V* x5 v3 ]NX二次开发源码分享】关闭NX后,做点儿事
0 V) T/ x2 C" q
6 k  U6 j: ~" f& k[mw_shl_code=c,true]/*( ]6 r+ V7 P: X8 ^4 O1 G  l
% Y8 H" N; u. B, q. E  p
    ufusr_ask_unload is invoked immediately following the completion of ufusr9 t2 z1 H, w- }. \' ?0 z; Q5 D
    (or ufsta when the dll is run from a startup folder) to find out when you8 y/ Z/ S* o2 k. Q$ i4 z9 p) t
    want the dll to be unloaded.  If ufusr_ask_unload returns# f  D, }! p# r& C7 G9 F8 j+ T, D
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is! Z7 O! Y2 [- @7 f- N: s& k" B
    unload when NX is terminating.  To prove to yourself that this works, set
- t3 g' \' t+ C7 F4 D% i    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not) v) R1 k; ]# h! Q
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
# N) b+ |2 }7 ]    Log File and make a note of the full path to the syslog which will be shown
$ e& H# r: F4 n    as its own first line.  Run the dll built from this code (nothing noticable% F. L. I( n' \4 v9 x0 \
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
& ~2 r" J* v6 S    see this line near the bottom:. G! d- t  b  Q& b0 `0 v, f

& J0 T9 b$ d2 b, Q7 QNX is shutting down - running ufusr_cleanup8 b4 d8 Q" u  T5 R% I# k9 O; L& J4 |
$ r* o( C& N7 [* g9 U& t: X8 I3 Y
*/' a, F7 n/ v) N3 X- a
#include <stdio.h>
- A2 b9 \# \* C# f#include <string.h>
) i' ^) M/ X  o#include <uf.h>
9 \' P9 W0 _$ J, F6 ?1 q#include <uf_ui.h>% e, p- F  p% @  c
#include <uf_exit.h>
) R- V1 Z" `3 t. `5 `& Y, P4 z+ D, f
#include <stdarg.h>! P& \( A: m! |4 D& n6 V

' z8 H  C% m$ B4 N6 [/ f/ Vstatic void ECHO(char *format, ...)
  C- ~) M4 f* ]) M  O- A- P{" J6 b) b* Q$ N# ^
    char msg[UF_UI_MAX_STRING_LEN+1];
! `5 ~+ V+ _, i& D  b  ]3 p, T    va_list args;5 w% Q. x* X, G* c1 J: O
    va_start(args, format);5 A* ^& L5 E4 W, T. x3 Z; y6 ?
    vsprintf(msg, format, args);1 e* R. o6 v) m9 _9 H$ _
    va_end(args);
8 ~$ t2 ]- `0 S7 o) ?4 K    UF_UI_open_listing_window();1 k( U! o2 n3 t1 O3 V9 N) |
    UF_UI_write_listing_window(msg);
; n3 W# w, J! r5 ^5 i' Y    UF_print_syslog(msg, FALSE);3 a* C6 S1 \5 m  p! w+ n& _( R
}$ U3 f* a0 a6 k3 p0 ?
( [5 ?# ^* ]; l7 g6 K8 f$ t0 e
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
, O- I- g% ]$ T8 D" V8 n( f, x, f: c. x# W% v
static int report_error( char *file, int line, char *call, int irc)* a$ D( P5 Y3 F$ J# D2 b- ~
{
8 x6 n9 F# J' t9 `    if (irc)3 A' d' w/ j2 Z) }/ \9 D
    {
. h; M7 B5 c8 ~# I" ]  |  N& Y' e        char err[133];
% i: E# _6 H5 T' ^" G- D* j) G7 T/ m$ o- ]) Q: j
        UF_get_fail_message(irc, err);
/ W9 R' ~3 U; K7 [4 Q- l2 ^3 B2 R        ECHO("*** ERROR code %d at line %d in %s:\n",
6 i# ~& p. D2 v+ x7 }: ~            irc, line, file);) m# E, ^) _3 _- X5 x0 `
        ECHO("+++ %s\n", err);
/ s7 Y, a3 u) ?2 }. A( O! y        ECHO("%s;\n", call);8 o- d0 [; D9 X( c5 h
    }& s* ], E( n1 a! V6 X0 D
- |& q6 {0 w% K9 I# ]: Y
    return(irc);% S1 @6 M7 e; u; T" @( q
}
( m; m, o2 c+ n; c; `4 Z/ B
+ `7 j% I# }6 |8 |$ l/*ARGSUSED*/
$ ~1 k$ V+ k% Fvoid ufusr(char *param, int *reTCode, int paramLen)
) i- I) D+ T3 f6 K8 X! `{
. l9 f) w- J/ H) z  m* ~/ D! o3 i}
: l/ t" B4 {+ j& _+ s! M  i; I5 A, D  c  C6 G* [
/*ARGSUSED*/
. R( O& Y7 o& gvoid ufsta(char *param, int *retcode, int paramLen)
  i1 ]4 Z- i) n! K( g{2 z7 o# r3 C8 A  E6 o+ i
}3 z) r6 s2 L- w+ K9 H) w* q
8 Q8 U& @% x- a% T  @
int ufusr_ask_unload(void)9 U  v  V! Z" H+ ?
{  b. r2 H+ _- R$ J1 i1 N  K9 Z- h
    return (UF_UNLOAD_UG_TERMINATE);% n3 L, D5 u) m: p
}; ?1 l9 k( y) n4 F3 B6 x
" @$ I2 S8 {3 G1 P. X
void ufusr_cleanup(void)* u8 ], ?6 y6 m8 H' l/ |
{
3 m5 [3 [; u1 V/ c* `/ q# N    ECHO("NX is shutting down - running ufusr_cleanup\n");# C+ N* |- R: ~! \( I' X3 z

( |, `0 f$ g0 o' I    /* put your code here */
- D: j2 Q0 m! R3 }}[/mw_shl_code]3 x) o0 u6 }4 m" O
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ 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
( D8 b5 t6 U: l9 @& Z8 C6 n' ?请问这个函数是怎么用的?有什么用?

+ F8 o4 ?1 m& N' T/ o1 W入口函数 改成 ufusr_cleanup
" R. f% z( ~8 [
, N) A" Q5 c) J; @- W( g意思是 NX 程序退出后,你可以做些事情 ,具体做啥可以自己写,就是个入口
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ 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二次开发专题模块培训报名开始啦

    我知道了