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

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

admin 楼主

2018-7-12 11:12:47

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

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

x
: N* n5 D# n3 K" ?6 t7 R* n: }" b1 l
NX二次开发源码分享】关闭NX后,做点儿事
* F8 ?" T7 X& K+ Y  @5 C' b4 m! d6 H$ s  O  F
[mw_shl_code=c,true]/*
8 q& q! d5 k$ a
2 ~, }7 Z0 a: L+ N    ufusr_ask_unload is invoked immediately following the completion of ufusr! [1 T5 y7 W; D0 _
    (or ufsta when the dll is run from a startup folder) to find out when you
% I# o- B% G. Q) I6 |" C    want the dll to be unloaded.  If ufusr_ask_unload returns2 U; P" h2 o" Z$ B! E
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is& ]1 `0 J4 S( q% S" b+ i
    unload when NX is terminating.  To prove to yourself that this works, set
. A9 F0 o. l# F. V    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not
# y4 c- w( y7 o1 _! R* k/ y! a    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX' [. K  U! Z& e1 Y
    Log File and make a note of the full path to the syslog which will be shown
2 E/ E0 ?- ]0 u! D' h    as its own first line.  Run the dll built from this code (nothing noticable! O0 ]$ X3 [9 |3 O% o+ ^8 b8 z
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to- J0 g, V# k' h5 E/ d' t9 {; x* D
    see this line near the bottom:* e9 V) N/ e8 m0 ^5 Y! ?& q
9 O* ~, F2 V( {) y' a0 j, h
NX is shutting down - running ufusr_cleanup
* d# b7 e3 y+ V" F1 |8 j2 u. j( C% a- p5 g/ v' `" R  A
*/, s8 k+ F) o; ~; H8 g2 A/ x& b. r9 z, V
#include <stdio.h>5 v& Q( t- {5 T. i7 p; F! o
#include <string.h>; a7 V. }: q) c4 D2 e. Q* ^
#include <uf.h>
, w0 b7 I: @7 j, J/ v" K  [& m+ B) z#include <uf_ui.h>
/ r- F. m1 J9 S1 V#include <uf_exit.h>
* `) e6 m/ L! s  h$ T6 N4 g& P9 I% \+ `6 J
#include <stdarg.h>' a" B9 M- R3 {
8 I) y" d# x  I( }* W  J
static void ECHO(char *format, ...). W1 R; y4 N# X! l/ @( t& M
{
, [) O! q: P; a& H! x8 z    char msg[UF_UI_MAX_STRING_LEN+1];
  I0 Z5 [" j& i; {3 [3 m    va_list args;+ O% D  G  _( e$ t/ G9 q0 O- h
    va_start(args, format);
+ k* H/ U- n$ q& O% n    vsprintf(msg, format, args);
: p; V" E$ `. r+ d    va_end(args);
! h6 W  }1 K) G3 r2 @; B9 F    UF_UI_open_listing_window();: r5 n2 a3 I* n' L
    UF_UI_write_listing_window(msg);
* S' q; a$ a; q: F# {! T    UF_print_syslog(msg, FALSE);
& s& v7 j; j( q( O}: [# p# y, z7 b  O+ s9 u6 ^
2 p8 f% D  ]/ G. A9 k' t: m
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))( F/ X, m! f6 Z  _1 Z* h4 f% N

* n" x8 n6 N: K+ i5 ~3 [9 istatic int report_error( char *file, int line, char *call, int irc)$ I2 q% B6 A) h; b' M
{% s$ h& Q% S% b6 ~% f* p3 K; D. S0 k0 s
    if (irc)
' o8 e; g2 O8 V9 ?" ?( |$ f    {* [! i, n1 [( y/ }7 c- J
        char err[133];/ ^) ?0 d. x: o) o

5 v: R; }+ F: }% L0 D! t        UF_get_fail_message(irc, err);
3 X/ g7 p5 j! d  W9 P, N% g9 z        ECHO("*** ERROR code %d at line %d in %s:\n",
! u: H7 y8 @: d! k2 _# }* e. b            irc, line, file);
, T8 c7 F2 ?# p9 D; {        ECHO("+++ %s\n", err);
4 j6 o; ]# P  M9 k/ o        ECHO("%s;\n", call);0 k. T" r3 ^6 f! r0 S
    }( v1 y0 o7 i) j: J; L5 [% E' o! \$ A

& H% ^- i' g7 `& k    return(irc);% e2 O* {1 \$ h' K
}) X& n5 K7 x  L+ a( ^' _
  G: g$ O% q3 X/ g8 |+ ]! S
/*ARGSUSED*/
6 Q' G+ t7 Y6 a! F" V6 svoid ufusr(char *param, int *reTCode, int paramLen)) B" R5 n7 ~6 j. |& N  n4 I% Q5 O" z
{
8 V3 k. [; i1 g( C0 W}
9 b- G" I! \( e; ^; r
+ X9 @" C) T' f$ C/*ARGSUSED*/7 R, g' g) W0 f% [! c
void ufsta(char *param, int *retcode, int paramLen)* o% K5 \' l* w% @% l7 \6 _/ s
{+ R! v7 u( O9 j
}7 n* f9 P2 M- n  y( ]9 C
# _& Z% m: |  g: d# }
int ufusr_ask_unload(void)
( \% _% w( V; @{' P( N. {( `+ E* r/ L
    return (UF_UNLOAD_UG_TERMINATE);
( N. |! ]6 U3 k8 A/ S; c9 w}
( Q8 S# F7 y6 k9 y& o
) h/ j+ [, J4 ~  ?% N. S" W* D2 ?void ufusr_cleanup(void)
$ J, }; T9 L3 g" G% r9 m- C  r{8 Q& `! z' ]% {  I3 D8 ?8 B
    ECHO("NX is shutting down - running ufusr_cleanup\n");
6 o; W% U# j6 N' ~, [2 n2 w" |. l& V9 d! h
    /* put your code here */. ]0 s. y9 Z. ], c" I0 F) A
}[/mw_shl_code]
! d2 F) z. b0 b
上海点团信息科技有限公司,承接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, X4 n; h; [# @8 o7 G
请问这个函数是怎么用的?有什么用?
/ f" x  @% e4 \, U4 G5 p5 ~
入口函数 改成 ufusr_cleanup
/ g; j% B& e7 R4 f$ T0 f) i
& i8 Y8 B4 E5 r  H. 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二次开发专题模块培训报名开始啦

    我知道了