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

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

admin 楼主

2018-7-12 11:12:47

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

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

x
  i" o5 ~& ]9 Z( {  f- x
NX二次开发源码分享】关闭NX后,做点儿事
$ V0 V5 u1 L+ p. q4 B# x5 i+ ~! U
[mw_shl_code=c,true]/*
  W) o9 T7 ^6 W% d/ D0 k* F
+ r2 P& X( Y2 R. H& N+ n    ufusr_ask_unload is invoked immediately following the completion of ufusr$ ~' Y% ]/ ?9 M5 T
    (or ufsta when the dll is run from a startup folder) to find out when you
1 N" e! s+ i* K% k7 x    want the dll to be unloaded.  If ufusr_ask_unload returns
" G! d7 {$ Q0 I; E3 S9 A1 i$ T    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is  n' S9 s1 ^$ M9 l2 ^2 P
    unload when NX is terminating.  To prove to yourself that this works, set: i$ }* Y# g) H! N; `+ ~
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not  @% I8 c. s( {- N5 w- M8 d8 U' M# j
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX. u4 c: L1 D! a0 o9 ?
    Log File and make a note of the full path to the syslog which will be shown
' i' ?8 w9 K0 z$ P6 U    as its own first line.  Run the dll built from this code (nothing noticable
$ A) Q, h/ v* W- ?) Q. V" E    will happen.)  Exit NX.  Find the syslog and open it in any text editor to2 ^# @, G- ]% X  ]
    see this line near the bottom:
* t9 z# M9 M4 R/ x7 l% [  Z& U5 n8 x8 Y2 n- j% N9 l2 T7 d
NX is shutting down - running ufusr_cleanup
: W* I" K# B$ M% K% G0 k6 g. K$ O. H3 S2 Q' W: b
*/5 q7 ~5 r/ n% Q. Q# A+ T( f
#include <stdio.h>
/ f; {6 z& f  |6 b6 x, w& j% ]6 s( `#include <string.h>
, c$ O/ H( D0 n. I" z0 ^7 N& `1 l- p! g#include <uf.h>& U( W6 H, e; _: V  D- Y
#include <uf_ui.h>  w5 N$ t* @/ d: B: [. Z( ?
#include <uf_exit.h>
& ]0 p/ K7 N/ ~1 _: u$ h
, O: A. v3 |0 x, w( z) R#include <stdarg.h>
& Y: B; H* {8 T7 }# ]
0 u1 R3 U$ U% k& D( V' Q! n. b! @static void ECHO(char *format, ...)
3 u+ q4 V, v. N{
% b! k1 K0 P, e: Q$ j0 W6 b    char msg[UF_UI_MAX_STRING_LEN+1];
7 ]3 P+ S* ?1 @% A. Q: }9 U3 o    va_list args;. f! q9 k+ ^$ O" _( I5 W+ I0 }( B! G
    va_start(args, format);9 D# S8 O1 H2 S: H3 {; U
    vsprintf(msg, format, args);
6 B" F! u6 w  N6 d7 X    va_end(args);! E) M- m2 g0 m
    UF_UI_open_listing_window();
' X1 y1 i- V' V& r    UF_UI_write_listing_window(msg);9 s+ }% {; ^+ s( N
    UF_print_syslog(msg, FALSE);
9 {8 i  a% ~: ^5 w5 v, k}7 j) i" b) s4 |' y
9 F. a' f: c! X; [; @! Q4 q( B
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))  F& j1 [& g+ a+ e2 P& r3 T

: R) y# |4 z: bstatic int report_error( char *file, int line, char *call, int irc)
1 Z. U4 j3 h0 [' R+ o. U{- M& m  \+ P( K; o7 {
    if (irc)
$ ?0 q5 A' K& p3 Z    {
' w2 J3 |( Z9 w$ P3 m+ s        char err[133];
# s  }) J  R% _: j' g* a* P! u% c8 L2 I  C; Q7 |
        UF_get_fail_message(irc, err);) R( ~* D' `0 `8 b! {( |! E
        ECHO("*** ERROR code %d at line %d in %s:\n",6 f* k* ]4 A6 v5 N. i+ b  {
            irc, line, file);
) X1 }( l- v- k9 n0 H' }( A/ Y        ECHO("+++ %s\n", err);
) p  P( I: D4 r5 d' ?; Y  T  N        ECHO("%s;\n", call);
! Q% }0 a( ^4 P+ N    }
" S+ @+ j  T: R9 Q/ s/ G& X# P8 J  m" T' l0 `/ J
    return(irc);
. `% [0 W% O) ^/ Q}3 u5 L  z4 f8 \2 f" K7 L) u
' W, i5 `1 n$ n- b
/*ARGSUSED*/
/ s5 N1 l) a+ b( P6 @/ ~void ufusr(char *param, int *reTCode, int paramLen); L# P0 p( i3 n- J  c9 [
{! ?$ y- E) Q  G4 T. b3 j1 Y0 i! C
}( n( k' s9 _1 C* X8 p2 e, }- `
0 j/ u, B% ?5 _! y, u6 l
/*ARGSUSED*/
9 W2 P8 Q9 `/ J1 I/ S0 v/ h* uvoid ufsta(char *param, int *retcode, int paramLen)
8 D. U6 f+ Y4 m{
  h: Q9 B/ X+ w/ K# K9 g* V}; [% T: O0 t3 \9 V5 T6 \( a2 _

, k: ]1 N0 |3 S# h/ B# O" \2 [5 cint ufusr_ask_unload(void)
7 Q& b- ^; ~3 C{# S$ E) m; S; m$ Y" y
    return (UF_UNLOAD_UG_TERMINATE);
- W# P% u) I( o( Y% w}6 _: D) W1 V* }8 o* p

0 O) j" ?: @: j  U7 a( Zvoid ufusr_cleanup(void)
# M7 n& i: }! a6 |{$ R! g/ g* e1 B. G# o" u
    ECHO("NX is shutting down - running ufusr_cleanup\n");8 r* Z. I( \/ \3 G; }8 j" O; ~8 U8 I

& h2 {" }/ ~0 H; m$ f# D2 p) R0 j7 p    /* put your code here */
1 i" O2 h: E) K8 Z, s+ v' ^) q}[/mw_shl_code]$ U* y0 D/ D* S( I
上海点团信息科技有限公司,承接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
8 _" O' s& ~% ~' U0 |请问这个函数是怎么用的?有什么用?

; z9 f. a- k" {" S3 z9 Q入口函数 改成 ufusr_cleanup
0 t5 ~* t" ~3 s- j6 V
5 y0 z+ t1 b7 N2 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二次开发专题模块培训报名开始啦

    我知道了