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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x

2 s+ [( s' L  i$ T' PNX二次开发源码分享】关闭NX后,做点儿事# d" X$ b# N# F6 [6 o- V# J
$ e2 S' Q( b' r7 `8 q% @% P; G. R
[mw_shl_code=c,true]/*" s# k. x$ t# Y+ Z, T( n' w- z

# Y& d/ T) ~; W, a* h, V    ufusr_ask_unload is invoked immediately following the completion of ufusr
0 L4 Y& T7 ?. j* v6 v- R/ X, f    (or ufsta when the dll is run from a startup folder) to find out when you: W9 @# W& n6 t, v9 U+ d
    want the dll to be unloaded.  If ufusr_ask_unload returns& f$ F$ r! U3 T# E
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is" Z) U2 J: s, }) _. l8 p
    unload when NX is terminating.  To prove to yourself that this works, set
+ q0 y% I. G3 v/ m    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not
# K" ?8 U6 Z$ q7 w( f. h3 L    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
0 i5 j0 j" ?" {6 V( I; j" |: L/ h    Log File and make a note of the full path to the syslog which will be shown* H( q) E* j+ Y, E) A9 q$ i/ b' z
    as its own first line.  Run the dll built from this code (nothing noticable4 @9 _9 {2 c" K6 ?/ J" C4 Y
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
: m+ u: Z0 M7 k5 K- q    see this line near the bottom:
! r* J$ m( h' B7 _& x/ p6 |. s" Y) v
NX is shutting down - running ufusr_cleanup$ r' z$ t: `1 l% B" \: V6 M
8 Z! H& N  \# l8 w3 s& H
*/
2 l5 X3 K5 H' L+ \6 |# ~7 L#include <stdio.h>  @6 D; g; b0 R" I  X+ ?
#include <string.h>
/ `; P* H( f* |( p/ P/ ^! B- |#include <uf.h>, d* z+ S. l5 l  G( X
#include <uf_ui.h>/ X1 [1 ~2 Y% q/ Y
#include <uf_exit.h>4 j2 m& R3 R5 A$ t$ Y
$ ~& R) w$ b+ ]6 a
#include <stdarg.h>5 f0 N- B" v- z

$ R0 E# b1 ^8 u6 W8 d( G' f& Cstatic void ECHO(char *format, ...)
6 b4 J$ I8 C- Z0 `% ]2 t{
) S  I* B( L+ u! u9 U% |( }# l    char msg[UF_UI_MAX_STRING_LEN+1];4 {/ V6 v' M, y
    va_list args;
/ C. O7 L, v' R. B+ z0 `2 x    va_start(args, format);
0 e' u. \2 A6 S% {  p" B    vsprintf(msg, format, args);6 d9 [) g9 ]( e+ n+ L! |
    va_end(args);' g* X+ Q. K3 z, w, y# j1 w% Z
    UF_UI_open_listing_window();( g; @& A7 n0 z
    UF_UI_write_listing_window(msg);% I- q: z  T) o/ V9 }5 \# ?. u) {
    UF_print_syslog(msg, FALSE);
3 R6 m; b2 W0 |2 [7 Q6 t5 Y}9 e# f9 h* {: D2 j0 x: {
5 Y0 L( |9 }$ p& l8 s# O1 R+ U! J2 ?
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
: E) u) l; o' [8 v5 \+ M( t/ z5 |8 H$ n% J) c9 [
static int report_error( char *file, int line, char *call, int irc)6 X: i6 B9 m- l) q. }7 x) E
{
7 h: I! B" r  }' _    if (irc)0 z& e5 A( [1 h( k: w# ^: X
    {
( v% I0 H$ m2 Q' d        char err[133];; B" b% \, I8 @" L$ Z

8 K$ a5 x* z) E/ o# f        UF_get_fail_message(irc, err);
5 j$ V5 }* }) W8 b( f( J' V        ECHO("*** ERROR code %d at line %d in %s:\n",
2 W9 f8 \9 A$ s            irc, line, file);
* U9 k8 o; [, S4 f: T3 W. f2 Y        ECHO("+++ %s\n", err);, z# C8 k: t, Q7 O
        ECHO("%s;\n", call);% F9 \6 G' X% D' j6 c0 b
    }
  X% f4 B! x" w8 ^; C( x2 _) q+ A: }! _
    return(irc);% F- _" q+ h% N; Y, S5 z
}! {+ c5 f$ h5 u5 ?3 m
; I$ c+ f; O8 E  Y" y  e
/*ARGSUSED*/. Q; G1 c  I5 x0 x
void ufusr(char *param, int *reTCode, int paramLen)
2 Z0 y2 w" M, A{7 t8 v6 l. T/ h- M: d, S
}8 D. E! Q% E; K/ T
* V) |4 M0 e$ e5 U  b" \& N
/*ARGSUSED*/
: W0 b; b8 D7 M4 I" m. Gvoid ufsta(char *param, int *retcode, int paramLen)& q) l1 u7 w4 q4 Z( X& `
{
+ d( r* p' m5 ]6 O}/ v) a" g8 \9 ~0 ~8 G- b! u, ?

& ~. x/ e& Z1 N! ]/ Eint ufusr_ask_unload(void)( D2 G' @) F' \! r$ K$ X6 ]$ X- }
{0 h) h8 z, H2 x; w, q, z5 T2 p
    return (UF_UNLOAD_UG_TERMINATE);3 ^" U6 l: Y' B5 {0 o
}) J% P7 z0 U3 [9 a, N# X
8 M; f! N+ @" e; r$ ?* l3 f2 d- `+ r
void ufusr_cleanup(void)" j7 |' t/ U+ l
{
7 W/ M5 J/ @/ O9 V    ECHO("NX is shutting down - running ufusr_cleanup\n");
6 R# w& t* `- ]4 R) s/ e8 N  O: |  T* i- ~& v) T' p
    /* put your code here */  `1 G. q( L" E! w& d& [$ a
}[/mw_shl_code]7 y& O9 ?6 F; Q% c
上海点团信息科技有限公司,承接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% [1 H. P% m) o& I( T# q
请问这个函数是怎么用的?有什么用?

& y, k7 B1 ^4 I! |入口函数 改成 ufusr_cleanup
( O& J( v$ x! X* w7 d
/ Z  O- R# |9 z# x# 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二次开发专题模块培训报名开始啦

    我知道了