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

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

admin 楼主

2018-7-12 11:12:47

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

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

x
$ V  I% V, ~) a' g6 \3 h
NX二次开发源码分享】关闭NX后,做点儿事
+ ?1 x% f1 A7 A5 [. R7 S0 E1 h/ l) ]# x% I" c- p) V
[mw_shl_code=c,true]/*
8 W+ G! ?) f9 G0 n2 x( m! Y9 q, ^8 {7 w6 M; w9 A
    ufusr_ask_unload is invoked immediately following the completion of ufusr( @- }1 M5 c7 A, C% ?. h
    (or ufsta when the dll is run from a startup folder) to find out when you
) y  Y1 b2 p$ ?5 O4 s    want the dll to be unloaded.  If ufusr_ask_unload returns
; S7 Y3 p" U- g- y3 S+ h    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
8 G' g, E$ P" q    unload when NX is terminating.  To prove to yourself that this works, set
8 {4 O' C7 j8 \) u/ g; b    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not: Q8 Z( ^4 [; A
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
* W& [6 V* C. [7 |! l  W; E; l    Log File and make a note of the full path to the syslog which will be shown
& J( v. I& x" g; n    as its own first line.  Run the dll built from this code (nothing noticable6 {3 B, [) e/ j8 @
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to9 U, s9 H  X+ W* G7 R6 H
    see this line near the bottom:
" z, k( X. S( v% x1 j+ h9 d& J% V  [
NX is shutting down - running ufusr_cleanup( z9 j1 y& i9 p8 C! ?3 E( L. a
4 j% F$ L4 ]+ q/ ~3 s
*/' v) V  y9 ?2 ^4 E& X
#include <stdio.h>+ C7 _# b9 v: V6 ^
#include <string.h>; o) E0 U) P; h5 o& A; S* E
#include <uf.h>. B! O# l- g" ?3 M" ?
#include <uf_ui.h>0 M5 v# I" Z' T+ R( S( G
#include <uf_exit.h>7 d8 Y9 T: w. u1 G! W, r5 j
$ W/ j4 P' J: w  e
#include <stdarg.h>; D9 ]& S- t1 X0 e% I( O- j& c- d; q, H
4 h. `1 F1 D% y2 ~, T2 O9 F% V
static void ECHO(char *format, ...)
+ Q) u9 @" a: }. b# q7 v{
; `- k5 G% k+ f2 D7 r) B, `7 a/ z    char msg[UF_UI_MAX_STRING_LEN+1];; x6 p3 U3 Y. u) k
    va_list args;/ h+ @6 a+ o$ d  }! {
    va_start(args, format);
0 s; s/ v) v3 Z: G! B" c    vsprintf(msg, format, args);
+ W  b3 o9 ?7 |6 S4 s/ C    va_end(args);; d7 L: s6 Q+ `' M. X% X
    UF_UI_open_listing_window();
, z, @2 A9 |* {    UF_UI_write_listing_window(msg);
6 O8 }+ k$ ]: ^$ [- B    UF_print_syslog(msg, FALSE);
" @  g" _% D" e4 o7 ?; L- c}
& }& E: w8 {9 n
6 G* S2 C. Z: \. R: F6 e" @#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
( x5 U+ d8 |; S# Q3 b
- x; G( V6 ]4 W- M6 Zstatic int report_error( char *file, int line, char *call, int irc)( Z+ e5 x7 H, B2 m# K- s2 }! b$ @/ h
{6 v4 M( V; k3 U' C
    if (irc)
& m1 ^& p* y1 W6 [& }1 G    {8 t2 r6 c  t2 F2 T; H
        char err[133];0 Y# p8 F8 h) e4 L6 y# k

7 R4 p0 z0 y( O3 k$ ]; w3 F        UF_get_fail_message(irc, err);" M+ E5 y3 f/ \1 K  }. q
        ECHO("*** ERROR code %d at line %d in %s:\n",
( u9 j" D- _  F            irc, line, file);
, F: p' K& g3 H$ C  E; \5 U        ECHO("+++ %s\n", err);/ a# T% W5 N! v! f
        ECHO("%s;\n", call);
3 i% x! M2 p$ _6 j3 u4 @    }& K* v7 H! F% d
. T  \6 A& P6 q
    return(irc);
+ O- V# a# @2 I4 F}
9 G  l" h- [$ i6 \
1 K( K* g3 ?7 r0 k' o* g/*ARGSUSED*/- E6 L9 y% E/ Q$ c
void ufusr(char *param, int *reTCode, int paramLen)
1 x+ T4 S' c# w- o{
1 a* V  f' Z) z; _  m" Z}
0 G/ R  F( D5 w+ m2 ?" X; b3 a( X% h2 a5 j( Q  K1 ?
/*ARGSUSED*/
' s3 Y# P0 h3 B: e) ?( Ivoid ufsta(char *param, int *retcode, int paramLen)9 k# @/ W% {) h  T1 h2 Q' w( f
{
) }& N' R( ~0 `}
( n- W9 |5 J' e7 L8 N1 R3 u; V* G/ D& u; L/ B5 g
int ufusr_ask_unload(void)
: J- E  Z3 E2 }' h1 ]. f{
6 b- e3 H: k1 i; l  G    return (UF_UNLOAD_UG_TERMINATE);: f. ]# Z6 w& z/ C8 L! B  ]% z
}) d# Z% j$ [; l' r$ l9 \2 T1 ]7 g
9 f3 }8 `% q" x- ~5 v/ j7 N8 b
void ufusr_cleanup(void)
  h9 l5 K9 `, u- _. J* y3 [{
$ ^: h! e* o( L( L    ECHO("NX is shutting down - running ufusr_cleanup\n");
" p: U7 }% O+ l, _4 e
  |8 H0 r, s3 ^* E5 Z; M    /* put your code here */0 W/ l, R# R/ |/ p* ]# l
}[/mw_shl_code]9 b6 V& m3 H, r# k9 o
上海点团信息科技有限公司,承接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
) ?% n( s% X/ O% m9 P请问这个函数是怎么用的?有什么用?

# X* y. Q9 T; J1 ?入口函数 改成 ufusr_cleanup
- d; Q+ ]9 d! A1 S. A& X  k3 D
! S. {# ]5 d/ w" z' L意思是 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二次开发专题模块培训报名开始啦

    我知道了