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 6782 2

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

admin 楼主

2013-11-8 13:35:27

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

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

x
关于NX 二次开发中,错误异常的处理详细介绍* n# s& X1 ^: h5 K- u) l

9 r. M: p6 h! i  d- {( `错误处理
* t3 c- p' B" e% T1 NXOpen API设计和捕获阻止程序成功执行的错误,这些错误包括:9 J- y: {: s' d' t. a4 M" Y
(1)无效的参数输入+ }% \3 W6 {& c8 s: Y
(2)企图创建无效的几何模型
' M4 a; ]( }; b; L' b! J3 x) o% b(3)不可预料的调用顺序  g4 e" V9 [1 l' s  v! p2 e
(4)得不到的系统资源,比如内存或者文件访问等
" J# C" U; W) N/ d  所有输出均为最新。
5 J- e( |* w5 d* K$ {0 J4 ?LINK : fatal error LNK1168: 无法打开 C:\NXdev\Code\confirmcylinder\x64\DebUG\/confirmcylinder.dll 进行写入
6 j! L+ J( @3 n  p# H! i6 [( E- T: p
2 错误侦查- h$ x7 `& ]/ i2 S. j4 S
通常返回错误状态或者异常。
, h* \2 J! l# e* B% H" i' N) z- P对于ufun,通常返回数字,如果是非0的话,就是程序出错,对每个return都要进行判断非常重要;+ K* K8 _0 d4 w
对于NX Open 通过 Try/CaTCh的架构进行处理
( ^* W: Q+ B! \3 错误报告1 `+ G. O8 ?5 z0 D# D
(1)获取错误信息$ o/ a* M) n* Q! S
错误信息,获取一个错误码,并有一段可读的错误消息7 D& u4 ?. ]9 J, F2 ~
ufun 通过 UF_get_fail_message进行获取,如果需要翻译到本地语言,可以通过UF_TEXT_translate_string处理
3 V0 g8 i9 }0 w7 F3 k NXOpen 通过NXExcepion处理. M' j8 d& c/ N& r' N. r5 c2 l

& P" h7 N, I6 r( | (2)建立报告
; \  E0 p0 b5 j+ M. F7 t 需要增加信息去报告什么操作导致报错,以及如何处理
" J+ p  T" x6 b* w8 H* X, j- O% H
3 {: F: h. v; U, h& S (3)报告错误
9 S: `7 w/ B$ R0 w 报告信息ok后,就需要处理错误了,对于致命的错误,需要给用户一个选项进行退出程序,而不是使得整个程序崩溃或者part文件损坏。
3 s" L/ d4 M* F. N! O5 N( E  q, i 如果是可以接受的错误,需要将错误日志记录在NX日志log里面,或者设计一个对话框来处理错误日志。8 ^  b, {1 O! Q$ ^: g
: Y7 L0 L9 x* U; k* ^+ S
(4)错误修复) b4 c% s' _& F; ^
是一种特殊的错误处理方式,比如倒角时候,半径输入过大,这个时候通过合理的提示,用户还可以返回到原始的对话框,重新输入半径。
4 f/ Z8 f% o3 m NXOpen提供的错误修复包括:
7 B. b+ N; s/ b" `- A a.方法定义给于异常处理,让程序员来诊断错误: F7 o' g( n6 o; u5 f4 r9 v
b.当方法错误的时候,可以返回NX回话和part到一个有效的状态
* ~4 {. T- i" \( M  G: [ c.UDO进行处理,去返回曾经的状态9 o! [4 e. }1 G* L

1 [8 }) H) t% A- l

  1. : S6 s( I! G. q' R- y: `
  2. // ufun 的方法% U  {* k& }& V; P& P
  3. , ]6 K* _1 F5 w6 [6 A: C* R3 j
  4. int status = UF_MODL_create_block1( UF_NULLSIGN, _
      r$ {% Q+ x- `" Y; d; D. Z
  5. corner_pts[i], edge_lens, &features[i]);
    0 x, P7 N- w6 X
  6. //check for return value( _. v$ `) h5 h/ c
  7. if (status != 0)
    4 M9 c; U) w- J% d" E( |3 `+ a# p
  8. {' R5 O% @+ u5 b# c& [$ w3 F3 _0 w
  9. //get the human readable error message
    / R( z  f5 F0 I
  10. UF_get_fail_message(status, ugErrorText);
      S7 ~/ t  E4 b# l$ [
  11. //report error to the user
    ) w4 L1 l) b/ u. @8 X' A8 r% U4 z
  12. UF_UI_message_dialog("Dialog", UF_UI_MESSAGE_ERROR, _
    ( n; {) `5 N' }; `2 |% @
  13. &ugErrorText, 1, ..... );8 y3 H, |, k8 z* R
  14. //report error to syslog, `5 [- F7 P* I# Y9 I
  15. UF_print_syslog("Failed to create block\n", false);
    6 H% r0 ]" s: ]: e3 f
  16. return 1;5 G4 [0 S" [8 }+ s
  17. }: \% s1 o" ?" i2 `7 E4 A: V
  18. status = UF_MODL_ask_feat_body(features[i], &blocks[i]);1 c" p2 _3 }0 q2 l. g
  19. if (status != 0)
    4 Z! r% v$ W/ _, Q4 R- z
  20. {
    ) e: N9 B/ U3 O
  21. UF_print_syslog("Failed to get body from block\n", _
    2 I# k9 R! V4 R& A0 i0 w
  22. false);6 C+ A# ], A6 s9 R
  23. return;, C7 g7 `, S: u) ^( \
  24. }
    % {( f+ Y) y3 x/ K& U

  25. , C# `* r, `2 U
  26. //NXOpen 的方法,以下是java代码& W8 H4 H& c1 D
  27. 2 l# V& T0 `# d5 h
  28. try; W2 v+ F: I0 |* i6 J: o
  29. {
    : Z$ l# G* W) `  k9 O9 T1 H6 t
  30. Session theSession =(Session)SessionFactory.get("Session");. x3 v3 D: f% d+ g: Y+ W
  31. Part workPart = theSession.parts().work();) @7 v8 z1 e$ E7 k; [: H3 _
  32. nxopen.features.Feature nullFeatures_Feature = null;
    ) G) Z: Q7 C5 t! |9 y1 E4 \
  33. nxopen.features.BlockFeatureBuilder blockFeatureBuilder1;
    , D3 x9 D& D" `, q* v+ ]3 `& t
  34. blockFeatureBuilder1 = workPart.features(). _
    : R; `& `- r9 V: Z$ y# O/ V* P# C& ^
  35. createBlockFeatureBuilder(nullFeatures_Feature);
    4 c2 v! K" O3 [, \/ F
  36. }
    # a! h7 {. Q) Q7 w
  37. catch (Exception e)
    $ z1 i, O+ O% t# Y
  38. {& z3 d$ r5 d5 r0 Z$ x/ {! h
  39. //report error to syslog, Message property on _6 O, m: h0 ?; a
  40. exception object already has human9 `) Z4 e9 p) l; D$ Q! p
  41. //readable message
    9 V  _. |; J& g
  42. theSession.Logfile().WriteLine("Failed to create _2 x' J' @" y6 t* H
  43. block", + e.getMessage());8 c! c7 J, c* Z7 o% @" {. }
  44. }
复制代码

- Y: N2 v! ?9 f
. a2 Z% J# I$ y; K
2 M4 O9 g0 T# v- B( ^
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了