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

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

admin 楼主

2013-11-8 13:35:27

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

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

x
关于NX 二次开发中,错误异常的处理详细介绍( }3 \) y6 d/ b! S6 o3 ]& g1 j
, {4 [9 v6 }8 @6 X  t/ p: j
错误处理
5 g. |- ]" z* c1 NXOpen API设计和捕获阻止程序成功执行的错误,这些错误包括:& D7 ?$ k4 }9 i# Y
(1)无效的参数输入
$ t( W5 M# e% y4 f0 V- H(2)企图创建无效的几何模型
+ H  q: g$ v7 Q6 p4 p, `+ G; E. E(3)不可预料的调用顺序: `0 ?$ q9 j1 D* t0 a
(4)得不到的系统资源,比如内存或者文件访问等
& T$ n% E" Q6 |9 V2 _  所有输出均为最新。
0 K1 s- Q9 {# O& `( c9 H" CLINK : fatal error LNK1168: 无法打开 C:\NXdev\Code\confirmcylinder\x64\DebUG\/confirmcylinder.dll 进行写入* N' r6 V+ S6 a- M, ?* J

. U5 V0 `; \" m2 v2 错误侦查
, C$ |$ T  |3 U# V3 d* q  v通常返回错误状态或者异常。
8 {3 i; d( O6 A对于ufun,通常返回数字,如果是非0的话,就是程序出错,对每个return都要进行判断非常重要;1 }' c0 e$ [! L7 Y3 v2 H- B
对于NX Open 通过 Try/CaTCh的架构进行处理2 H+ k: B0 f9 v8 ]& f1 g' }
3 错误报告/ K7 r7 \* v4 b+ n6 f9 Y6 P, R
(1)获取错误信息
, i& K6 i# I( B! z7 t2 \6 ]- I错误信息,获取一个错误码,并有一段可读的错误消息% j: I) l1 T0 `3 \! ?' o6 o
ufun 通过 UF_get_fail_message进行获取,如果需要翻译到本地语言,可以通过UF_TEXT_translate_string处理  |% P7 L4 q: L
NXOpen 通过NXExcepion处理
1 m' P4 ?* j1 N! i7 ?0 ?" ^ - B* X3 ?1 p& A0 b
(2)建立报告( ]& u7 a7 X& \7 x- A/ i) q
需要增加信息去报告什么操作导致报错,以及如何处理2 h5 K! o/ `1 p5 i

3 @8 A; N# E8 b( M5 U/ R (3)报告错误
7 s% i: Z$ D/ r7 J 报告信息ok后,就需要处理错误了,对于致命的错误,需要给用户一个选项进行退出程序,而不是使得整个程序崩溃或者part文件损坏。1 E: R1 C3 {2 P( N+ `* V
如果是可以接受的错误,需要将错误日志记录在NX日志log里面,或者设计一个对话框来处理错误日志。
' \2 {% Q7 {+ J; t5 F 1 E, |9 I% l0 I: H: w: i/ V; `# r
(4)错误修复
* p+ A( m& c5 f5 d+ f3 F1 ` 是一种特殊的错误处理方式,比如倒角时候,半径输入过大,这个时候通过合理的提示,用户还可以返回到原始的对话框,重新输入半径。4 u- s2 G9 @4 k5 g4 e! R4 B7 C8 y9 i. d
NXOpen提供的错误修复包括:
6 ]( h0 `" m: }3 `  M; i$ f% V8 r9 W a.方法定义给于异常处理,让程序员来诊断错误
0 ?* H( v( D' f& H5 L8 [. ^" F b.当方法错误的时候,可以返回NX回话和part到一个有效的状态
8 i( f4 i- |* A* W5 z  n! D c.UDO进行处理,去返回曾经的状态% [3 E, c, i- x% ]5 K( E
( R: w, j4 q; s! n4 z, I# t7 D
  1. 2 C2 z6 e) }$ x5 D' e& [4 [
  2. // ufun 的方法5 f# S2 W  ^5 ]( F
  3. 3 }! C) M  P( t8 W
  4. int status = UF_MODL_create_block1( UF_NULLSIGN, _6 I; E7 J$ m7 {6 w
  5. corner_pts[i], edge_lens, &features[i]);
      w/ k, R; o" C: v
  6. //check for return value
    ; @' C. S' r; V) m4 c
  7. if (status != 0)7 r9 _( H# c0 d
  8. {8 O. `! y" z9 G6 z3 ?  W" n
  9. //get the human readable error message9 o0 C* p- b* r$ c7 h3 K
  10. UF_get_fail_message(status, ugErrorText);! N6 Q" E0 I* ^. ]
  11. //report error to the user  P8 e" R$ z1 v9 V
  12. UF_UI_message_dialog("Dialog", UF_UI_MESSAGE_ERROR, _
    7 ~2 V* E( O- x1 T7 }
  13. &ugErrorText, 1, ..... );
    : U5 Z) {: N0 O. z  C  m1 |) f
  14. //report error to syslog$ R$ O: R. W' f* ~9 K1 K, `, ~
  15. UF_print_syslog("Failed to create block\n", false);
    # y6 h& |: H0 P, m
  16. return 1;
    : p7 J. y' P2 f; T) `2 P* U
  17. }
    2 `7 m7 K3 v: p$ r: l- g
  18. status = UF_MODL_ask_feat_body(features[i], &blocks[i]);
    ; V& K$ _* u( \2 c, t) b0 E4 [
  19. if (status != 0)
    , w, @0 x; w) b7 e0 _$ m8 T
  20. {
    " k9 G( m8 X6 U' @4 ^! p# O' t
  21. UF_print_syslog("Failed to get body from block\n", _
    6 W" ^' W5 F/ a+ Z6 b& M
  22. false);3 ?4 O$ f8 v& u# }( b0 H
  23. return;
    ) @  m, d7 j' s5 ?, l& a
  24. }
    ! C0 G- F( {! Y0 b( `" X, |
  25. 5 Z- T/ F- @& D% q0 [3 r/ |5 ]' v- n
  26. //NXOpen 的方法,以下是java代码
    - D' p0 V* o- T- G1 M
  27. % n  ~$ o; B. f' Q, Y0 K. Z6 u/ O
  28. try
    1 p4 L) G+ J7 U
  29. {
    + {" k- O; W! e' A7 r" ]4 m( @
  30. Session theSession =(Session)SessionFactory.get("Session");
    4 k+ g; G; E3 _' n/ }* x  p$ r3 a
  31. Part workPart = theSession.parts().work();, c+ X- a" p1 a7 v4 L
  32. nxopen.features.Feature nullFeatures_Feature = null;  t4 I$ T- d0 F
  33. nxopen.features.BlockFeatureBuilder blockFeatureBuilder1;& C7 v1 a3 `. a3 v3 b9 ~( k
  34. blockFeatureBuilder1 = workPart.features(). _
    : q1 R4 w: A  Y2 n, C% j; E
  35. createBlockFeatureBuilder(nullFeatures_Feature);
    . V1 E% w* i, X
  36. }! T: b3 Z0 r" {) i' h/ H- U( y
  37. catch (Exception e)/ w3 w! ~: y, c5 E( A9 @
  38. {' C+ L' ^4 L$ f3 S; S  B
  39. //report error to syslog, Message property on _
    2 Z; c5 m$ r# `3 Q
  40. exception object already has human
    0 x! h. e8 m6 F2 M, z/ G$ A0 E
  41. //readable message
    + W4 T" w5 G' P. l. G+ ]9 c; N
  42. theSession.Logfile().WriteLine("Failed to create _
    % u# }) n( g4 ^# x
  43. block", + e.getMessage());# D! G* o0 }* y+ Z  s6 }
  44. }
复制代码

* m% _# o3 x, l) V$ {9 [& p6 u. ~- ]) W" o) P
, N! V0 b" k+ t
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了