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

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

admin 楼主

2018-7-12 11:12:47

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

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

x

3 E/ G  J" ]9 k) d# `7 ]NX二次开发源码分享】关闭NX后,做点儿事
  x$ y3 ?# \' Z' u2 [5 T$ o9 T6 K/ L
[mw_shl_code=c,true]/*
* u4 l/ j& S2 s0 X8 L" w5 v+ a; C  [  A# t
" {( [" w* y$ v' R    ufusr_ask_unload is invoked immediately following the completion of ufusr/ X9 O6 d  X* K+ @8 P
    (or ufsta when the dll is run from a startup folder) to find out when you0 x! Z* w  [0 `* P
    want the dll to be unloaded.  If ufusr_ask_unload returns
7 ^& X( _+ h2 f  s    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is; Q! H1 z6 c# S1 L9 t2 j, J
    unload when NX is terminating.  To prove to yourself that this works, set
" P: K1 R" b$ d. l- Z; k( C8 D    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not9 m6 o! H8 t+ A. k# }6 N
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX8 I9 g+ T% h# l. G6 t0 g, [7 y9 [% H
    Log File and make a note of the full path to the syslog which will be shown' @2 R, R. q6 F; R$ U
    as its own first line.  Run the dll built from this code (nothing noticable
: \+ g" {' F" A# A" s    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
5 T( N' v0 T. _. b7 E1 n    see this line near the bottom:' z0 \+ r4 A& R% E

+ }0 ~2 p% w4 g: o! rNX is shutting down - running ufusr_cleanup& }$ ~! \1 k) V: E- O: ?9 H

, ~" q" n6 h$ q- z*/. i: B8 t- f! |) i: p; G# h0 z, p, @
#include <stdio.h>6 v$ J* _( t( |* ?) o. ]8 M, |
#include <string.h>  ?8 q3 [1 L3 I1 J
#include <uf.h>
  @6 Y$ D: N7 s7 f4 q7 e" _#include <uf_ui.h>
' t- n7 P- B2 p( h5 i! F( |#include <uf_exit.h>
& S3 D+ I& g( C7 }0 B4 ]. l" H) G, I- k' x/ u7 o" z, t
#include <stdarg.h>
2 H# u) T# D% f$ e( T; \' ^& _8 w, C2 B: e# u, o
static void ECHO(char *format, ...)
1 C- @4 k- d  ?3 J: J9 ?9 n4 [{
# d& P" D/ ~/ p+ I+ v. j    char msg[UF_UI_MAX_STRING_LEN+1];! I+ M5 F8 O: }) m. R: p+ T6 \
    va_list args;
) }+ I+ u+ }! K: l& l# E8 N    va_start(args, format);* A% _* }! h( \
    vsprintf(msg, format, args);1 K) F. z2 Q2 o3 m6 q  P
    va_end(args);7 Y2 f! y1 F+ G" b
    UF_UI_open_listing_window();
& j) T. n7 |/ }# v' `    UF_UI_write_listing_window(msg);
$ \' q/ \1 q2 R1 y    UF_print_syslog(msg, FALSE);
; _9 P$ g9 ]7 \$ T}
- K: R4 L$ ]; _9 R: B' u- h+ C1 O- l
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))" c0 O% K4 V$ j4 t- l! m) x8 e
9 g+ H( R" o5 `& k
static int report_error( char *file, int line, char *call, int irc)
; [/ k$ B9 o7 K! n- a" a{
) D& n  G5 R0 Z    if (irc). H! ^5 e" Q; ~5 k
    {  S' x3 ]& X$ p4 a2 O2 x
        char err[133];
9 {2 x* v- A3 m' v0 S0 K- c. @/ D: o+ R- ?: z" z  K( v4 B
        UF_get_fail_message(irc, err);- [5 K1 ?; X6 n  d9 g5 R; Q/ A8 i
        ECHO("*** ERROR code %d at line %d in %s:\n",
, X7 q( M& K, G5 E* B            irc, line, file);) L, D% o6 ]* S- G& l5 a
        ECHO("+++ %s\n", err);6 _$ `" F/ T3 x( S
        ECHO("%s;\n", call);
4 V& w% p& {/ l1 h  h    }
2 v, G, T0 {4 P4 U) L1 @2 O! C
4 D" b  n5 ]$ k# U) l    return(irc);4 }' D' U( O* k! |4 e8 Q+ e
}
* T. h6 P3 _2 z( c" x+ Z+ G% N1 b/ ~1 `9 Z0 S/ M* D5 q
/*ARGSUSED*/
" O6 C0 d6 C: R/ r* Dvoid ufusr(char *param, int *reTCode, int paramLen)
) E' J9 D6 V' f0 ~5 B5 N* u+ ^{
7 {( j( H. z+ I}
/ y* m# W' y, a8 c, J( r  `9 t# c1 y7 d! y8 }1 L5 `7 {
/*ARGSUSED*/# A0 k7 C+ ]9 N! j8 z- ^2 m- C
void ufsta(char *param, int *retcode, int paramLen)3 L2 y5 {3 S5 A: I  T3 E" B
{
+ R5 R+ E; E! d0 b9 L}: @, K! @: `. k0 x2 o4 Q
% C) ~0 w1 M3 ~  L  e, V: T/ m, E
int ufusr_ask_unload(void)
9 q( ^# S$ A' z* G, Z6 u9 j( V. q. ]% g{# N' S7 Y1 z% \4 @0 M& w; U
    return (UF_UNLOAD_UG_TERMINATE);
1 a% L- i! t. y}
4 [. G! s2 R+ Y  S3 E% N  b* R. ]0 u5 a0 ]( |
void ufusr_cleanup(void)1 e' v$ v9 X! P
{
+ ]6 q, s: |- P# a" x    ECHO("NX is shutting down - running ufusr_cleanup\n");9 Y4 i" ?% _9 l1 R3 Z+ W* @- l5 b" G

7 H5 c, a% d: P$ W9 D    /* put your code here */
3 F, M2 s: L" C}[/mw_shl_code]/ I* ]7 q4 W6 y) w! {
上海点团信息科技有限公司,承接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
7 L2 T7 l( A* [8 t请问这个函数是怎么用的?有什么用?

1 b# H' ^" m6 G& I! i( y" Q6 Q入口函数 改成 ufusr_cleanup , c- t' J, b6 U$ }0 q5 U- H7 Y3 ]

' r8 T& b8 o6 f9 D: 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二次开发专题模块培训报名开始啦

    我知道了