PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

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

[原创] 关于NX 二次开发中,错误异常的处理详细介绍

  [复制链接]

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

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

admin 楼主

2013-11-8 13:35:27

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

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

x
关于NX 二次开发中,错误异常的处理详细介绍
9 l2 k( Z* x$ d; s+ G: d. {) c- Z5 ], z
错误处理
* z6 v, R4 i5 Q$ d' Q% P' w6 a9 F1 NXOpen API设计和捕获阻止程序成功执行的错误,这些错误包括:
7 O8 s9 _0 s! h# {8 r' e6 i1 T5 O(1)无效的参数输入
! Z* U! h" R5 o: m(2)企图创建无效的几何模型' J- L$ V" [8 J7 X7 i0 a$ r6 _! C
(3)不可预料的调用顺序9 D) `: V$ b  P
(4)得不到的系统资源,比如内存或者文件访问等
) O3 v! C" r" R. Y1 M, M6 @! V* B  所有输出均为最新。
" r+ b' v2 O- R6 O+ JLINK : fatal error LNK1168: 无法打开 C:\NXdev\Code\confirmcylinder\x64\DebUG\/confirmcylinder.dll 进行写入
9 [# }1 w9 o& Z  Z' ]1 }
9 x% v2 m5 b  X& t6 T2 错误侦查8 Y% C  M% T6 k* b7 |/ E& s
通常返回错误状态或者异常。
0 a3 m/ Z3 b8 v1 f2 D5 a对于ufun,通常返回数字,如果是非0的话,就是程序出错,对每个return都要进行判断非常重要;
+ b: j1 c# z: n  F/ }  B' B3 v对于NX Open 通过 Try/CaTCh的架构进行处理
- W- j- E$ n8 u8 K+ k: W7 Y/ k3 错误报告% {0 E5 B: V7 [! E0 y
(1)获取错误信息
: s+ U  Z8 Q" w6 ^: c错误信息,获取一个错误码,并有一段可读的错误消息
( z& X6 o8 C" j* ~! U: w+ B' B ufun 通过 UF_get_fail_message进行获取,如果需要翻译到本地语言,可以通过UF_TEXT_translate_string处理
6 b! M) Q8 A+ Z- `2 w NXOpen 通过NXExcepion处理
1 \! O- g* w. J8 D! f( c . ^$ Z/ E$ M( A- C  B: O
(2)建立报告8 \+ G# `, S0 v. E2 b" _1 T5 T, D
需要增加信息去报告什么操作导致报错,以及如何处理
6 M7 ]/ l( B" B+ }/ n; _- [4 i 2 ]8 n7 d+ `" }% U! B' _. D
(3)报告错误" Z8 `& ]: l) H3 |
报告信息ok后,就需要处理错误了,对于致命的错误,需要给用户一个选项进行退出程序,而不是使得整个程序崩溃或者part文件损坏。
; J, b, P. R/ `, J1 U" ?9 m 如果是可以接受的错误,需要将错误日志记录在NX日志log里面,或者设计一个对话框来处理错误日志。( |+ j" _2 U+ P- x" |+ f  a
7 q5 z6 J$ \2 J1 A
(4)错误修复+ ?# V+ y, _% l, W
是一种特殊的错误处理方式,比如倒角时候,半径输入过大,这个时候通过合理的提示,用户还可以返回到原始的对话框,重新输入半径。
/ q; L' B3 W5 W NXOpen提供的错误修复包括:
# C" B+ o( p% W1 H5 y% l" k2 E a.方法定义给于异常处理,让程序员来诊断错误$ Z/ g( @' p, h) O
b.当方法错误的时候,可以返回NX回话和part到一个有效的状态( d; w  Z5 n/ U8 b+ O. _
c.UDO进行处理,去返回曾经的状态+ X  @6 k( E) V; ?
+ L2 c" K$ G* B0 W; H7 y; E0 [

  1. 3 X  u5 a, @0 b  h- o# f
  2. // ufun 的方法
    / H# e, V  R0 U8 |$ _" p& t( `7 |' V7 p& i% H

  3. / Y3 S7 L2 H- h1 p- r- F) e
  4. int status = UF_MODL_create_block1( UF_NULLSIGN, _
    7 j  F5 k6 l9 N# p
  5. corner_pts[i], edge_lens, &features[i]);+ _$ C4 {( X) H6 B
  6. //check for return value9 Y4 m) V8 E* u! y/ @) C7 Q
  7. if (status != 0)
    & r9 {$ n; \% [- J
  8. {: g+ Q- s( [7 \% h3 v$ {: R
  9. //get the human readable error message. r( l: P) ^: ~/ Y. j7 q# h& \
  10. UF_get_fail_message(status, ugErrorText);
    ( N& A7 m# _/ j( A6 S1 I( r
  11. //report error to the user
    7 `# n, o/ \# P
  12. UF_UI_message_dialog("Dialog", UF_UI_MESSAGE_ERROR, _( C' u. I9 y' }0 g1 s. S# n
  13. &ugErrorText, 1, ..... );
    2 q7 T6 c( S. W3 W, V+ z
  14. //report error to syslog
    5 f/ P# P: ~% i& V( o
  15. UF_print_syslog("Failed to create block\n", false);& u# w9 u* |) R. {0 Q0 i& \
  16. return 1;
    , `  K" c5 N  f( w% x. x8 g
  17. }
    ! T4 s$ M) X0 J& i
  18. status = UF_MODL_ask_feat_body(features[i], &blocks[i]);( e, J2 x2 b) `
  19. if (status != 0)+ C2 j5 W! T& d. l9 H: R9 Q
  20. {& r+ c, `8 ~# o% [& [
  21. UF_print_syslog("Failed to get body from block\n", _" b# M  o; w  t# t- m; J/ W
  22. false);, j& w( o2 S$ l3 @/ ^
  23. return;
    % h& R( ?3 q& n" E" b
  24. }. J# R' e0 d# k1 X% ~7 X: b, R* C8 z

  25. " O# s. U% T, P$ K2 u1 q
  26. //NXOpen 的方法,以下是java代码! V, a7 w' Q$ s3 b8 r

  27. " L9 w* \6 x9 G) j# F5 i* d
  28. try/ Q5 |+ |" ~+ {
  29. {( s9 a5 ~' J* C0 v' z, w; L" |
  30. Session theSession =(Session)SessionFactory.get("Session");% u7 r% u% J  J; S. M
  31. Part workPart = theSession.parts().work();
    ! h; d, W+ x2 g, g, n
  32. nxopen.features.Feature nullFeatures_Feature = null;( g* y' g6 b" S0 B" l: i
  33. nxopen.features.BlockFeatureBuilder blockFeatureBuilder1;( Q9 C' i! v8 C0 i& I
  34. blockFeatureBuilder1 = workPart.features(). _
    ; C1 g0 T# H5 ^. h5 u; \
  35. createBlockFeatureBuilder(nullFeatures_Feature);
    ! r& i! d/ ?: E; H" ~6 H- v
  36. }5 B$ y/ p3 u0 U- D" `8 {
  37. catch (Exception e)
    " @: S7 A: `, k; G2 D7 C  r; X% X
  38. {
    % I6 x% n; f6 b
  39. //report error to syslog, Message property on _+ _! h- y+ U3 h1 k( O! T
  40. exception object already has human- ^- b3 A% m4 I
  41. //readable message5 C0 q1 ~7 _' j0 }5 \
  42. theSession.Logfile().WriteLine("Failed to create _
    ' e% s! x9 f( _! Q: F( \
  43. block", + e.getMessage());8 O8 h/ d/ y. A
  44. }
复制代码
* l* x1 N9 z: n9 u  z- Q' C1 c
1 Y8 q0 x) |  @% |3 u$ ?
3 k( u# u) ~( q6 d0 \$ \
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了