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

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

admin 楼主

2013-11-8 13:35:27

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

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

x
关于NX 二次开发中,错误异常的处理详细介绍
2 H! x% T1 u' T5 g% v& w% j. G% n( G' g! b
错误处理
: l, w' |/ ?3 |- D. D1 NXOpen API设计和捕获阻止程序成功执行的错误,这些错误包括:0 ?# S( c0 E, ~! C  i+ T
(1)无效的参数输入
! L9 V8 A% J& w, N% g* r' f(2)企图创建无效的几何模型
0 i1 |0 e  m# c6 }3 H* V0 T(3)不可预料的调用顺序+ b5 p9 N8 d: ^+ ]
(4)得不到的系统资源,比如内存或者文件访问等, @: M3 X4 [: n
  所有输出均为最新。9 |- ^/ Y! J/ {8 G' F
LINK : fatal error LNK1168: 无法打开 C:\NXdev\Code\confirmcylinder\x64\DebUG\/confirmcylinder.dll 进行写入
; E! z6 A& F. R
4 T; t# S! c% b2 错误侦查+ ~) S0 W* n' `4 V8 ~
通常返回错误状态或者异常。0 G) e) B- ~4 W8 U/ S
对于ufun,通常返回数字,如果是非0的话,就是程序出错,对每个return都要进行判断非常重要;" }# |+ f+ ^( N5 @
对于NX Open 通过 Try/CaTCh的架构进行处理; p$ `* G  ~; f
3 错误报告) v# @! ]; L+ {, P7 g9 t
(1)获取错误信息
( B! y2 ^6 U+ ]' Y: U* |' U错误信息,获取一个错误码,并有一段可读的错误消息& ~4 G7 `  E/ j5 j# U( o" k
ufun 通过 UF_get_fail_message进行获取,如果需要翻译到本地语言,可以通过UF_TEXT_translate_string处理
0 j6 c9 t- Z* K7 f( h# K NXOpen 通过NXExcepion处理
9 Z0 |/ R  t2 @1 J& h4 j   H9 g; e5 }4 V
(2)建立报告+ y4 C& `$ O( ?3 x" D) R* {* u  t4 d9 K
需要增加信息去报告什么操作导致报错,以及如何处理0 [. b# m# n& c, h! Z5 x

0 G6 s! I3 N+ B8 w) e( v6 y (3)报告错误
" a# i! [9 x. I6 a- Y4 x 报告信息ok后,就需要处理错误了,对于致命的错误,需要给用户一个选项进行退出程序,而不是使得整个程序崩溃或者part文件损坏。
+ I  n: ~7 I6 \- [9 c) y! ^ 如果是可以接受的错误,需要将错误日志记录在NX日志log里面,或者设计一个对话框来处理错误日志。/ ?; c, j& g( {$ K6 b8 F
. s+ }* h2 `9 e/ n
(4)错误修复
, u2 E/ b: n- P! B+ m; ? 是一种特殊的错误处理方式,比如倒角时候,半径输入过大,这个时候通过合理的提示,用户还可以返回到原始的对话框,重新输入半径。+ L: `6 k3 V: S) m; g$ |. j$ ^
NXOpen提供的错误修复包括:! u7 D" j7 |  z; k# L
a.方法定义给于异常处理,让程序员来诊断错误! N, ^( {) h6 m/ Y) o
b.当方法错误的时候,可以返回NX回话和part到一个有效的状态) T6 z( z! h2 C8 e# t7 v  D
c.UDO进行处理,去返回曾经的状态" i+ x; u6 A6 ?! M7 N; b; G2 D
" @' @7 N, ]" \( _+ A* c

  1. ; F0 K, U; e( t5 q
  2. // ufun 的方法
    % |' I& t% ^0 `; x; Z  d

  3. - G, o) i: u$ v0 F
  4. int status = UF_MODL_create_block1( UF_NULLSIGN, _
    7 }' C, @, T  ?; Z5 Z3 ?6 X  P6 ]
  5. corner_pts[i], edge_lens, &features[i]);) L! {0 f, l3 f2 y' d* O) l
  6. //check for return value
    3 q" a. ]3 y" A' |& d
  7. if (status != 0)
    & i0 s2 m- j# `- ?4 r) C) v# q
  8. {0 l& B( o9 Z+ ^6 f7 \' ^
  9. //get the human readable error message: V$ [% c$ @9 Y% A' z
  10. UF_get_fail_message(status, ugErrorText);
    9 N8 t7 P5 C, \' z2 V1 I
  11. //report error to the user
    ) s, a' G: C+ b" s9 K/ r
  12. UF_UI_message_dialog("Dialog", UF_UI_MESSAGE_ERROR, _
    9 T; t3 `* g1 B: c  @" S+ d! n
  13. &ugErrorText, 1, ..... );+ Z! V5 h/ `2 Q+ m( o
  14. //report error to syslog
    4 u+ s6 }, B$ G. c) @* h1 G1 H; j
  15. UF_print_syslog("Failed to create block\n", false);4 {5 D2 t' X/ E; y" R
  16. return 1;
    + X- B6 A$ f' b$ a; ^
  17. }
    & i- t. v  N5 c" `: v( K* ~" r# D0 t
  18. status = UF_MODL_ask_feat_body(features[i], &blocks[i]);. A# Y" m* H: J3 }
  19. if (status != 0)  ]% S0 y! t$ H! z
  20. {  v. [* E& d. l- C9 X
  21. UF_print_syslog("Failed to get body from block\n", _9 C, u$ b- k& u5 ~" x9 ]4 P
  22. false);
    7 g, |6 z; M- o
  23. return;/ h. ]* H  p, L# o- [
  24. }
    , y+ ~# E9 Y0 V  e9 ~

  25. " p3 V' q; t: @" F, A9 O0 l
  26. //NXOpen 的方法,以下是java代码
    1 `% U' I( W/ a+ c! r$ P
  27. % I6 p) M( p6 e, m5 u
  28. try
    / _6 V9 h; y6 Z" l( \/ Q
  29. {
    $ Y$ A4 x2 L4 ?
  30. Session theSession =(Session)SessionFactory.get("Session");0 G; `* e& z6 C) W; _4 @0 \% B) a
  31. Part workPart = theSession.parts().work();
    - V. Q: H# Z- Y3 ]! b
  32. nxopen.features.Feature nullFeatures_Feature = null;4 }0 _' {6 w$ [, f
  33. nxopen.features.BlockFeatureBuilder blockFeatureBuilder1;% N3 u0 ?- @2 y1 v" k2 n. m
  34. blockFeatureBuilder1 = workPart.features(). _
    ) n# e( j% _) @; |; c
  35. createBlockFeatureBuilder(nullFeatures_Feature);. x4 B4 c/ x7 O5 P
  36. }
    $ [" N, j+ Q0 n' L" r( W1 o
  37. catch (Exception e)8 x" m. t8 N- \+ X! O, R- N# ]% t" V' L
  38. {
    : X& H  M* x5 e) g. Z. i
  39. //report error to syslog, Message property on _9 j/ F7 z" J5 B* F# F1 A) y6 `
  40. exception object already has human& ?& g. g* ]6 I* T
  41. //readable message1 ]* S0 e" z: x3 \* K
  42. theSession.Logfile().WriteLine("Failed to create _7 Y5 {" |8 F1 v. [! \, Y2 U
  43. block", + e.getMessage());
    9 O7 A5 x4 I# u
  44. }
复制代码

* s( p# l$ ~, R6 {  Q. }) L5 C% g% C3 [; G- W
! p7 c' z2 G% M" I8 h
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了