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

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

admin 楼主

2018-7-12 11:12:47

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

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

x

! [$ X0 V' v$ F/ ~- j5 iNX二次开发源码分享】关闭NX后,做点儿事( g! _8 V5 X( g4 U" z- Q

" ?1 e4 _+ u2 B. S1 j' O' o$ w[mw_shl_code=c,true]/*
; T& l  Y9 M8 K3 G/ q; F/ U' I3 ]& e" Q0 G! e7 d$ I
    ufusr_ask_unload is invoked immediately following the completion of ufusr7 _' ]5 N, j( i+ m  D
    (or ufsta when the dll is run from a startup folder) to find out when you. i$ @! K: C* T
    want the dll to be unloaded.  If ufusr_ask_unload returns
2 Q5 K6 b4 e( u: P# R2 H$ t  a    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
* B3 R3 b0 f. ]9 \  O! K# l    unload when NX is terminating.  To prove to yourself that this works, set3 [* g$ i1 |" [3 r! K
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not  x- l& i1 c, }$ U. f
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
6 @% b) R+ a( S. M+ k    Log File and make a note of the full path to the syslog which will be shown
8 T. K" b: V+ G1 r    as its own first line.  Run the dll built from this code (nothing noticable2 P7 b: p% J1 V& S
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to7 Z. O* y9 Z- Z+ P  P# A7 E) D1 I
    see this line near the bottom:! n7 H  r+ \4 W- `1 R& ~7 m1 N

0 n3 |& ^& H/ S* k7 GNX is shutting down - running ufusr_cleanup. y8 ^4 a3 Q1 h0 {8 g6 s

" |3 X. q( o, e+ f1 H! G+ D* }*/
1 Z1 P0 s& S- y* \#include <stdio.h>
- {; Y: q# Q! }3 c& J9 e#include <string.h>8 }; H3 P7 a0 x
#include <uf.h>5 m9 g( T& p) L5 e3 a
#include <uf_ui.h>! V; P$ O" q8 K- T
#include <uf_exit.h>  w2 E2 L7 s: Q
! I, {; g1 o* \2 }
#include <stdarg.h>
" a  m1 t% z% \) W3 I
1 l' n) W( w0 v  ]- Y% H9 C2 Estatic void ECHO(char *format, ...)
/ L6 ~) ^+ E" o; j{
9 ^: M* s; G( L* Z$ m    char msg[UF_UI_MAX_STRING_LEN+1];
+ t* T+ P" T7 |; A( E' ?    va_list args;
  j4 Z% ]4 r- L) `( l    va_start(args, format);7 U" R% p2 B6 t* z
    vsprintf(msg, format, args);
$ o* G# p3 P4 [    va_end(args);
3 e! W; n7 a8 w2 A. T- W    UF_UI_open_listing_window();, }. C: Q, f+ \9 _% i
    UF_UI_write_listing_window(msg);2 o# S+ S! C' t. `: I
    UF_print_syslog(msg, FALSE);
3 Z+ d" c- P, d0 p+ `( }1 [}
1 R& z9 W: z: ?# P: O6 b- {* W' v
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))8 d& [( a: [' X: J0 d" X! }# o
& V( u& O" @; ]
static int report_error( char *file, int line, char *call, int irc)5 y& O  c* S; w9 I' {
{
* q# w; r4 X, y  k; E& c4 f    if (irc)
# M/ N5 H( M( [2 i    {
& d+ w! h% {+ D, T4 S* A        char err[133];/ g' n) N+ g: f) M( @

" g1 O* n) U1 P" [6 C5 W) f# s, I        UF_get_fail_message(irc, err);( [2 E; Q3 W" N/ M+ W
        ECHO("*** ERROR code %d at line %d in %s:\n",6 \  Z3 @; Z$ A3 U/ T% i! H
            irc, line, file);
7 M4 q7 V, e+ ~- u4 R# b, K        ECHO("+++ %s\n", err);4 m8 T* q8 D! s9 z  q. E
        ECHO("%s;\n", call);. w- N8 W3 K- ^& i9 i
    }
1 k- I- m4 R! |: r8 \# i% [: R" G1 H1 l$ o) V% P$ o) b9 K3 |
    return(irc);: e+ X: V: S5 y: ?7 d+ m
}% b" d' \7 f) d4 w: S, q

% m2 \. q6 Z; ^/*ARGSUSED*/, |* @( n. J. ]+ j! b$ s1 E
void ufusr(char *param, int *reTCode, int paramLen)
0 a4 Z* R# @4 u! a{. u4 j# h3 [1 }5 g
}
, V6 Y6 ~2 W* x9 ^1 D; `) f
6 c( v- n/ [' D/ t% ?/*ARGSUSED*/" B! X. e+ p: O* V5 P5 x, v
void ufsta(char *param, int *retcode, int paramLen)
3 \8 c, H4 e& [( n* r' g{
' [1 q2 E5 f, E) B}
: Q4 V6 {% m  u: }- T3 n
7 J6 V/ c1 ?) K- Bint ufusr_ask_unload(void)
7 N" `* g9 T0 t4 i! X8 @{
( R% z% L9 W0 |  y$ v    return (UF_UNLOAD_UG_TERMINATE);
0 J4 N8 J& |- }}
0 p. h. J* x; F) K
3 D, {* c6 m0 Kvoid ufusr_cleanup(void)# W! f+ u: I7 E5 b9 @# C
{7 H, C' w5 H2 |; ^
    ECHO("NX is shutting down - running ufusr_cleanup\n");4 ]! Z( M& Q  J6 M+ F5 ], J
8 z: ~, ?. h9 }: ?0 E
    /* put your code here */
' g6 Q1 ]7 v1 V/ D; N3 v0 G7 r}[/mw_shl_code]
4 r0 N2 u3 L: @* p( E
上海点团信息科技有限公司,承接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! G- U& S1 J+ y, d3 c# [1 }0 M% r
请问这个函数是怎么用的?有什么用?
  ?: b$ n+ w' k& u. G5 C1 \
入口函数 改成 ufusr_cleanup
5 V9 `7 D* G' t3 l) h. n4 i/ r% n+ p  i6 P# ~/ Y& u: s  d: i
意思是 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二次开发专题模块培训报名开始啦

    我知道了