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

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

admin 楼主

2018-7-12 11:12:47

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

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

x

( ?5 _# q4 w, ]; v6 oNX二次开发源码分享】关闭NX后,做点儿事1 K+ x) i2 d9 k5 D
5 `3 H5 a+ s3 m+ q5 f# w
[mw_shl_code=c,true]/*( R& S& D" d% o) O; E1 H, Q

) b4 l* X( A8 K: C+ \    ufusr_ask_unload is invoked immediately following the completion of ufusr. x  s$ v+ g( G9 e  A+ j
    (or ufsta when the dll is run from a startup folder) to find out when you
6 Q5 r  @- y0 q$ l8 U    want the dll to be unloaded.  If ufusr_ask_unload returns, c! Q. h( x- N0 x- r" D
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
) r+ @: N* L: \, M( A- c    unload when NX is terminating.  To prove to yourself that this works, set
  t( X8 [. Y% p- f( z; z( h    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not& a6 @) {8 M" _6 d; l( }* e( v, L
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX; c* h: a1 W1 d: H  ?; l* C
    Log File and make a note of the full path to the syslog which will be shown
' O9 W9 g9 M9 h4 N' c" l1 Z    as its own first line.  Run the dll built from this code (nothing noticable
& j3 U# ^2 _9 f: `) [: E1 I    will happen.)  Exit NX.  Find the syslog and open it in any text editor to# C2 U, P2 E: r5 ?, |% g. l8 h
    see this line near the bottom:
" i6 p! C/ L5 P0 R4 L+ s3 X
7 Q! e! I, @2 W9 aNX is shutting down - running ufusr_cleanup) b- W3 h8 {5 d
7 _: Q5 d8 y8 {% o9 r
*/* y, z6 R0 J$ U/ O' j; j7 W
#include <stdio.h>) f2 p: N, c8 _" l. ^+ i
#include <string.h>
0 a. `$ w# v$ s9 [6 V4 C#include <uf.h>& e$ l! e7 S; ]) x& C" Z% F. N
#include <uf_ui.h>% Y, K. P' f/ J7 A
#include <uf_exit.h>
. `8 H$ S1 B; E4 ^" d# U1 u8 _& a+ w  r  C& k; K8 q
#include <stdarg.h>
: c! c3 ]! H) Z5 [. h
7 \  e5 \1 b/ J) O3 jstatic void ECHO(char *format, ...)' ~: H1 {, R) H# t$ E
{2 O& [( c  F# B5 M( ~9 @
    char msg[UF_UI_MAX_STRING_LEN+1];
7 n0 w4 ~. J4 s# W2 N$ w    va_list args;
6 f/ K# v3 v/ y+ j7 Y8 b- x    va_start(args, format);
% e' e( {8 B- T9 t$ m$ O$ `. H    vsprintf(msg, format, args);) K$ W. H+ }1 U+ |5 p) ]
    va_end(args);
( G, ^9 N$ o9 `( D3 t9 e    UF_UI_open_listing_window();
: I- U0 F# v- B: H" w8 j! t9 U3 n    UF_UI_write_listing_window(msg);& K0 n/ E* V; V' ?
    UF_print_syslog(msg, FALSE);) G0 f! N1 w$ C, u) R
}
. z" w6 y& @! D9 r1 D; B( Y5 J
# V2 w" |0 Q1 L) i8 w#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))% |8 a  b6 S, `# d' b9 L
3 Y: f& e" b/ }% Y! x9 Y& Q
static int report_error( char *file, int line, char *call, int irc)
5 R' l; y( b; w7 W8 X{
/ M$ `  v6 C' {/ [4 F& s2 L( O    if (irc)
( Z3 n% v2 f1 X    {6 O% w8 v7 K- k' F. Y
        char err[133];
3 ~, x2 E7 N% b: c
+ o' @. S- y2 }# d) i        UF_get_fail_message(irc, err);9 T9 u4 ]4 g( q& Y( M9 M) l
        ECHO("*** ERROR code %d at line %d in %s:\n",, W5 B# o- l- m- d
            irc, line, file);
; ?" L" f: R, X1 L        ECHO("+++ %s\n", err);
# |$ A2 g+ v4 [& S8 |& h: o        ECHO("%s;\n", call);* N) M0 N" i$ y$ a5 u0 p# a/ ?7 @: U
    }
$ X. [1 t: p6 Y3 t! k; ?9 I+ F2 a# m$ n3 m7 r
    return(irc);
3 d) Y4 _4 O, b9 H- K}
7 r5 G" X! x- a; Q' e) z5 C6 S* ~
) J: U8 T( ^$ Q$ V7 R/*ARGSUSED*/
# i9 `. Z  n7 X- y$ m; h( N9 mvoid ufusr(char *param, int *reTCode, int paramLen)
' n4 |$ n- N0 U. ^  {; }+ C! a{
" v9 H$ v5 W  L( C% `; @" Y* E}
. ^. \; T3 A* x& m' Z! \# p% V- }
, A% N$ o! \! p/*ARGSUSED*/5 R3 i. V1 }8 P/ x
void ufsta(char *param, int *retcode, int paramLen)
5 u; z4 i' o' p+ w, u. S. c4 U{  g+ m) N" s8 g1 S/ a
}
% `' k" f1 Q# q$ Q) \
, P7 C5 r/ G: @+ ?  G  cint ufusr_ask_unload(void)
& w3 p7 O+ h: q/ O5 j{% z; }! f- `) W+ p9 C
    return (UF_UNLOAD_UG_TERMINATE);0 g$ O3 [. T4 v& H
}9 c# x+ w) E% }7 b- ?" e
1 m* q1 z1 R& ~' n, a. |
void ufusr_cleanup(void)
7 ?& g" n/ H- s# e; E{
' M, p3 y) D0 q7 Z( E    ECHO("NX is shutting down - running ufusr_cleanup\n");
+ n0 V+ O# s- a
; i4 E5 q% f" z/ Q' a: y    /* put your code here */; Z1 W8 P' m* k4 H
}[/mw_shl_code]
- z( U, U  F$ Z$ h+ O' d
上海点团信息科技有限公司,承接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% Q2 q1 S3 r1 z
请问这个函数是怎么用的?有什么用?
+ j4 K  _6 i* ?0 l- b0 D
入口函数 改成 ufusr_cleanup
" J5 H! _" l5 I' k% v3 J$ A" j; y( h1 Z; E& H
意思是 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二次开发专题模块培训报名开始啦

    我知道了