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 二次开发中,错误异常的处理详细介绍

  [复制链接]

2014-9-28 22:06:32 7094 2

admin 发表于 2013-11-8 13:35:27 |阅读模式

admin 楼主

2013-11-8 13:35:27

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

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

x
关于NX 二次开发中,错误异常的处理详细介绍5 ]7 e: n0 ^  Y, T- g& G
8 \, }) U2 |" Q2 L; D' z- f
错误处理
+ x2 G) b( r/ t% ^, y1 t" k1 D* h1 NXOpen API设计和捕获阻止程序成功执行的错误,这些错误包括:
  I4 V2 x! E1 K6 j5 |(1)无效的参数输入
( H( p9 ^  [/ s3 c9 @) R(2)企图创建无效的几何模型# T& w  t9 C7 D
(3)不可预料的调用顺序2 h7 ?5 s# V7 [+ W6 T
(4)得不到的系统资源,比如内存或者文件访问等6 H/ H' F8 ~$ w' {% A* A
  所有输出均为最新。
& N6 x6 m: n5 K! A% W8 e8 OLINK : fatal error LNK1168: 无法打开 C:\NXdev\Code\confirmcylinder\x64\DebUG\/confirmcylinder.dll 进行写入/ Z4 X$ y' {7 l6 P

  l5 a0 E' `( x) d* U$ _) W7 {3 }& i2 错误侦查
6 U, `3 s2 T+ d: P通常返回错误状态或者异常。4 B4 T4 t9 _" m
对于ufun,通常返回数字,如果是非0的话,就是程序出错,对每个return都要进行判断非常重要;
- h3 P. T6 E* \( C$ [对于NX Open 通过 Try/CaTCh的架构进行处理
7 O2 }7 j# {1 v1 x/ t: v7 W, U3 错误报告- ~# l+ |6 n+ M
(1)获取错误信息% _7 t6 m+ w2 q6 q0 v" K1 P' T( Y
错误信息,获取一个错误码,并有一段可读的错误消息
# |: A# q5 w1 m4 w1 J& { ufun 通过 UF_get_fail_message进行获取,如果需要翻译到本地语言,可以通过UF_TEXT_translate_string处理% L. o; Q& }4 J) e! g' l3 K
NXOpen 通过NXExcepion处理) l* E# n7 W' M
2 ]. b- ?: R/ l+ j; \
(2)建立报告; o9 h9 v8 ?; w4 M
需要增加信息去报告什么操作导致报错,以及如何处理; g. d4 n: U" U  {" m# e3 G
0 J5 q# M" s" M, t, Q& Q* W
(3)报告错误3 f) J5 W* n4 ?9 |4 p' r9 m
报告信息ok后,就需要处理错误了,对于致命的错误,需要给用户一个选项进行退出程序,而不是使得整个程序崩溃或者part文件损坏。. s& L3 u$ b0 [4 T
如果是可以接受的错误,需要将错误日志记录在NX日志log里面,或者设计一个对话框来处理错误日志。
+ ^& }  L! I" J+ C5 P+ g) e5 _, w- ? / R8 W  v# N, K- m
(4)错误修复8 P& u2 I! N1 W6 Z+ n$ y3 {& W6 N6 ^
是一种特殊的错误处理方式,比如倒角时候,半径输入过大,这个时候通过合理的提示,用户还可以返回到原始的对话框,重新输入半径。
$ b0 _2 i9 a. {3 T/ L, s6 L# J6 w NXOpen提供的错误修复包括:0 r4 O; }+ P& m% G
a.方法定义给于异常处理,让程序员来诊断错误
3 s4 S- r: M5 `( v, Q/ e, j  P1 V b.当方法错误的时候,可以返回NX回话和part到一个有效的状态+ h- C) Z- H# M- m) ~
c.UDO进行处理,去返回曾经的状态, X9 F# O3 Z: e! }
' g+ p# G5 ^/ j7 ^" @3 C9 s
  1. * Z! F8 p7 p1 G7 a% j3 a6 z9 V
  2. // ufun 的方法9 X+ |5 B% l$ M& K: L$ G
  3. ! X; L* q7 Q% r7 j; ?: t$ I
  4. int status = UF_MODL_create_block1( UF_NULLSIGN, _) [' W5 M- @, H$ U/ E! D
  5. corner_pts[i], edge_lens, &features[i]);
    0 r. G7 ^2 e1 a1 \- e: M
  6. //check for return value. M% \! g' E5 X9 y* c8 W
  7. if (status != 0)' {) q6 A( Y/ Z% n. z
  8. {5 s  s' C. k8 G/ r2 F, O" j: k: [$ f
  9. //get the human readable error message0 x7 T  ^# f) [6 k
  10. UF_get_fail_message(status, ugErrorText);
    ) U& K+ i9 x! b6 @! l3 |
  11. //report error to the user6 M- T' Z+ `5 \- T% E* \1 A
  12. UF_UI_message_dialog("Dialog", UF_UI_MESSAGE_ERROR, _
    # N8 G. i  }3 P) \7 V2 K$ }% I
  13. &ugErrorText, 1, ..... );) C. F# v8 P6 K- ]* Y: m5 t6 P) h
  14. //report error to syslog+ v8 s7 ~  T7 F, F1 M
  15. UF_print_syslog("Failed to create block\n", false);& a; q7 U" q3 y- a" t) q
  16. return 1;% x* I8 W; Z! T9 k5 C: x: p
  17. }1 k% u& A% B* X: C* u( u
  18. status = UF_MODL_ask_feat_body(features[i], &blocks[i]);
    $ C  p2 D, [7 e
  19. if (status != 0)
    + S! N! l& z& C; G' Z2 \; o
  20. {# y/ P4 Q+ g: \
  21. UF_print_syslog("Failed to get body from block\n", _6 \5 e/ J  S  U& [9 \  H# m2 I  k
  22. false);) m; \3 ~' t, H* w
  23. return;
    0 ?9 u2 v9 A# Z# l
  24. }; s3 Q$ Q( k+ P8 y+ [
  25. , y6 s. B% h  F) U, N2 n
  26. //NXOpen 的方法,以下是java代码( a% W( w  B- B" K( P: l
  27. 0 i- @% _4 t# p9 ^# U
  28. try
    1 y. R! j4 U+ [; l2 |
  29. {
    4 l/ v- t0 k  Z" L1 a1 L
  30. Session theSession =(Session)SessionFactory.get("Session");, q; i9 \$ F: G( m- L+ ?1 [
  31. Part workPart = theSession.parts().work();
    % _7 v! D1 K6 i  A" j
  32. nxopen.features.Feature nullFeatures_Feature = null;
    ) y- q7 t4 N) \. D3 v2 r! Z( I
  33. nxopen.features.BlockFeatureBuilder blockFeatureBuilder1;
    4 h3 F; M" A4 a4 \4 E7 p) D2 M# T
  34. blockFeatureBuilder1 = workPart.features(). _
    8 E$ L) B/ ~9 V2 x" K
  35. createBlockFeatureBuilder(nullFeatures_Feature);
    4 i) J4 a7 v2 [4 L
  36. }+ ]! [! Q1 Z8 O* y9 z5 t8 a9 W6 j% r
  37. catch (Exception e)2 ]( f& {3 o6 f+ q; r9 T
  38. {
    + f2 J; ]! V: v9 p/ [' B1 v3 k
  39. //report error to syslog, Message property on _( Y, G$ B! @# y- I. Z, q9 f6 s
  40. exception object already has human
    . I1 T/ a1 n: r2 p
  41. //readable message
    + ~, ]$ k$ Q# W; U# @6 s. \# `
  42. theSession.Logfile().WriteLine("Failed to create _; c4 O. {. s. @# j% U* z9 C
  43. block", + e.getMessage());$ L, V1 s/ I' y5 z+ E
  44. }
复制代码
) i; h1 ^( h7 z# k: I  O

' x3 h& M  l1 U0 w" ~( f
: U3 ?1 `, N" v* R$ z. x# x- X) f
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复2

叶修 发表于 2014-9-28 22:06:32

叶修 板凳

2014-9-28 22:06:32

学习了,谢谢高手
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了