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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x

4 P) @# k1 K1 PNX二次开发源码分享】关闭NX后,做点儿事$ r# R* Q3 S; S* U7 R4 N) E2 L
! ^" q6 y; B. t/ r) {
[mw_shl_code=c,true]/*
' ~" w+ y) `6 ^& Y) I  o; r) c' |/ p3 B/ w3 j) J
    ufusr_ask_unload is invoked immediately following the completion of ufusr5 t! r! R& ^& ?1 A: V8 ]: e/ c& V
    (or ufsta when the dll is run from a startup folder) to find out when you7 F: r9 B& X. D5 X3 @1 g' T
    want the dll to be unloaded.  If ufusr_ask_unload returns
) n  R$ \3 A0 c7 Y% B    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is, b2 j5 q( }- I7 U* ~
    unload when NX is terminating.  To prove to yourself that this works, set
1 G- V; ~3 ^# a; f7 B! i/ b& W: w' m    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not. ^* W$ u( ~4 K6 O7 V* n
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
4 H! O* @, c/ {  Z) _- Z% \& l4 s    Log File and make a note of the full path to the syslog which will be shown% ]9 [# M$ n# \5 X6 Y
    as its own first line.  Run the dll built from this code (nothing noticable. u0 \3 W7 p: S& A4 p& Y  p3 g
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to- R, r$ Y8 C. P+ }* Y" S4 e+ v
    see this line near the bottom:
0 C" h" m" w+ \8 p% Q5 f
% e) e& l6 m, zNX is shutting down - running ufusr_cleanup1 U) y5 V8 F, i- p
; Z* d  ^% z5 l9 _4 f8 g0 V
*/) L: s8 X5 x* {6 N9 R
#include <stdio.h>- Q( b# C3 [8 q4 j" l
#include <string.h>
1 s; ?4 ?7 [* F! u8 E. ?3 c#include <uf.h>
% K) B5 V% y# X5 R. `9 r) o, E#include <uf_ui.h>8 Y( Z: a4 C0 e4 I  F, @& Q* C
#include <uf_exit.h>( C8 \& y% I* V

7 r/ y: R+ C  X  \#include <stdarg.h>1 T7 Q. w0 b4 L: o
& R' }" y* u* E8 v
static void ECHO(char *format, ...)9 K+ z3 w5 B; q6 l& B
{2 c. L. G" u' [  X& j3 ?1 m" R
    char msg[UF_UI_MAX_STRING_LEN+1];4 T2 N- L, ?0 i- l; z) o- R
    va_list args;
: o6 B/ T4 o# i" j# |    va_start(args, format);; m; _8 b5 F. U( n2 {
    vsprintf(msg, format, args);. S1 y3 V9 x7 g
    va_end(args);1 E) I+ N4 W) w2 r; d
    UF_UI_open_listing_window();' h( ~1 a  ?8 K) v/ |* n3 I
    UF_UI_write_listing_window(msg);
( E. U0 m1 P; y9 ^, s    UF_print_syslog(msg, FALSE);5 f/ b2 E* f7 q; R- H
}
5 M# p* D4 p5 f5 g- G7 u- Q
, k% o5 y9 k2 c! `* t- ~9 x#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))( |" e  E% F* I- @( F- O# v

1 R( ?4 ^! S6 y8 S# w5 i* v6 kstatic int report_error( char *file, int line, char *call, int irc)
! v7 w: R9 m0 q{9 L5 f! V' y; Z/ S2 }+ y, W) Q% p
    if (irc)
- \" ~( Y; @' Q$ |5 Z+ `& F    {; Y! y( h* D" O$ Q1 R4 R  g( `- b2 }
        char err[133];
8 o& K9 L7 ~) t1 B9 R* U6 c. ?' c4 P$ g
        UF_get_fail_message(irc, err);5 k6 N8 j4 d( o( n, e
        ECHO("*** ERROR code %d at line %d in %s:\n",8 I& {: _) I( Z2 o. h
            irc, line, file);
( d( ?) B  B6 W& }6 A1 y- H        ECHO("+++ %s\n", err);
+ ~: Y8 W$ g, |3 r2 v1 K        ECHO("%s;\n", call);
4 G$ o9 ?9 I6 v- w2 I7 e1 G    }
, j2 h4 ~! Y; d$ C1 t& ~9 x9 I. u
. t/ H- h1 n( A3 s/ w& e( G    return(irc);
- M: Z! M9 m7 S+ `  G}- t1 v' P2 e8 ^0 i$ ~7 j; }" C
( t7 L+ G! e) w6 Q2 {
/*ARGSUSED*// I% _" o& D: r0 Y2 V: m' j
void ufusr(char *param, int *reTCode, int paramLen)
8 f" T9 d3 |: `2 P( l{
% m9 a7 ~) V9 d  U1 o}' O  d; x$ h. d: c5 ^% _

; d" S! I7 q) l* O/*ARGSUSED*/  t0 I& R& \: l2 n5 _+ N- J
void ufsta(char *param, int *retcode, int paramLen)* {' }) N4 E7 y2 V" w
{" x. G# l5 g2 t2 y- c, C5 M) i! l
}& P- f0 z# S; ]1 C# I) \8 u
% c1 [9 W2 l- |' P
int ufusr_ask_unload(void)
  v3 z; _# H) X( m+ {8 a{- h4 g, ^" f# E/ V- x9 s& a
    return (UF_UNLOAD_UG_TERMINATE);" h) w6 I$ |0 a6 V# i
}
% v6 d, b4 N4 S' q' ^3 T' x3 Y! v% j& G% G1 W1 e
void ufusr_cleanup(void)
" N, I) I) s. j- _{
) J1 u, D, R% ?3 Y    ECHO("NX is shutting down - running ufusr_cleanup\n");* @: Y. }/ C! p
& _% n* O  D& M& E7 k) U0 v6 b; G
    /* put your code here */
1 Z& g" {8 q2 Z1 q+ [7 ^4 j}[/mw_shl_code]  T7 [  X2 X& x" ?6 W: B4 a3 D
上海点团信息科技有限公司,承接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/ X( \" |) z' i7 t
请问这个函数是怎么用的?有什么用?

! x* @3 W0 d- l1 k3 q+ n" E入口函数 改成 ufusr_cleanup
* a: j) _; k, J+ Y9 c/ g! ]$ ]# k: U! t* ~# x! v& V- U9 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二次开发专题模块培训报名开始啦

    我知道了