PLM之家PLMHome-工业软件践行者

[二次开发源码] 【NX二次开发源码分享】关闭NX后,做点儿事

  [复制链接]

2023-1-10 20:46:56 4168 3

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82170
QQ
发表于 2018-7-12 11:12:47 | 显示全部楼层 |阅读模式

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

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

x
1 C3 M- v  C0 {! x
NX二次开发源码分享】关闭NX后,做点儿事5 w" T, L4 v( \# ?7 y( l

5 \6 q. L0 x, y, d+ I/ O[mw_shl_code=c,true]/*6 P/ a  N+ }2 I5 D
3 K  d* K0 ]" I1 L8 i3 ~
    ufusr_ask_unload is invoked immediately following the completion of ufusr* K  X+ V2 `% y( b4 ^  E
    (or ufsta when the dll is run from a startup folder) to find out when you
/ N! H. M& Y$ K' G    want the dll to be unloaded.  If ufusr_ask_unload returns
. Y& _8 N( }1 k    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is
$ O. D; x) K/ [  A0 I4 Z    unload when NX is terminating.  To prove to yourself that this works, set
9 Z4 \, z; ?8 o1 W" @$ O4 g    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not: A3 P4 J+ {. ~: `. N
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
  Y1 i. l" s3 W3 l% D7 x/ p    Log File and make a note of the full path to the syslog which will be shown
" z: n2 _- m& u# v5 O; E- N# B    as its own first line.  Run the dll built from this code (nothing noticable, w* G+ p2 x- e, {2 Z* r0 k
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to6 u% v: B6 P, }: z. F* D
    see this line near the bottom:9 _- q2 P2 {5 J2 w

) `( i* ?8 t9 B' o/ Z+ I  l4 {) V. zNX is shutting down - running ufusr_cleanup+ e% R$ T9 S1 [9 T' ^
6 D' J! q. a# q3 Y% d* i( x- _
*/3 _. J. V. O9 D) ?4 I) E
#include <stdio.h>$ n; B; U- H0 X$ c; G# T) U
#include <string.h>
- Z. _: U* O2 v+ i, M. L4 m#include <uf.h>
2 A2 k" _: J$ B* i5 w: {0 H1 ~0 G& s#include <uf_ui.h>
( Z/ _3 ?* ]) M, B9 {- G. y#include <uf_exit.h>6 H" W' n7 J. N4 o' b4 o4 u* A. I; b4 j
8 \; K" f3 p, O) R8 c& o
#include <stdarg.h>
8 h* K$ @- [0 t6 y- V' U" U. L! ^/ G) e7 P' i/ W+ V( L) v8 Z6 p
static void ECHO(char *format, ...)
) d" M; h5 j5 x" U# y{' E! y6 }/ {8 O1 m
    char msg[UF_UI_MAX_STRING_LEN+1];
- V* H( a7 ^' d' ]    va_list args;6 G6 W- a. |& Z) I1 ?
    va_start(args, format);
, W% j  w8 U! o; [$ e& \' u# }1 T    vsprintf(msg, format, args);- x" [7 ^8 [) v1 f, e
    va_end(args);
1 T: _2 J: Q% N2 M( _! b    UF_UI_open_listing_window();. e  W5 X3 W$ I2 N6 A
    UF_UI_write_listing_window(msg);' {9 B  ~, a! f' G
    UF_print_syslog(msg, FALSE);0 [3 P, g% @4 j5 X, F; p0 G
}  n7 T1 Y* m% u$ z+ F" u/ z
- `/ K3 h& J" L+ o2 b/ h
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))4 _6 x+ z8 L! e

, B' e  m( P, {( ^* ^6 gstatic int report_error( char *file, int line, char *call, int irc)+ c0 U- b, @  e
{
* P, D: h6 l6 K0 E% Z1 w; B  P    if (irc)
" M) E! E# k- j    {/ _8 ~/ s# A- u' L
        char err[133];
% r+ t1 J: Q( i, c; e  d% @( |
( t: ~. P8 U7 B! [, |  R, C; f0 ^        UF_get_fail_message(irc, err);
5 [: b' s$ z  h) j! ^5 T        ECHO("*** ERROR code %d at line %d in %s:\n",
3 E3 W6 g5 m3 P            irc, line, file);
1 I5 Y2 \% G# s9 p5 S7 r( Z8 Z7 ~        ECHO("+++ %s\n", err);
' u3 f7 P6 W1 t0 V2 k" v) \        ECHO("%s;\n", call);
: I9 ?( |4 u2 f    }( x( h: U: ?; E0 d7 @/ X. o, A
9 [0 y* @5 w5 x" B
    return(irc);
/ X! b% e5 E. `. ?$ x9 x- }/ `}
3 w) V! v1 `1 H# O9 `, P% `& o, B9 M2 A5 [. E! y
/*ARGSUSED*/
2 D, ^5 F& j" R$ f& K2 jvoid ufusr(char *param, int *reTCode, int paramLen)) w4 c( N' w) Y& b6 l+ J
{
3 [. S$ {: S  _6 {% ~}' d  }5 D/ K/ b+ T
9 V) S- p; @9 p, x2 J
/*ARGSUSED*/
1 m( l& {( [% K. H9 z: J/ cvoid ufsta(char *param, int *retcode, int paramLen); z3 I2 u% j9 ]' S1 t+ F
{
' I/ s# t3 g' n}) B. b3 h3 }) P
# U2 B( `3 J' F# @$ s( g: o
int ufusr_ask_unload(void)( Q5 M" x( o6 c
{  a6 k  d; M$ {; ?5 a
    return (UF_UNLOAD_UG_TERMINATE);) y" @( g/ T+ T; Z& b, H% ^: C1 D
}
* g+ O" _5 G0 ~2 n, O- C$ _( D/ Y" c: L; b" ?
void ufusr_cleanup(void)
) h! i/ O8 N& a% h{
/ ^0 ]2 Z; L- Q' o& e    ECHO("NX is shutting down - running ufusr_cleanup\n");
2 H5 q. \! \0 W9 Z9 H2 h7 `
% w. |0 {8 `! a0 e0 i6 B' h+ r    /* put your code here */$ |; ~- p' F# V  n
}[/mw_shl_code]. x/ _+ J% g9 c  {' {2 h. l: O  y
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

全部回复5

1

主题

45

回帖

203

积分

培训VIP会员

积分
203
发表于 2019-12-25 08:49:24 | 显示全部楼层
请问这个函数是怎么用的?有什么用?
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82170
QQ
 楼主| 发表于 2020-2-13 08:43:55 | 显示全部楼层
licxsw 发表于 2019-12-25 08:496 A) k/ n8 }: n8 s3 B# D$ c' z) r
请问这个函数是怎么用的?有什么用?

4 {* }! b$ g( ^入口函数 改成 ufusr_cleanup ; }  b- v3 W' S, D

7 j2 X" ?/ B, L  b意思是 NX 程序退出后,你可以做些事情 ,具体做啥可以自己写,就是个入口
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复 支持 反对

使用道具 举报

1

主题

45

回帖

203

积分

培训VIP会员

积分
203
发表于 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.doteam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了