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

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

admin 楼主

2013-11-8 13:35:27

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

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

x
关于NX 二次开发中,错误异常的处理详细介绍! O( k/ ?4 }4 g

2 a! R8 A: x. N  u) g4 P$ u错误处理
) [  b4 o/ I  B+ M4 ~1 NXOpen API设计和捕获阻止程序成功执行的错误,这些错误包括:) `5 g. C' _8 M% m
(1)无效的参数输入1 O. |$ C, @2 C* ]- i
(2)企图创建无效的几何模型1 R. E( ]' b9 |( o- n! S. z  M
(3)不可预料的调用顺序
9 o9 `) \5 I& p/ h- k(4)得不到的系统资源,比如内存或者文件访问等3 \1 m' t/ A: j+ I% l  B
  所有输出均为最新。
, ~2 ?4 @8 p) I9 ELINK : fatal error LNK1168: 无法打开 C:\NXdev\Code\confirmcylinder\x64\DebUG\/confirmcylinder.dll 进行写入
% k4 t$ z1 k- z8 E, y6 s
) Y/ G7 i) v# U$ X5 A3 I- F2 错误侦查
$ |9 x0 x. `" K2 N! J. G0 O通常返回错误状态或者异常。+ ~" B0 B: W; o
对于ufun,通常返回数字,如果是非0的话,就是程序出错,对每个return都要进行判断非常重要;
2 @* r3 E! |! B$ i对于NX Open 通过 Try/CaTCh的架构进行处理
* i" ^$ B3 k( X$ S. d! Z3 错误报告- R9 v" Z, v$ U( u- j
(1)获取错误信息
7 e, X) P, {4 I3 M$ G错误信息,获取一个错误码,并有一段可读的错误消息
( a" C4 ]1 B1 Q: J ufun 通过 UF_get_fail_message进行获取,如果需要翻译到本地语言,可以通过UF_TEXT_translate_string处理& T4 {" Z7 {4 A: ?3 D$ }
NXOpen 通过NXExcepion处理
0 U3 Q% j$ C- t* O* V
( }+ l1 g* Q% B# C (2)建立报告) {- |# P5 {4 p% ~3 T$ C
需要增加信息去报告什么操作导致报错,以及如何处理7 W, T! F/ I! d

: v, J. R' x. y (3)报告错误
9 X( D0 A" t+ ~: } 报告信息ok后,就需要处理错误了,对于致命的错误,需要给用户一个选项进行退出程序,而不是使得整个程序崩溃或者part文件损坏。7 Y" P6 e) \1 D/ Z) K
如果是可以接受的错误,需要将错误日志记录在NX日志log里面,或者设计一个对话框来处理错误日志。
, e3 y7 S7 m. S  ?
7 R2 x" V# s+ f: a8 I  C3 F (4)错误修复6 \6 i" x  U; _  J, I  ]0 b
是一种特殊的错误处理方式,比如倒角时候,半径输入过大,这个时候通过合理的提示,用户还可以返回到原始的对话框,重新输入半径。' ?; z( L% I1 G
NXOpen提供的错误修复包括:
! B8 _1 @, p" w# X$ A3 L8 ~  S9 ` a.方法定义给于异常处理,让程序员来诊断错误# x* V5 P' O# b# l" A) L
b.当方法错误的时候,可以返回NX回话和part到一个有效的状态0 c- }% R3 [5 L5 z
c.UDO进行处理,去返回曾经的状态
, q( O% b4 ^% h
  E  g& k3 y4 \4 l- f% T6 Y) i
  1. 2 G/ v# B# ^; `
  2. // ufun 的方法/ R/ l$ K7 M1 L2 z+ Z$ J

  3. , z; p. h: Q0 |% \
  4. int status = UF_MODL_create_block1( UF_NULLSIGN, _3 L' C5 @, y5 }7 t3 R$ R9 M
  5. corner_pts[i], edge_lens, &features[i]);
    4 Q/ X; \4 F$ _- s" X1 P* J8 ?
  6. //check for return value- S1 K0 e' h2 G4 U) V( r* b" q
  7. if (status != 0)
    : x6 l  F7 V/ r
  8. {
    3 _) v8 a0 P) A5 m. G. l% D# M
  9. //get the human readable error message
    / a, t/ i& y3 U8 i6 c& N
  10. UF_get_fail_message(status, ugErrorText);% ?$ \6 ]; K: R1 A" [
  11. //report error to the user
    . _, O7 E8 G  z- S
  12. UF_UI_message_dialog("Dialog", UF_UI_MESSAGE_ERROR, _% ?9 R- P: l% @' ^- U1 ^
  13. &ugErrorText, 1, ..... );
    2 Z6 m8 P9 {1 z7 F6 q. U
  14. //report error to syslog7 u5 d, A- E" n  n
  15. UF_print_syslog("Failed to create block\n", false);
    6 z) S  N$ C1 L, E5 b8 D. {' K
  16. return 1;& q6 s: d/ w" _8 p7 ?! a
  17. }' b' K1 J& ]4 ], x0 ~$ q
  18. status = UF_MODL_ask_feat_body(features[i], &blocks[i]);$ ]/ R3 q1 v" _2 @" Y3 s
  19. if (status != 0)
    $ r; V+ C6 g- [! _
  20. {
    2 h. N/ z4 x. D% i1 ^- T
  21. UF_print_syslog("Failed to get body from block\n", _  y5 }- \2 q  T6 ?: Y& e  y; K
  22. false);
    % ]# k& h6 r/ U* `. ?
  23. return;8 j( A; U4 x, [& |+ z
  24. }# D2 j8 G: @; k/ v. @4 V1 x
  25. 5 U  Q8 a% l  y9 @* t9 I
  26. //NXOpen 的方法,以下是java代码# Y6 p% s4 L8 d0 g4 k4 B
  27. - }- k7 o! c. o9 x9 m( a
  28. try
    + s& w: K; J9 I8 Z1 O9 t
  29. {" `/ G0 j( m% U
  30. Session theSession =(Session)SessionFactory.get("Session");% S& P- E2 o; A- j4 d/ f% h# u
  31. Part workPart = theSession.parts().work();1 |4 F5 @: S' l; {. ?6 d- [: I. X
  32. nxopen.features.Feature nullFeatures_Feature = null;
    7 L* a* c$ d# l7 ]! F/ o! }7 h
  33. nxopen.features.BlockFeatureBuilder blockFeatureBuilder1;4 U$ G  G; c- p" w) p! l$ B
  34. blockFeatureBuilder1 = workPart.features(). _
    : m$ ~! F- j! {2 v, Z- w9 }9 l; k
  35. createBlockFeatureBuilder(nullFeatures_Feature);- w; L5 [0 k5 `1 z8 J3 Q
  36. }
    7 x3 @( h" d' ^; h
  37. catch (Exception e)
    7 x# X5 E6 k  w9 n
  38. {
    $ t$ Y% h1 ^' r4 n) x1 b' _
  39. //report error to syslog, Message property on _* f# f( C* \! i# e# J: j
  40. exception object already has human
    . D9 r8 n" O7 l; [
  41. //readable message
    4 J: \; e9 m% s) P; S
  42. theSession.Logfile().WriteLine("Failed to create _! p* `- y# t, b- N
  43. block", + e.getMessage());
    9 I. G; [$ E- e' x
  44. }
复制代码

1 R; ?/ P' T1 e$ ~9 o% I6 s$ Y
+ b4 H. R. h& N, v

" G! f, I% C$ [8 h: s  x
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了