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

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

admin 楼主

2018-7-12 11:12:47

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

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

x

1 M1 d! R) x& ?. lNX二次开发源码分享】关闭NX后,做点儿事8 C7 s. _9 T! K5 ?5 x2 y- @2 p9 w

# i+ f* g/ f- f# n[mw_shl_code=c,true]/*5 M+ t. i% ^  ]8 t. ~) ]
- _5 ~1 q7 ^& o: d
    ufusr_ask_unload is invoked immediately following the completion of ufusr8 \/ ^1 K5 Y( K: ?  F+ v
    (or ufsta when the dll is run from a startup folder) to find out when you
# k3 A& r/ ]: w; I$ Z    want the dll to be unloaded.  If ufusr_ask_unload returns" X) e* v8 r/ P5 x! H
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
6 O0 r3 j& O$ F3 o5 S- p    unload when NX is terminating.  To prove to yourself that this works, set! r0 L# z, t* u) r4 f
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not
" a1 q4 K, ~  [9 s& e    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
- T3 E  k$ j. q    Log File and make a note of the full path to the syslog which will be shown5 O; T+ e& z) [
    as its own first line.  Run the dll built from this code (nothing noticable
5 M* D( b' H$ f! E8 e; n    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
* O: ~  f1 f+ i+ [* r: V    see this line near the bottom:
) C" p1 @: L" P% \) W- D3 ?  t# M2 `  P
NX is shutting down - running ufusr_cleanup) }* o6 t6 L. W' ~+ ]6 H, l
# B# s! {+ C, f& ?/ E9 O
*/
+ i) I8 O) K7 J! m8 l+ b  K#include <stdio.h>
, g3 \) q' z+ l8 f! l. v. i#include <string.h>
0 v8 ?" R7 N' p* p* }/ d$ Z#include <uf.h>
% B: H  c. ~1 i7 L, T#include <uf_ui.h>) y% e& y) b1 J  P/ e
#include <uf_exit.h>0 Q) b( p! h% ]  v

; t0 p% t3 K7 d/ \, F7 N, t% j#include <stdarg.h>
5 v: ~4 j7 J" I. l" k
, F' j) ^$ ~( N! P" J/ Y0 z9 astatic void ECHO(char *format, ...)
3 N% @% Y" L! u% i/ Y. P( @# r{- I1 z) F. `1 @% m- x/ M6 \/ S8 K7 U
    char msg[UF_UI_MAX_STRING_LEN+1];
  o- l0 D; W, e. k' C# i    va_list args;6 |2 {. G! z# S, c/ D: T1 E( z. h; C$ F9 i
    va_start(args, format);4 k/ Z4 [0 ]) Y" w% ]% R5 R  |
    vsprintf(msg, format, args);! h; t/ O1 o+ y& U# B; U& n1 l
    va_end(args);
1 n3 z/ Q3 K& }( J+ N  E( b    UF_UI_open_listing_window();' S9 S9 m& ]: y# b7 B4 `& A
    UF_UI_write_listing_window(msg);
  Q( X& p/ r# f" K    UF_print_syslog(msg, FALSE);
" u, O+ i* [) T5 m}/ e( j" e3 r2 W5 W7 Y! K2 e; ]
6 h' {, J3 ?0 D4 z  b  S
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))8 K0 c& N- @: k
- x$ D: M2 J% |, o) o
static int report_error( char *file, int line, char *call, int irc)  q/ S5 Z: N4 I' K
{6 g0 B5 b* l# w0 `  l
    if (irc)  ~. d% e* l  E  x/ F
    {$ v- y7 z$ n+ U
        char err[133];
$ M3 ], ^5 P; i' U. `/ y4 a# [" u6 y! c# l7 \  N) H1 Y
        UF_get_fail_message(irc, err);4 Y. C% `5 a9 p" P6 ~
        ECHO("*** ERROR code %d at line %d in %s:\n",
8 Y+ }2 P( S6 u! Z1 V; h: O9 o            irc, line, file);
! n" [' R+ M* o% }6 u  W' i* d        ECHO("+++ %s\n", err);8 y! B2 j+ W3 j, p( t: G
        ECHO("%s;\n", call);  Y# @" @8 t& a
    }
5 D! p/ w8 D& m0 I
7 s% p+ q8 }/ I+ Z$ R    return(irc);
2 A3 m) n- J% E- f}2 P/ X6 D, W2 h) `- ]

) X$ C9 @. m8 \9 \/*ARGSUSED*/  {5 @  t' n7 R9 U8 T
void ufusr(char *param, int *reTCode, int paramLen)4 K( d, g' S( [' G
{# \; [$ \- F7 l2 c3 Q: t9 _
}$ g6 h! Y# G% E8 u& k

3 |. y" D( e/ I  `7 \6 I' C/*ARGSUSED*/
" v" j# g' R5 s5 c4 ]5 ovoid ufsta(char *param, int *retcode, int paramLen)
3 g- Y1 U% e+ j{
1 [4 b7 M' r; v  U6 S2 G}& i- I1 A6 }: |! ]4 _& E( S, L) p

" L  R! `( |, X1 o* S' X, Oint ufusr_ask_unload(void)6 c7 U6 D- |2 l" j
{5 S) O* S! u, V. i( z
    return (UF_UNLOAD_UG_TERMINATE);
  K+ R5 ^: Q* `  Y}
( _3 F) E+ n2 v4 ?5 X, }4 G. C' z' d6 \
* l2 I; y; c& C4 E+ gvoid ufusr_cleanup(void). s3 B' H  N) j1 u2 ]" n
{
6 H3 ~5 d/ t- X' t7 {9 J    ECHO("NX is shutting down - running ufusr_cleanup\n");; N8 @4 J+ J- l

. R5 u9 N% x: Z' l! G) c) m    /* put your code here */' }* W/ p5 `* t1 M1 D* ]- K
}[/mw_shl_code]. T) }$ o: W6 N: z) |) a3 l* 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
0 Z/ `0 \& Z) ]2 j! l1 H3 g请问这个函数是怎么用的?有什么用?

9 u" C% E1 }/ X, a+ X入口函数 改成 ufusr_cleanup
3 z' \" g- z( }5 j  q+ ~
" _. d" N( H9 T/ a+ I2 R8 s1 i$ U/ f意思是 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二次开发专题模块培训报名开始啦

    我知道了