PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

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

  [复制链接]

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

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

admin 楼主

2018-7-12 11:12:47

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

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

x

$ D! p% ?" ]4 ~: s& @4 j6 j8 ]! X8 oNX二次开发源码分享】关闭NX后,做点儿事3 }" G4 ?& r: Q3 H0 C
9 ]' n- y$ t3 u! g. q! z3 d
[mw_shl_code=c,true]/*
9 K2 t/ V' E7 Y  f# e0 n! P8 ^, U( J$ Y1 H9 N# d" U
    ufusr_ask_unload is invoked immediately following the completion of ufusr) l) ~! P0 |) o* j
    (or ufsta when the dll is run from a startup folder) to find out when you
' P! `& A+ l5 a    want the dll to be unloaded.  If ufusr_ask_unload returns
2 ^" b7 g1 a- X/ S1 C3 K9 T    UF_UNLOAD_UG_TERMINATE, the ufusr_cleanup is called right before the dll is$ n( c: e6 B* w' L
    unload when NX is terminating.  To prove to yourself that this works, set5 x* i+ B1 F/ X' l
    the environment variable UGII_KEEP_SYSTEM_LOG=1 so that the syslog will not+ ~6 k# J( Y- L: n
    automatically be cleaned up when NX terminates.  Start NX.  Use Help-> NX
" R* R: Z3 o6 P+ h# n; D    Log File and make a note of the full path to the syslog which will be shown
- F$ D) j6 }- c) X5 g2 ]0 K$ s    as its own first line.  Run the dll built from this code (nothing noticable
: T& m0 ^$ e6 A& x! Q/ Y    will happen.)  Exit NX.  Find the syslog and open it in any text editor to
9 o, }6 T  Q4 {' H    see this line near the bottom:* L0 g' n7 y8 q4 g
/ j8 ^& K2 B: Y; Q
NX is shutting down - running ufusr_cleanup. _. o8 ^% V# W! O
! U9 j  Z2 Y: Y" t, O+ [/ T9 G% \
*// j) |& k& }; e/ }' a9 r+ N
#include <stdio.h>
8 H: v" M+ a6 E4 b& J! V#include <string.h>
0 ]3 Y# D2 k+ F: f0 ^* M6 L  g$ v#include <uf.h>
8 `: @$ l7 X" w  E3 W#include <uf_ui.h>% t$ _1 s' F: c3 T; g, F. B. @
#include <uf_exit.h>
2 c! ?& L9 Y) Y/ ^& r/ z' Z! ~
1 `! j3 z' H' Q! j#include <stdarg.h>
8 k9 b2 y. Y7 V. p- m9 H2 D! a, m( |+ ?
static void ECHO(char *format, ...)
; k. V5 B& E, L# I6 ~{' l: @' ?& ^  u# N  ^
    char msg[UF_UI_MAX_STRING_LEN+1];
/ [! }5 c( h$ L3 l6 u    va_list args;
/ Q/ w1 L" ?" c1 g" k9 [    va_start(args, format);3 k( y, ^# Y( k, ^4 p' V( Z
    vsprintf(msg, format, args);
( h" ]% D( t' F, A# Y6 P+ s5 v    va_end(args);' w3 J6 s1 r& u" m& }
    UF_UI_open_listing_window();
/ e  m# P+ ]) z6 C2 n) x    UF_UI_write_listing_window(msg);2 m6 g* M( W, M
    UF_print_syslog(msg, FALSE);" L" S8 _" \2 r: K/ {
}1 ^3 T% i+ G/ ~* A: W
5 G7 q4 d* w- J. c# |
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
; s1 ?( D6 U$ V# Q( L4 A: ?% ?" ^" E/ |1 Z3 p8 d$ B6 f  Q
static int report_error( char *file, int line, char *call, int irc); j" z. j* d. h5 ?
{
3 d+ p2 h( ?# M7 n    if (irc)
. q7 h# {5 N- g# ]- Z    {" X" F* h* a' L) U1 A: j; w
        char err[133];
; r2 P% Q0 O- `9 y3 ~0 X: p( \1 \# K) s( z0 f
        UF_get_fail_message(irc, err);
6 [* V% ~$ O& Y. ~        ECHO("*** ERROR code %d at line %d in %s:\n",4 j' p* y1 h+ r3 d, _, y* p$ a
            irc, line, file);
  ]. a5 C& x1 X+ e, s( W        ECHO("+++ %s\n", err);9 d+ v1 ]9 m5 z- e% A5 {
        ECHO("%s;\n", call);
0 {! k& c" J# Y# y( v/ c    }
% k* |. e( [1 t7 [0 i2 ?( ^! Y& e' o! f5 D# n, f7 L
    return(irc);: @1 T1 V2 V5 d
}* ?( c& k  E9 c8 V( [

% Y, \* C9 D5 }# a/*ARGSUSED*/6 w' u. z* T* }+ {+ ?7 l6 d4 {6 S
void ufusr(char *param, int *reTCode, int paramLen)& ?) }9 \+ ]( E9 _+ F
{8 j8 ^  U9 I; j- @
}
3 q2 P+ V; J) d6 F
7 t8 M3 D# ~1 h: r; i8 y/ [( [1 H( f/*ARGSUSED*/- q4 X7 Q3 X9 W9 B' r0 }
void ufsta(char *param, int *retcode, int paramLen)
" x& ^, g  ]# D/ m, o/ m* G4 {{
5 V* P2 _) e1 k! H; B}
0 F3 N" u: H0 l1 [, M" D9 h: ~9 d+ `
# p0 {& j( P/ N' w1 L, yint ufusr_ask_unload(void)
( @8 ]' j5 ~4 t: S( R% A' |{" v- m) `8 [+ N3 T: ~) a/ A6 m. A
    return (UF_UNLOAD_UG_TERMINATE);/ a& ^  k( H: w
}6 e% d* ?0 G7 d( R6 h3 w" B
) Y. K5 F# N% |( I
void ufusr_cleanup(void)
+ y/ K  R8 ^8 Z{8 s5 C" b5 r9 R2 W  @. N! p' k8 x
    ECHO("NX is shutting down - running ufusr_cleanup\n");
$ r+ H7 F* U! q3 \3 c4 U  M- V9 J' Q) b! K; E* x
    /* put your code here */
3 U9 C  a' J( U7 e) l1 D4 r}[/mw_shl_code]
! O7 |% O+ h) q* Q4 e( n
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ 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- Q9 ], S# f7 ^2 `) i; @. U8 `
请问这个函数是怎么用的?有什么用?

3 k& N( X  A" n' \入口函数 改成 ufusr_cleanup
8 v; I5 u. ^* F% {! P7 E) ^
, i0 t/ S) U. I5 p5 }5 m3 N意思是 NX 程序退出后,你可以做些事情 ,具体做啥可以自己写,就是个入口
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ 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二次开发专题模块培训报名开始啦

    我知道了