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

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

admin 楼主

2013-11-8 13:35:27

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

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

x
关于NX 二次开发中,错误异常的处理详细介绍
- ^7 M" x3 Q) l& M
( a$ I7 G: m7 d2 ]7 c错误处理" P1 A; |* C% t) s
1 NXOpen API设计和捕获阻止程序成功执行的错误,这些错误包括:. w6 i- Q1 d( q9 q- ~
(1)无效的参数输入. d3 p- x4 R  G, q& T' Q& M* k
(2)企图创建无效的几何模型  r! O) C6 `$ L3 s6 p! I: p
(3)不可预料的调用顺序
1 D6 h5 A4 P/ H* r5 {* P% [/ v(4)得不到的系统资源,比如内存或者文件访问等
* c1 I, Q. |3 d) D+ {6 i  所有输出均为最新。
$ y4 B! w! t( R: E0 U2 ~! p/ {8 yLINK : fatal error LNK1168: 无法打开 C:\NXdev\Code\confirmcylinder\x64\DebUG\/confirmcylinder.dll 进行写入
9 R2 a# M2 |5 ?7 D0 X/ u% f2 C- L# w  ]
2 错误侦查
; K3 B2 M5 e! E+ Q, W. D# F通常返回错误状态或者异常。. t- `; _$ B! z2 s% J; X
对于ufun,通常返回数字,如果是非0的话,就是程序出错,对每个return都要进行判断非常重要;
) {: \  `0 W' y对于NX Open 通过 Try/CaTCh的架构进行处理
, j( z. V. K+ X: H/ c/ L; u3 错误报告2 g/ f2 d, X/ }! M( Z3 u5 l
(1)获取错误信息! e) I7 R) q& ]  b1 F4 |2 b
错误信息,获取一个错误码,并有一段可读的错误消息
  A2 @2 m1 h1 H: [: F1 I: l ufun 通过 UF_get_fail_message进行获取,如果需要翻译到本地语言,可以通过UF_TEXT_translate_string处理+ o0 {8 O# q" E
NXOpen 通过NXExcepion处理# u$ b; M) q. B' k+ w" e+ j% P  z" U

9 H/ e" \: y' G2 U4 @' J3 X# K (2)建立报告
3 o0 R. i. u: ~8 P* F9 N! I 需要增加信息去报告什么操作导致报错,以及如何处理
+ T& m* k# X! @# ^ * W* G9 K1 b$ b. x) Z1 }& t
(3)报告错误2 N8 b/ O8 p5 Y/ o6 E
报告信息ok后,就需要处理错误了,对于致命的错误,需要给用户一个选项进行退出程序,而不是使得整个程序崩溃或者part文件损坏。, _' f: p3 B: {8 J3 K
如果是可以接受的错误,需要将错误日志记录在NX日志log里面,或者设计一个对话框来处理错误日志。
5 m1 {" w. K: E" b
/ C4 V7 u) |& p) b& A2 C (4)错误修复
+ _% X- `+ h# A  S( l8 x7 j 是一种特殊的错误处理方式,比如倒角时候,半径输入过大,这个时候通过合理的提示,用户还可以返回到原始的对话框,重新输入半径。
* U4 r# r$ b5 [5 S  b NXOpen提供的错误修复包括:& H, b) \7 E0 Y2 M
a.方法定义给于异常处理,让程序员来诊断错误- E9 Q' R4 Y5 t# `/ e
b.当方法错误的时候,可以返回NX回话和part到一个有效的状态
/ N% |1 {  x) k: Z" R c.UDO进行处理,去返回曾经的状态6 ]2 @" B# ^, @0 l) h0 _, ~
, o  J( b9 {2 |, f' l

  1. 5 t. L3 i1 h4 C! D  N0 Q- {* G% R
  2. // ufun 的方法
    ; B" |0 l) M! J, `# ?- ~
  3. . h0 |8 ~) @; V! \5 e# Q
  4. int status = UF_MODL_create_block1( UF_NULLSIGN, _
    ! T) v6 T0 {% x0 \
  5. corner_pts[i], edge_lens, &features[i]);
    . k# C* }% {8 c% L
  6. //check for return value9 T7 |( J$ ?- v& _3 [2 h
  7. if (status != 0)
    0 t& i- f; Z, V5 j  ?
  8. {
    8 v- q1 h1 R: _" b, ]* e4 A
  9. //get the human readable error message: `1 ~4 j5 d/ V% C
  10. UF_get_fail_message(status, ugErrorText);; }0 P$ P6 m7 {* f4 Q
  11. //report error to the user! u" u2 g( v! q8 O$ O8 C1 e
  12. UF_UI_message_dialog("Dialog", UF_UI_MESSAGE_ERROR, _
      d5 x6 `$ a& f0 `2 ?! ?' s
  13. &ugErrorText, 1, ..... );' |9 d/ \0 T- A6 _( z- d5 C
  14. //report error to syslog
    / k$ ~9 F1 [2 }$ G
  15. UF_print_syslog("Failed to create block\n", false);2 `/ [" I- M, O/ S: z; @1 K
  16. return 1;
    5 L( D$ l: D  L# F1 h
  17. }4 J) {# ?5 |; W* x: E
  18. status = UF_MODL_ask_feat_body(features[i], &blocks[i]);; S7 }* Z: {% d- M. w/ Z8 Y
  19. if (status != 0)
    ! q6 ]6 @6 d% n+ S
  20. {
    ! ~& v3 l! f, {6 F- f
  21. UF_print_syslog("Failed to get body from block\n", _& e' z3 \0 [8 L* n$ l1 i
  22. false);4 S, E5 [' }: ~9 U/ M  ^, X! O
  23. return;  j& q: I4 }5 L: Z
  24. }1 O( c- O; L3 p) u

  25. ! M8 K9 M- K5 E! _0 D' ]* ?+ K3 p
  26. //NXOpen 的方法,以下是java代码  B' w1 i) }' V' c" R+ G; t1 S
  27. * t1 W& k9 J9 i, P2 H  [0 N  n" a
  28. try& G$ L! f. s: _: z& z" M8 T
  29. {
    8 Q8 {; Q4 Q, R/ D. _: a0 ]
  30. Session theSession =(Session)SessionFactory.get("Session");
    5 K. P( o" S. M0 H* D
  31. Part workPart = theSession.parts().work();& ?, r* m0 W2 j
  32. nxopen.features.Feature nullFeatures_Feature = null;% A. h0 @5 v( P, s4 N2 \
  33. nxopen.features.BlockFeatureBuilder blockFeatureBuilder1;
    , x2 E" B; p- N
  34. blockFeatureBuilder1 = workPart.features(). _6 W/ Z: ]8 X. H, G( W5 _  P  I) j2 U
  35. createBlockFeatureBuilder(nullFeatures_Feature);
    4 v3 \1 N$ c- j' l( m* t
  36. }
    4 S% L$ ]. n* C" ~; }
  37. catch (Exception e). X9 v- _/ A) i# ?6 g, [
  38. {3 y, M/ Z3 i: v" c$ J% ?! V/ p
  39. //report error to syslog, Message property on _
    ' N) K' ^& e/ x1 i: n; D
  40. exception object already has human
    " v7 t8 c+ m5 L4 z) r* B0 B7 a# C
  41. //readable message
    7 W# h! _) H3 u3 b1 ?" K
  42. theSession.Logfile().WriteLine("Failed to create _
    % o0 r- g! \! Q9 U( G
  43. block", + e.getMessage());1 ~# ~7 Q% j1 v( {6 y  T: u
  44. }
复制代码

# U, \) ^5 v4 c6 x7 `! ?& L' x' h/ i. W7 D) w# l: z. J. L/ Y! t* T
5 I5 F, B  Y' u, w
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了