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

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

admin 楼主

2013-11-8 13:35:27

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

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

x
关于NX 二次开发中,错误异常的处理详细介绍' B6 z; F* Z) [8 ^

7 G5 J  z. A: ~7 [错误处理
  `! j4 h: {/ o6 q7 r2 Q1 NXOpen API设计和捕获阻止程序成功执行的错误,这些错误包括:
# B& ]# ^" e! K- d0 x(1)无效的参数输入- r2 Q: V  z: o4 U
(2)企图创建无效的几何模型+ O: Y  _' t) u
(3)不可预料的调用顺序
, B& r+ h  a+ J0 m3 A(4)得不到的系统资源,比如内存或者文件访问等% T. P; V0 P5 l4 `3 o7 p
  所有输出均为最新。
, r# t/ X2 Q2 X5 O( d6 z+ ?LINK : fatal error LNK1168: 无法打开 C:\NXdev\Code\confirmcylinder\x64\DebUG\/confirmcylinder.dll 进行写入
% J  X! l! }$ _! ~: y! L9 G2 G6 i( M4 `9 Q! v
2 错误侦查4 G* r# {) c0 N- c5 Y1 }; s
通常返回错误状态或者异常。2 T, K9 n4 o* w" C6 h; n& j
对于ufun,通常返回数字,如果是非0的话,就是程序出错,对每个return都要进行判断非常重要;. s$ e# M8 b& M4 T% d
对于NX Open 通过 Try/CaTCh的架构进行处理# G! z$ u/ x6 p& u4 P. O9 p: y
3 错误报告2 b3 M9 r9 y* o; Y
(1)获取错误信息9 I% N% m) |1 T9 ^  p- @% D% F
错误信息,获取一个错误码,并有一段可读的错误消息0 C/ r3 g, ~) |: `" p
ufun 通过 UF_get_fail_message进行获取,如果需要翻译到本地语言,可以通过UF_TEXT_translate_string处理* S- E8 N& ~* K
NXOpen 通过NXExcepion处理
9 O! h, ?9 v; g. p* b7 X4 x- \8 j# Y : ~9 o* G# }) |  @% D
(2)建立报告
' C( I9 w" t1 t9 r9 R 需要增加信息去报告什么操作导致报错,以及如何处理
. @  H5 v8 c1 ^7 q! Q* y0 D
  C% L# b+ n. Z5 u& I( B (3)报告错误! g7 Z2 a* m% m& ^1 L
报告信息ok后,就需要处理错误了,对于致命的错误,需要给用户一个选项进行退出程序,而不是使得整个程序崩溃或者part文件损坏。9 q7 a5 @! b; t% ~9 x7 A& @* s7 ?8 P
如果是可以接受的错误,需要将错误日志记录在NX日志log里面,或者设计一个对话框来处理错误日志。# s8 M4 J. W3 x% F2 f7 e6 W
7 W7 a6 |" H( k
(4)错误修复
( @2 F6 V, A/ l4 H) s( v 是一种特殊的错误处理方式,比如倒角时候,半径输入过大,这个时候通过合理的提示,用户还可以返回到原始的对话框,重新输入半径。
( F& I0 `# {, W' O# k( z* R: r- Z NXOpen提供的错误修复包括:5 T: c# f2 s% w) M. @$ B- V9 }
a.方法定义给于异常处理,让程序员来诊断错误
3 `; Q1 e3 w1 a1 `. c2 x+ H7 L b.当方法错误的时候,可以返回NX回话和part到一个有效的状态
( U1 w' v* {- k  h# |# r2 W c.UDO进行处理,去返回曾经的状态
6 o0 ~; y* h: J" E& j* V7 J: L- V5 `( e* U
  1.   _# g% ~' ]9 ^; }7 p% A6 R" n) A
  2. // ufun 的方法( g1 X6 V7 |! l5 i- i' T" B* J' F
  3. 3 W- x/ z5 q3 t; {' Z
  4. int status = UF_MODL_create_block1( UF_NULLSIGN, _/ o6 A4 P! F+ ]2 L9 M8 }
  5. corner_pts[i], edge_lens, &features[i]);
    % h! c* O, \5 B- H- H: A
  6. //check for return value; N) o; q, E" k7 ]
  7. if (status != 0)1 B+ l2 q+ E5 ^# A1 B. s; k8 }
  8. {
    6 {% V, T; @6 V" P2 S* R2 S
  9. //get the human readable error message
    % o3 v* g. q1 a% K. S
  10. UF_get_fail_message(status, ugErrorText);
    / R, G+ ?' |% {- s( i3 {
  11. //report error to the user# G8 b. w( N1 }4 {! w* e; F
  12. UF_UI_message_dialog("Dialog", UF_UI_MESSAGE_ERROR, _
    3 y. D. y0 |5 Y( ~; z7 ~1 I! Y
  13. &ugErrorText, 1, ..... );
    / d: K* ^6 |! _" z- P
  14. //report error to syslog4 H& D& x% ?7 K: Q! W3 C' X- C6 D* q
  15. UF_print_syslog("Failed to create block\n", false);
    ' u4 `  x) h9 J' S; l5 M; ^
  16. return 1;
    ' Y" I* K. G$ S% M" T: |9 M
  17. }
    ' {. T. o7 r# |" ?
  18. status = UF_MODL_ask_feat_body(features[i], &blocks[i]);7 v% W# P. E4 A, v" H1 v" x- O
  19. if (status != 0)
    ( H6 K9 i- e) Z& o- Z  v5 ~
  20. {, O' X& u2 s6 x' K  Y6 B2 D
  21. UF_print_syslog("Failed to get body from block\n", _
    3 ?4 F+ D) t/ y: Y
  22. false);% z, A- p  ^$ x6 h# {
  23. return;$ ?1 c  M) H; V& X# p$ P/ E
  24. }) b9 G+ I. m& H# f
  25. 1 c  L8 T) A* A: L* e+ k" l- t
  26. //NXOpen 的方法,以下是java代码
    % M6 Y- y( L% N7 B* M, m
  27. ' A6 R9 G1 M2 Y1 |" \% J' c0 C
  28. try
    " u$ s. [' \) |) u+ H
  29. {% A2 S! P  z% I% J
  30. Session theSession =(Session)SessionFactory.get("Session");
    1 H+ V2 S7 \4 i5 Y8 r
  31. Part workPart = theSession.parts().work();0 L' i  w1 U/ V4 P  B! r2 R, h
  32. nxopen.features.Feature nullFeatures_Feature = null;# i5 I( Q2 Y; J4 u& L, W) R; f
  33. nxopen.features.BlockFeatureBuilder blockFeatureBuilder1;
    , a! o! [+ p! G  q) I$ [% m: X+ G" O
  34. blockFeatureBuilder1 = workPart.features(). _  v' k* L# M- M: w4 n, }1 \
  35. createBlockFeatureBuilder(nullFeatures_Feature);! t0 E8 b' G1 L2 D& L% |
  36. }% E* c9 f! v4 v6 a5 g& u
  37. catch (Exception e)
    7 L, l$ V0 @" q/ K/ K' J9 h
  38. {
    % n4 t0 r5 c3 ?# ~  j. S, l7 ~1 E
  39. //report error to syslog, Message property on _3 t. |0 }; H5 t( \3 [
  40. exception object already has human
    ( g0 j0 w2 c$ ^$ G% z3 @) y) Q" C. P
  41. //readable message
    5 {0 l4 X, L6 i. {" y7 x, C# Q
  42. theSession.Logfile().WriteLine("Failed to create _
    - v% Z% J3 c- B' t1 p% p
  43. block", + e.getMessage());
    ) {% l9 K, E; e0 K6 d9 a" f4 A2 O5 y' q
  44. }
复制代码
$ P7 H7 M7 ~) G' V, d
5 t# D. I8 }# X  d) K5 V
8 N" }- R5 D3 a
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了