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

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

admin 楼主

2018-7-12 11:12:47

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

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

x

6 D4 U! V6 \3 g: s3 }NX二次开发源码分享】关闭NX后,做点儿事
" B. W9 j8 Y6 L* b" j
5 \3 `$ m( N4 v, [' r[mw_shl_code=c,true]/*
, l3 |) y1 T! }2 ]) {+ E7 M# I/ F5 l5 f
    ufusr_ask_unload is invoked immediately following the completion of ufusr' a! F5 @8 X6 j4 a* `
    (or ufsta when the dll is run from a startup folder) to find out when you* W5 c3 N8 |+ m& A5 A  t
    want the dll to be unloaded.  If ufusr_ask_unload returns
, B9 [$ X# E3 n$ B0 j' I. ~9 a    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
# j6 a; H# K% [0 q# p2 j    unload when NX is terminating.  To prove to yourself that this works, set
! b% N, x$ f, N    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not' q* R2 t2 R4 C" f# }# W
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX! O/ v/ C; y# v8 J, _& C! F
    Log File and make a note of the full path to the syslog which will be shown
0 R6 y+ P7 c9 Z) i3 E- |4 _, \    as its own first line.  Run the dll built from this code (nothing noticable% Y# j% h& P: b; c3 G
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to  r) A% U4 l* n
    see this line near the bottom:& g* \+ ]6 q/ i1 O# T( ]4 ~
! t, `1 {1 I0 n8 H$ v5 `) G
NX is shutting down - running ufusr_cleanup( d- B9 k) Y. _7 h. Q

6 i$ b( {& P0 I3 X0 G6 ^+ I! f' v*/
( `( t6 {8 O+ f& y2 q6 m3 b+ [/ z4 Z" X#include <stdio.h>
" _) `! h4 k  T1 Q#include <string.h>7 m7 x& y6 E' `8 L7 r7 C  m
#include <uf.h>
+ w1 a- T  T! G; h#include <uf_ui.h>
; s# h1 s3 T4 V" P- R#include <uf_exit.h>
0 w/ F5 M" ~. i2 Z5 z
$ J: a4 b" E% P* c#include <stdarg.h>( q# E5 r' E5 M* W7 M- G/ L$ p5 U$ ?

. S0 n: e/ T7 C0 i" i# t+ Rstatic void ECHO(char *format, ...)' ?' o' P  ?6 E! p
{
  ^  `5 i) ~4 ?+ k3 [    char msg[UF_UI_MAX_STRING_LEN+1];
' }" z' ]3 Y3 `    va_list args;, |- Q# i2 W) ]) q4 X
    va_start(args, format);+ P4 q. A3 u8 n, [& d4 Q
    vsprintf(msg, format, args);1 G, d" t6 S4 A: V
    va_end(args);3 y/ }6 \: C$ i! y0 g5 m
    UF_UI_open_listing_window();- m2 z  I( E$ ~5 u3 M/ @
    UF_UI_write_listing_window(msg);
7 x) R9 ]- H) I2 ~2 K    UF_print_syslog(msg, FALSE);: x7 R% E& b7 G( L$ R+ S. C9 y
}$ v! ~3 x! \7 l( }6 D( H/ V/ X

6 ]- N  `0 c$ ~8 u6 C: K8 u#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))8 b! @1 u2 v# d2 T0 K% W6 A

% [# D( V% H: O9 B6 Z, I4 J, l) o/ Nstatic int report_error( char *file, int line, char *call, int irc)5 T" y. z! z, X8 @( X
{
1 H  ^- @5 t# B6 x0 K8 M. B    if (irc)
# [3 t7 |$ E8 p2 X. W* x9 s6 _% Z9 m    {; k" E3 `! _# e' q' Y
        char err[133];) D- X5 V, L- L& |4 J; F! F
7 Q! I  l% @1 h8 l8 F3 V
        UF_get_fail_message(irc, err);2 g( X. b% Q/ ~; V+ Y
        ECHO("*** ERROR code %d at line %d in %s:\n",
- Q! u8 v. C& E3 Z( K9 Y: K            irc, line, file);
  w- f# D% M" \4 r0 U0 X9 f# [        ECHO("+++ %s\n", err);
" {0 \# L: k7 P0 T        ECHO("%s;\n", call);
5 @6 \7 t4 P; H1 ?" m! B    }
7 @6 W% o+ Q+ p% w1 a
' D$ x- K+ ?3 A8 x& I# B8 w    return(irc);, u% D1 w" S7 y
}
- \# W1 w( c0 X# t% @! H0 q
; ?" Z( @3 J/ w; q5 {* F5 N6 U' d/*ARGSUSED*/
! `  a$ B9 }" \$ U8 S$ b3 |4 c- l' G- ovoid ufusr(char *param, int *reTCode, int paramLen)
8 d, P: y5 [' _! Q& w{+ H, w9 [9 y: ~( f  f
}
8 T* H* e' c( T% Z1 G$ h5 y/ d/ e$ K) X' T
/*ARGSUSED*/1 \# B. U2 q) v; ~8 s. }% b
void ufsta(char *param, int *retcode, int paramLen)7 Y; Q9 b0 _( N
{
8 n. q/ G; H  @* w}* m3 h: P: @0 g" i/ C$ M0 t

% T( w) ^  \3 Uint ufusr_ask_unload(void)
7 t1 m+ v; Z$ h, K" x: }{) [4 m  }: K  |9 E2 G9 V: B
    return (UF_UNLOAD_UG_TERMINATE);0 h, R' l9 t3 r2 g' F* k4 B
}
+ j" t" V0 x, L0 {, E7 v4 E7 M
0 f9 z$ n5 C1 F% U5 T% {) cvoid ufusr_cleanup(void)
! c. l, ~0 x* A; m/ k6 N. v7 H{3 R; \! F% @  F4 z; p
    ECHO("NX is shutting down - running ufusr_cleanup\n");: M* {; }5 J: N
, h) S" t6 T& X6 W4 F5 }
    /* put your code here */( m" e7 ~* V$ L: X1 j7 f. t# z$ B
}[/mw_shl_code]# P3 c1 t2 J: ]6 c6 G5 v
上海点团信息科技有限公司,承接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
; P2 |0 t2 s* y* o- q) W请问这个函数是怎么用的?有什么用?
5 ]: a' f/ l0 {( B
入口函数 改成 ufusr_cleanup # r8 I# s1 g; B4 I' Z
# d* H2 V/ ^, o! n* ^" I8 W
意思是 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二次开发专题模块培训报名开始啦

    我知道了