PLM之家PLMHome-工业软件与AI结合践行者

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x
5 _3 I4 K+ n  z  V
NX二次开发源码分享】关闭NX后,做点儿事& [- d7 K* z& M! |, ]
' R1 X* t9 D" w( b3 t7 x1 H
[mw_shl_code=c,true]/*
0 J1 B- ^3 X9 z6 C& x2 m- Q( f( p  f; q; k, w7 _2 D, {7 M/ Q9 K
    ufusr_ask_unload is invoked immediately following the completion of ufusr& X7 u3 v/ Y+ b& f
    (or ufsta when the dll is run from a startup folder) to find out when you+ M! A1 _% i- u3 s5 v
    want the dll to be unloaded.  If ufusr_ask_unload returns
/ i4 `8 a0 C! g. p. e/ s. U" c    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is7 z6 h/ {4 l- _' c
    unload when NX is terminating.  To prove to yourself that this works, set
. [/ _0 z" L' Y    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not
! y% f( i2 d7 H0 O    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
4 s5 C0 f. l" Y) t7 I    Log File and make a note of the full path to the syslog which will be shown4 D, m2 l5 k! D% K. |; S
    as its own first line.  Run the dll built from this code (nothing noticable
. L+ {7 m9 c2 Y- Q# ]) i9 s2 o    will happen.)  Exit NX.  Find the syslog and open it in any text editor to9 z) f. |5 O0 E4 d
    see this line near the bottom:
" N2 d" }3 C6 a. L+ [& v2 G& Z6 a+ |# K$ y: W% I3 }% C# m
NX is shutting down - running ufusr_cleanup& e. s: r4 y: `7 V0 j5 j
, [4 t  Z0 ]4 I& C3 S
*/
3 z2 R  \% i% Z3 m#include <stdio.h>/ C1 j- p+ R/ i( c3 Z2 D+ L/ \+ c
#include <string.h>- Q4 x" j4 |% \+ u7 j/ z0 U& A5 G
#include <uf.h>5 [2 f. E$ s5 ]+ {; D2 q
#include <uf_ui.h>
+ A- `8 h+ s8 t" U' l0 a) J#include <uf_exit.h>7 s1 d) l- ]) S4 N) [- F/ n, K

. D  @7 Y; X3 [. S#include <stdarg.h>0 H  Y2 W  ]$ }0 K8 `+ O& P& w5 S

+ m9 [' E9 b/ `6 Z2 ?( fstatic void ECHO(char *format, ...)$ V2 _. u/ F/ a, T6 \2 g4 Y
{
6 S' @) ^# h  a) g( c3 L* A- R    char msg[UF_UI_MAX_STRING_LEN+1];4 C- `) u0 s, u8 Y2 R
    va_list args;/ F( M6 i: u! X- l# u) Y
    va_start(args, format);
$ [& a3 n( y2 h* x. N0 l    vsprintf(msg, format, args);
/ U7 b- L& E/ V! E" o8 `: `" K! x    va_end(args);! E  ]4 J. V% j5 q! Z. E
    UF_UI_open_listing_window();
9 K2 Z! R6 V) ]. D7 K! k    UF_UI_write_listing_window(msg);0 y# \% h  }2 b9 P7 V. y
    UF_print_syslog(msg, FALSE);/ H. _3 e" Z# s$ [/ R* k
}: L: Y8 |3 ]7 N3 l

% k2 Y( ]7 d' P# Q2 ^3 I#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
, q9 D7 _; o, Y+ G" B* j. W  l) M/ s, {; }# d
static int report_error( char *file, int line, char *call, int irc)
/ J  D. \) s# E1 B& g{' G; i. V2 g5 M/ B: N
    if (irc)
9 \# S3 _8 N* G# }% V    {! ?* C& t2 E$ C' Q
        char err[133];
0 h* ?5 e! x" S& G1 v1 M% @" T1 V
        UF_get_fail_message(irc, err);0 P6 m7 T1 H. B+ E* ]2 w) U* Y
        ECHO("*** ERROR code %d at line %d in %s:\n",
' R; k+ b& S- K- [+ j            irc, line, file);$ b2 \. g# _8 J$ d/ n; _7 d
        ECHO("+++ %s\n", err);
3 e: M! A' \( |0 c3 T2 Z3 `        ECHO("%s;\n", call);' L% |8 b" J2 f# _& ]9 v1 ?
    }
* |, R6 Z: ?$ N6 e; i7 O3 `% J
9 R) Z6 g+ D3 b! W& y0 t; t    return(irc);5 {& D( [( C5 a! U
}
5 c/ q! o; L& M! R. r0 ~/ N+ P3 ?7 ?8 d" i$ |: A6 o
/*ARGSUSED*/
+ {$ j. d$ i0 P3 K! P, u  V7 dvoid ufusr(char *param, int *reTCode, int paramLen)
, @- Z0 T8 S. B3 Q9 Q7 {{
( p0 @7 l" _3 @. l1 H& R- m$ j}
; X' n6 o8 y$ X+ d
5 c8 \( a/ J$ R: |4 P# ~8 }4 C/*ARGSUSED*/
0 J1 {' p" \. ~6 d4 wvoid ufsta(char *param, int *retcode, int paramLen)7 \1 u" H2 o% b; j
{5 v3 S& K: ^" @( S- F
}
. v# Z: O8 m. t& T: e# ?+ L
  |- E3 {/ J7 Q% yint ufusr_ask_unload(void)3 _0 Q, @' d0 j. O8 V0 E
{
, G( V) l& S( X, w6 J% b    return (UF_UNLOAD_UG_TERMINATE);/ A# E3 \3 w4 v3 {
}
9 t+ Y; c+ t6 S, l" H
: t7 _3 S5 l5 o# |8 Ovoid ufusr_cleanup(void)8 y9 `; |  w1 _2 _+ u5 Y0 Q
{
: h5 A) ]7 P% |* }% a    ECHO("NX is shutting down - running ufusr_cleanup\n");1 F1 t6 }3 B1 l

/ X- C) Y- i0 @    /* put your code here */
" x1 V1 t4 I7 E# A' r}[/mw_shl_code]
$ U$ u( z- X! C4 {! j4 h
上海点团信息科技有限公司,承接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) V8 {0 s# u* c+ Q5 ]
请问这个函数是怎么用的?有什么用?
6 D" Y' Y: y; v4 }5 V4 m: s& J  {
入口函数 改成 ufusr_cleanup
* p  g0 b6 I8 y6 O' p8 Z# V$ L. f, F5 ]5 {) B% U, p
意思是 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二次开发专题模块培训报名开始啦

    我知道了