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

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

admin 楼主

2018-7-12 11:12:47

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

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

x
# ?9 R# ~8 H! `! R
NX二次开发源码分享】关闭NX后,做点儿事
3 ]% |3 n- m. ?& T% r& e* x7 |/ L. g5 J  X  e. h, m, n" {
[mw_shl_code=c,true]/*' ?6 m& J; O5 O5 c% |

9 B% o4 H0 P/ _! X    ufusr_ask_unload is invoked immediately following the completion of ufusr
# ^) N1 l/ H+ T) [9 m7 j! }    (or ufsta when the dll is run from a startup folder) to find out when you
9 o& `" A$ R1 \  x    want the dll to be unloaded.  If ufusr_ask_unload returns  y6 r  A: j  B* Z
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is/ F! U& N4 b  |% j5 t
    unload when NX is terminating.  To prove to yourself that this works, set
' w+ f( ?: e1 Q+ ?, u- w    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not! W6 a# @' ^$ _& Y
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX& G7 X9 ^9 h. @. d! s2 S: q- {) f
    Log File and make a note of the full path to the syslog which will be shown( H3 o$ }! b* w. G
    as its own first line.  Run the dll built from this code (nothing noticable
* M, T8 R" q6 q$ @0 E8 {    will happen.)  Exit NX.  Find the syslog and open it in any text editor to5 q& l4 ]6 X/ c0 O9 z1 p
    see this line near the bottom:
* e  d! \: k. e- _- c% w; x! O3 Z" [, L+ G. o
NX is shutting down - running ufusr_cleanup
7 D! z8 H, D7 x+ A
" R/ z1 D' k0 e: g1 G: c! o  }*/3 |! n; a' i6 P
#include <stdio.h>
$ d! U  [& j5 L$ h6 P( C% \% r#include <string.h>
/ |9 G8 [, K5 o#include <uf.h>
0 _9 d! }1 e3 j1 q% J; F2 i#include <uf_ui.h>
9 e5 \6 m+ r9 f$ p3 J6 P6 h#include <uf_exit.h>* B, c/ r7 L; u; C! m2 `
* w. S( v6 Z% R) {6 `5 f8 S" {5 H
#include <stdarg.h>
( X2 l/ x7 S" }% x* Y( y0 n7 h  b0 m/ I" D7 `
static void ECHO(char *format, ...)
, q3 U0 `* F1 ^; `  b{
+ F3 _( T+ ]1 u# `7 E: ~( q! K" j! `    char msg[UF_UI_MAX_STRING_LEN+1];
$ j" K+ z7 x; d+ c* `, k" ?7 y    va_list args;
' j& t" Y7 O" e) F! b    va_start(args, format);
' {! }: f; P3 J9 C0 B4 P    vsprintf(msg, format, args);( b8 B7 M! d: G
    va_end(args);
  W* {8 |- y) A# D0 U& [. W8 D    UF_UI_open_listing_window();4 H! r: K' f+ [8 [  h
    UF_UI_write_listing_window(msg);& U  \( O8 i1 g8 G' W! _
    UF_print_syslog(msg, FALSE);
- C) d) G" c* q$ x+ I9 O+ ~1 i/ k}  `0 J  {+ j0 F
* }' @3 X$ i% G0 S: a
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
. s4 |1 Y" W( j$ L$ _9 T
1 x8 t2 {3 }/ u/ Bstatic int report_error( char *file, int line, char *call, int irc)
5 V% J) j0 `6 V6 L8 W9 |3 V; ]{% \+ p+ s  L* p) x1 _2 c& j  L; W: W
    if (irc)6 c  u- G) @0 r% @; x
    {9 e: I( K) `( Q6 C0 L
        char err[133];
" m- v* c# ~, w+ K9 v
2 ?- T$ y0 c" J3 x. l5 A        UF_get_fail_message(irc, err);" L% l& B: t) v
        ECHO("*** ERROR code %d at line %d in %s:\n",: y9 p9 q3 _* {* o* Y: S
            irc, line, file);+ u$ v; \& m/ K4 F1 n
        ECHO("+++ %s\n", err);. O$ y4 M3 r2 a4 n
        ECHO("%s;\n", call);3 m! @& S, i4 w
    }
) N1 B2 ^( b+ H1 _, p+ w. u0 y& k; m
    return(irc);$ \' h" F- J0 e0 q* P+ f
}
: i% T" t$ Z6 ^, r7 r  K
; M1 ~: r, x4 z9 z9 H& R/*ARGSUSED*/! a' O/ B2 K5 f1 o
void ufusr(char *param, int *reTCode, int paramLen)$ q4 z4 g& `0 ~- ?/ A7 Y) B
{
: d) o% Y2 F. q# T4 V* a$ S  A* c}5 V7 X9 R# r' W9 F9 [. O7 S

% {& a8 P9 b6 H* W* C/*ARGSUSED*/
- K! S& O1 \; X, Svoid ufsta(char *param, int *retcode, int paramLen)
5 h: X' ~3 f" ~0 y5 f{9 z  B' d) N# `( n9 J2 z, E
}
$ a2 J/ O# e- x0 k4 z) T7 z8 m4 f9 H! t
int ufusr_ask_unload(void)( l6 N5 Y( D5 m' S# M1 {: ^
{9 W+ S& ^, ]/ W0 F
    return (UF_UNLOAD_UG_TERMINATE);  R: M2 M% [! M2 [, w( M; I
}# I& H# l8 a- ~; D4 a

; n& }# z7 i; Xvoid ufusr_cleanup(void)5 o% a9 W) y' T2 @) L. P+ ^3 D
{( U* H3 Q) ~0 F+ y6 }
    ECHO("NX is shutting down - running ufusr_cleanup\n");
4 F3 V- d- ?# t: I! i/ ]* g2 _8 M: ~0 `! A
    /* put your code here */
- K9 u* O5 ?' @) [6 u. H}[/mw_shl_code]
; Z" t8 q0 i3 E
上海点团信息科技有限公司,承接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
$ o. l( r+ h* |9 c8 Y, c, ?请问这个函数是怎么用的?有什么用?
, ]6 j# q% M/ o$ l& R, I
入口函数 改成 ufusr_cleanup
7 b1 a1 H3 _2 F; c+ z$ y6 G; Y0 o  P1 X+ _
意思是 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二次开发专题模块培训报名开始啦

    我知道了