PLM之家PLMHome-国产软件践行者

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x
  ?( b: b' a& p0 e2 V+ v
NX二次开发源码分享】关闭NX后,做点儿事2 f3 H3 ]: ~) V7 {* w$ U! B, P  L& [

- H1 {. d6 K& k[mw_shl_code=c,true]/*
% N9 ?- b5 N) V& H4 v+ s- W. p1 j7 l5 ?+ W$ E% \* X  `7 Z
    ufusr_ask_unload is invoked immediately following the completion of ufusr- O! R  M" I* {6 N/ W6 k6 k
    (or ufsta when the dll is run from a startup folder) to find out when you! M  [5 |5 G- S) b7 V9 h
    want the dll to be unloaded.  If ufusr_ask_unload returns
3 }) M2 `( ^1 u& K" u  z4 y    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is% d$ j1 @' \: f& z6 [
    unload when NX is terminating.  To prove to yourself that this works, set
) b& Y9 L& v' P% s4 r    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not1 ?. t3 i5 |9 \1 E4 E: R
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX7 i" e; p, W' c4 i) z* X2 P3 P
    Log File and make a note of the full path to the syslog which will be shown" F2 X4 _8 q# q7 z; G, [! i
    as its own first line.  Run the dll built from this code (nothing noticable
) r/ h8 F: ]0 n  k    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
0 F( n" Y: G0 ~" |9 c7 ~    see this line near the bottom:
+ u. x" [+ c8 X& _0 O  }, O  x
  h# [! D2 D+ eNX is shutting down - running ufusr_cleanup
$ T) {4 d; M5 G( y$ Z. P! x- h8 F
*/9 ?& w% r5 ]+ A! K
#include <stdio.h>4 X6 A" c5 H/ b% x, c) I% @5 X5 Z, I) M
#include <string.h>5 h5 Q, H4 {- a2 q1 @
#include <uf.h>
* U' }' ^* D# Q% \: S" a- l* |#include <uf_ui.h>( M) q" B" H  `$ L+ a
#include <uf_exit.h>& }- n0 I: I( C0 [8 _. ^* q
% L+ m- h1 o8 i
#include <stdarg.h>/ T+ q0 E3 x" B7 i) w1 m. V" M0 E' ]2 y

) i% M) K1 f7 a9 _' \/ _! O) |5 L$ pstatic void ECHO(char *format, ...)3 V& X" g3 @3 G( V3 u9 G6 {
{
& }7 g; E% t1 f) i. T* p* }- c  }; T8 n    char msg[UF_UI_MAX_STRING_LEN+1];
+ Y) [( W8 T; {  [$ O    va_list args;. }* g& n$ f4 C) W- N3 _
    va_start(args, format);3 G5 C/ S' {& V& T2 X5 D
    vsprintf(msg, format, args);- x/ R; }( X: @( Q- n
    va_end(args);7 y% ^% g% W3 g2 w; E) Q# t4 j3 W
    UF_UI_open_listing_window();
, b: U8 I* ^0 Q6 _& i" W    UF_UI_write_listing_window(msg);
+ d  a7 w5 t- g' o0 C2 K    UF_print_syslog(msg, FALSE);  {4 f" C7 `" O6 }+ `# ?2 F  o
}' @7 _  R4 J# c# J. K
& X4 ^7 }5 D7 @+ e, u- D
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))! N" ~% d% F. |+ H$ o3 C* L
9 N# S. a5 V7 O( T5 {3 \/ y5 L% t
static int report_error( char *file, int line, char *call, int irc)/ }9 ]$ O) [/ v: ~. v$ p
{
# a. |9 x; N  l! A    if (irc)0 {3 U9 \+ R% A, l0 q# Z
    {
  e$ {" Y, X$ p6 x2 k. G        char err[133];) Z( r- I* t7 X3 ?( Q* ]) l/ M
6 I- J& d* q: L8 b
        UF_get_fail_message(irc, err);
, L" _9 h" V; F4 u0 X        ECHO("*** ERROR code %d at line %d in %s:\n",, U% Y7 l5 h6 V) n$ Y$ P
            irc, line, file);
7 i; i7 z6 Z+ ^4 z* X, e' F        ECHO("+++ %s\n", err);0 e$ {% F8 F+ W, y
        ECHO("%s;\n", call);
/ S# S+ I! J3 p+ x2 J* p0 T; `. X    }
' I, z0 e) H# \6 g4 h. i+ y  w3 c/ L, n3 z& o8 z
    return(irc);
& `8 Y$ i( y0 i+ ^% N) w}. P: L' M. L! k

1 w& ^* Q7 _* c! |0 Q/*ARGSUSED*/0 K8 F& ^9 C! Z, H
void ufusr(char *param, int *reTCode, int paramLen)
* }; L& {' M7 |{- W. \( T* K2 q% L
}
$ y3 `6 ]9 z) p) x( X, B- q- s9 z6 }1 P9 Z- J% N. W( }+ B- o' N
/*ARGSUSED*/% ~% t- s' ]! |1 R) P9 u' X7 e; t, ^
void ufsta(char *param, int *retcode, int paramLen); ~& l3 s# O8 D  v% X8 G3 ?% Y
{
% _+ R" L1 `: |9 c}
; n' k1 ^: C9 Y$ E, a9 Z3 X& u
; w- h2 \1 u3 }/ C# Hint ufusr_ask_unload(void): Z) c9 f1 Q4 G# ?
{
+ J9 X) H2 \+ [9 J7 _0 _, Q    return (UF_UNLOAD_UG_TERMINATE);# M( A1 \, I! [( r5 D% D% v
}+ F# z: t8 @7 ]0 ?  |/ {# N9 ~. _

! K1 R* A& b% g9 Z% T0 Gvoid ufusr_cleanup(void)' Z, y8 ~9 \& p$ }6 O" E+ j; p
{# G5 s. ^& Q/ m0 a
    ECHO("NX is shutting down - running ufusr_cleanup\n");+ ~& M- q3 A) V5 N

, [, |; a& W0 C5 Y, V: }# A. b/ A    /* put your code here */
+ h5 A( |! r$ N2 R. E}[/mw_shl_code]" P* _( U9 G* _4 O
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 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& W- u0 U$ r( }( q3 j9 x
请问这个函数是怎么用的?有什么用?
, Z/ C& h& B; q$ A
入口函数 改成 ufusr_cleanup
6 |( J, n5 ?: t- {, `
9 v) c7 J0 ]5 g  j意思是 NX 程序退出后,你可以做些事情 ,具体做啥可以自己写,就是个入口
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 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二次开发专题模块培训报名开始啦

    我知道了