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 3606 3

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

admin 楼主

2018-7-12 11:12:47

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

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

x
4 b- _3 @* A, q" |* f0 k7 o
NX二次开发源码分享】关闭NX后,做点儿事$ J7 a$ @+ Q. q5 t# ]# {* Y+ y

9 ?( @  C" N! r: l# `# @5 q. ]' e[mw_shl_code=c,true]/*0 c) \( h/ E- S  r( _6 o

% z/ h8 H/ R7 ], d( }8 F; m# W) B    ufusr_ask_unload is invoked immediately following the completion of ufusr
6 K, G+ ^2 h8 I5 j    (or ufsta when the dll is run from a startup folder) to find out when you
* _, z2 w: h- |9 |; @3 ~* _    want the dll to be unloaded.  If ufusr_ask_unload returns
. f) W! R  p" b  n    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is8 a5 u) t* r: T4 C( W, h3 U0 ?# B
    unload when NX is terminating.  To prove to yourself that this works, set! W' g2 v* Q0 y
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not/ h6 c! L  V3 w
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
7 N, b+ o: x. c. l' L) ?    Log File and make a note of the full path to the syslog which will be shown
0 [, @$ D0 ?+ y2 G+ Q: M    as its own first line.  Run the dll built from this code (nothing noticable
* ~+ ?7 H2 d. ]+ ]+ H$ J  ^# k1 W    will happen.)  Exit NX.  Find the syslog and open it in any text editor to) s1 F* x8 E8 L( F( w8 i
    see this line near the bottom:3 O" n7 Z, |& o1 N* e+ l
' E! f) I- ]5 @
NX is shutting down - running ufusr_cleanup/ |' l+ w( D4 m( ~  Z: N

! S1 P' r& B. O. V1 z*/
; p: O7 d7 z6 Y2 `+ B: ~#include <stdio.h>
( x# m2 J  r; K#include <string.h>, P  l8 v! L  t1 u7 E3 V; c2 C
#include <uf.h>: d9 C( C. _6 R( c% f9 E/ o- |1 y3 O
#include <uf_ui.h># e3 K7 h. I) D" U5 t. U0 j
#include <uf_exit.h>
' w( Z+ g' C) V+ L  ^
+ {- _" N+ W" j' Z: l#include <stdarg.h>
, H: Y4 h* b( h  K$ n) O9 K: K) f' E# D9 |
static void ECHO(char *format, ...). v6 O+ p! H5 h$ ]4 z
{  x* U. F) _! d. j; A6 o. ^) M  M
    char msg[UF_UI_MAX_STRING_LEN+1];
; b. q( z7 ~5 _    va_list args;& T, [1 q3 X+ X7 c3 M4 C2 `
    va_start(args, format);4 x# P+ n/ t: Q% L# d1 i0 c
    vsprintf(msg, format, args);! g5 ~/ [8 f3 X- h/ E; f  e
    va_end(args);& g0 a- F3 q* {9 m7 L5 L$ s
    UF_UI_open_listing_window();( E3 i: \: X& C4 V6 E. h
    UF_UI_write_listing_window(msg);" m: `( O3 v9 p, D( P# t
    UF_print_syslog(msg, FALSE);' Z; Q! @0 U8 t! M" y: N
}
5 [2 q, S; v, c$ E
/ j5 \& _3 h" T) X9 q& [! ^#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
: X2 b* T% K2 p- Y9 Y
: k/ O" V- \1 S1 h  r3 o2 xstatic int report_error( char *file, int line, char *call, int irc)
8 l) P" s  Z) L8 R: V: z{& |0 o/ V5 f% a8 Y
    if (irc)" g0 B5 V: @2 g; K# m3 X) j
    {
" o1 i! X+ H7 B  F8 B1 e        char err[133];3 X/ Q* W6 B3 a6 V1 N& ^! V9 a

  x6 {* g, m% g/ f2 X        UF_get_fail_message(irc, err);' D' }( Y; C0 ~5 x
        ECHO("*** ERROR code %d at line %d in %s:\n",1 X( P8 i7 y3 o
            irc, line, file);
; G/ v, Q" r0 T. k        ECHO("+++ %s\n", err);5 a) v& N: @( W/ \: P
        ECHO("%s;\n", call);. y6 M! u/ ?6 a' Z3 n6 y
    }2 m' ]: \5 i. m1 d% w$ |$ B; B

$ n+ I6 X# D. f; K/ f5 B/ r2 @    return(irc);
' |8 O1 T1 A$ P& x. w# Q}
& c+ V! G3 K; Q$ P4 A
2 |/ K$ c+ F* ?' }1 F/*ARGSUSED*/
/ z# u( Z  r4 a5 q+ p( C1 ?. X$ K  hvoid ufusr(char *param, int *reTCode, int paramLen)/ D6 a% K1 S4 j% |: R& e; u
{- B/ Y$ U6 z2 E0 x% t( a
}
: C& |! V2 Y  i
2 J& i2 z3 S! k7 @' N7 W/*ARGSUSED*/
) w% F6 u- H. w5 ?  Mvoid ufsta(char *param, int *retcode, int paramLen)( o/ q7 b$ u" e+ j( O
{) D9 T$ D- H/ u
}1 \- P8 o  Y) Z  e
3 Y* I( W; R6 F# F  b$ O4 u' n; k
int ufusr_ask_unload(void)
# _8 \' E- L7 ~) v/ P6 d{! y/ E4 P4 F( ?" ~
    return (UF_UNLOAD_UG_TERMINATE);
7 F- G, `; W8 c7 F: }5 O}( M3 O7 _* \# G# q' K: A
4 t8 l1 H0 f( A( n; q: i
void ufusr_cleanup(void)3 U  w* g( j4 l1 m$ m8 l
{: X4 }" [- s. Z. \. s: Q4 |1 x! K6 |
    ECHO("NX is shutting down - running ufusr_cleanup\n");
' ~; ?1 Z$ K, W0 a
$ J) B1 \2 F" |& l* o4 L* L    /* put your code here */3 F2 f. D( T) G$ p- b3 D, y( n, T
}[/mw_shl_code]9 ]; v& N. c6 _% c
上海点团信息科技有限公司,承接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& {7 h& w! y# S) d  }
请问这个函数是怎么用的?有什么用?

) |6 O* w; t, {3 {6 ?( e入口函数 改成 ufusr_cleanup # M$ K6 c# M$ g3 c( O0 w

8 ?: P* L5 ^& N7 g8 o意思是 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二次开发专题模块培训报名开始啦

    我知道了