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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x
, ^6 j! q5 f6 A' A" i8 r
NX二次开发源码分享】关闭NX后,做点儿事
1 K1 ?  }3 t( a: k  U: e! m  ]4 S9 _: S$ B
[mw_shl_code=c,true]/*
- L0 ?0 }* E3 F$ N" t% P1 W2 P( L; s& G$ k9 f, @. S# J. {2 n
    ufusr_ask_unload is invoked immediately following the completion of ufusr. V& z- [& N1 D7 y; U
    (or ufsta when the dll is run from a startup folder) to find out when you
. {7 y0 x. y7 m    want the dll to be unloaded.  If ufusr_ask_unload returns/ x) ~' Y; S' {$ p5 P& _8 p8 ~9 R
    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is- l0 E5 S+ n8 I) d4 i( ~
    unload when NX is terminating.  To prove to yourself that this works, set4 {$ X+ D3 }4 d) \% q% B, V( K- M
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not
% i1 O4 j0 y5 T+ t. b: a5 `    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX; {& w0 c$ s" L7 T! B
    Log File and make a note of the full path to the syslog which will be shown; l  u4 B$ ?7 b. S- N/ I' S8 t
    as its own first line.  Run the dll built from this code (nothing noticable3 c* V( C0 r$ ~- \  Z
    will happen.)  Exit NX.  Find the syslog and open it in any text editor to5 W4 ^; ]3 U; Z+ _. o# B
    see this line near the bottom:
1 D7 I' U9 Q' b) Z5 D& h% f# r: Y0 ^; U
NX is shutting down - running ufusr_cleanup6 X4 ~' o& m2 ^# _$ }0 w8 x3 P+ _

5 V9 A3 A  Y" K*/+ o1 N/ D! K1 V- |8 ^& y
#include <stdio.h>- D+ A2 I6 l) J' }7 I
#include <string.h>" u! \9 K- ^% I  S8 ~/ c+ y
#include <uf.h>8 h6 ]- \' g5 ^  B
#include <uf_ui.h>
7 R" p# P- M3 A3 R, b. H( O# z0 |#include <uf_exit.h>: h! K& {; t# t
9 {1 }! ~; g! f" K8 z: V: Q5 b3 f
#include <stdarg.h>8 Y; G( S7 {  N) J

4 U& y1 C4 v" x- E7 Nstatic void ECHO(char *format, ...)7 q5 V: ^5 i7 n. ~; N, |3 n
{; b: S% S% Z2 V" |( G; A/ x
    char msg[UF_UI_MAX_STRING_LEN+1];
, k- s( z+ l; \, \1 h( F9 r    va_list args;3 }. P6 c2 N4 |' K
    va_start(args, format);
- J/ Q) Z1 z( h9 r0 l/ H    vsprintf(msg, format, args);9 h( d1 y; K! F$ J1 l
    va_end(args);
, q1 V2 k8 d+ L- B    UF_UI_open_listing_window();9 N* b) K$ k2 J) K
    UF_UI_write_listing_window(msg);5 [' B* z+ S' f" l5 D! b
    UF_print_syslog(msg, FALSE);4 T! \4 k" C8 N# F
}- m7 f1 p2 [+ }
3 u: b9 S6 ]- X! W0 Y  S+ i
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
. A& u+ W2 z- k. e2 G# h
$ k% t( G" n! Ystatic int report_error( char *file, int line, char *call, int irc)3 ~& R% m$ ]4 _9 `
{
* k7 k/ G; _2 J( p4 H* E2 Z    if (irc)
! ~5 |/ k$ F2 q4 T2 m: k" u8 R/ n; G    {
( ?3 o6 o' @; @1 Q" D9 j$ a4 J; A        char err[133];
* W: j: M1 ]2 y( T* m3 K8 D. y3 U
- F( w) `# ~* T: `: N        UF_get_fail_message(irc, err);% m+ x5 |- ^2 U
        ECHO("*** ERROR code %d at line %d in %s:\n",0 f  ~# F, z* T& K$ A
            irc, line, file);' e' k9 G+ u3 X9 v0 h
        ECHO("+++ %s\n", err);
8 Q0 h4 f+ \" G' ^        ECHO("%s;\n", call);! r$ `  U* V5 O8 V; g$ o5 [
    }5 a3 z3 t$ R" ]) z' ^/ P8 C

1 Y/ {7 U& F) u! j    return(irc);0 s: y/ U0 N7 k% b. I0 i8 d% s* s
}% _. m+ P) m" m! J

! ?( Y/ g+ K: e5 G/*ARGSUSED*/
8 e$ u' m8 t6 H0 N! O: s# a+ a$ }void ufusr(char *param, int *reTCode, int paramLen); M6 I. S+ d  ~  T. ?
{7 u- j; @9 T0 k4 q9 H/ ^
}- {' a0 L$ M6 ^9 I6 `
/ C$ a5 O3 z3 I! O/ i
/*ARGSUSED*/
3 \0 X; v: s- Zvoid ufsta(char *param, int *retcode, int paramLen)0 u1 b1 {# V3 H
{
( B, B- k* ^4 L6 Q5 u3 C}) V/ h5 D8 k7 Z% `$ ?& ~& G: G: i
+ s- |0 t6 i4 p0 t1 N
int ufusr_ask_unload(void); D! i0 N& K+ F2 H2 H
{6 O% K7 p1 y' r1 ~& f
    return (UF_UNLOAD_UG_TERMINATE);
* l: F$ Y- Z; `6 e; M3 a# w$ Q}0 I* ?' ^. j8 f* s' n- x
1 I7 q- ^/ N, y0 B( z' |5 s, U' v# n* o3 f
void ufusr_cleanup(void)
' {* c3 \  t; m4 K7 C& T{
  s/ D8 x# ^1 V) O/ x8 Z/ F    ECHO("NX is shutting down - running ufusr_cleanup\n");6 g* X' c- h$ P

3 {- W2 q8 E% J/ @    /* put your code here */
. C# d- E! x, u}[/mw_shl_code]0 u9 e  G3 j- Q% \$ a- l/ h* ^  v
上海点团信息科技有限公司,承接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:496 h0 `, Q& M* d% |9 ?' Q  E
请问这个函数是怎么用的?有什么用?
! r( ?. i3 D" p/ v" [
入口函数 改成 ufusr_cleanup
; P9 Q1 Y; t9 ^9 t. M7 _" ~+ k, ~  I! ^- n3 v
意思是 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二次开发专题模块培训报名开始啦

    我知道了