PLM之家PLMHome-工业软件与AI结合践行者

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

  [复制链接]

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

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

admin 楼主

2013-11-8 13:35:27

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

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

x
关于NX 二次开发中,错误异常的处理详细介绍7 G/ c1 D& f7 D0 e5 ^6 a4 w
4 d0 z. G0 V1 @
错误处理
0 S1 O3 ^, w" ?/ U; t( I1 NXOpen API设计和捕获阻止程序成功执行的错误,这些错误包括:
. k0 ~: k* K' \" S8 \- s: ~) a(1)无效的参数输入
; T0 H! G" [+ E% |1 z8 @, f4 x# m(2)企图创建无效的几何模型
9 K- J9 L9 |! \! k! F8 t( v3 h5 i2 S6 `(3)不可预料的调用顺序( V5 f5 u7 q- e1 Z/ w
(4)得不到的系统资源,比如内存或者文件访问等& D* _9 u: _# W& u+ I+ {
  所有输出均为最新。
# _; s9 l* U+ ]( \( YLINK : fatal error LNK1168: 无法打开 C:\NXdev\Code\confirmcylinder\x64\DebUG\/confirmcylinder.dll 进行写入7 j8 {% L& i* c
2 Y. U1 K4 P7 j  T0 j' [2 h
2 错误侦查
5 Z5 ]' g: i- O$ \通常返回错误状态或者异常。, w3 t5 }& A# ^6 Z
对于ufun,通常返回数字,如果是非0的话,就是程序出错,对每个return都要进行判断非常重要;
- L2 s* @+ i7 X) [对于NX Open 通过 Try/CaTCh的架构进行处理
, L2 b$ a; q* h! z2 P3 错误报告
8 w  v0 y% ^7 n8 m% O, i(1)获取错误信息/ {/ m; V" ?8 S
错误信息,获取一个错误码,并有一段可读的错误消息
1 o$ p" s% |& `$ W4 A9 H ufun 通过 UF_get_fail_message进行获取,如果需要翻译到本地语言,可以通过UF_TEXT_translate_string处理) f  U4 N! b1 ~6 `
NXOpen 通过NXExcepion处理
  D6 M# s& {2 s: C0 z( i# w
7 {0 d, ]$ W; _1 p/ U' R" @5 } (2)建立报告
4 I  p# y6 N0 }- z7 W: X2 k2 ~ 需要增加信息去报告什么操作导致报错,以及如何处理* D3 G7 _1 A! K. |' Z, n- R
$ B- a; B0 ]3 O: i* j/ k6 D
(3)报告错误
8 f5 z# r( a5 F  C2 I+ a( n 报告信息ok后,就需要处理错误了,对于致命的错误,需要给用户一个选项进行退出程序,而不是使得整个程序崩溃或者part文件损坏。
3 j6 Z1 m: ]. W, ]6 d# z5 N 如果是可以接受的错误,需要将错误日志记录在NX日志log里面,或者设计一个对话框来处理错误日志。
. ^- L2 z9 g, e% {" h 3 t. u& ^+ ~& a; u- g
(4)错误修复  E) k7 N+ k: P3 m
是一种特殊的错误处理方式,比如倒角时候,半径输入过大,这个时候通过合理的提示,用户还可以返回到原始的对话框,重新输入半径。
/ w" W7 X1 m0 A7 ^! j NXOpen提供的错误修复包括:
: l- ^" I) h' {. _  R/ c9 N  q" J a.方法定义给于异常处理,让程序员来诊断错误
2 o: z4 i) {2 ]. x/ q% t  Z3 U b.当方法错误的时候,可以返回NX回话和part到一个有效的状态) ?4 N6 L. @0 r
c.UDO进行处理,去返回曾经的状态
* d' }9 J/ s' c: H' M
" o/ Y/ z# J- p2 Q2 w. F
  1. 7 N5 x. j0 x  D- Q. K
  2. // ufun 的方法$ y; z, @/ h2 a" |: f# {7 `7 }. g

  3. ; |  T1 u4 ^! o) N/ q9 D
  4. int status = UF_MODL_create_block1( UF_NULLSIGN, _1 U2 t% Q8 j) m4 D- r7 |
  5. corner_pts[i], edge_lens, &features[i]);
    * F) Y  o/ \9 O% p* g' u) k. `
  6. //check for return value
    & W& Q% z( j' b
  7. if (status != 0)
    : p! J8 }6 @- y/ h
  8. {
    $ r# I. k9 B1 \! m
  9. //get the human readable error message
    4 W- X; j7 p8 Y' W
  10. UF_get_fail_message(status, ugErrorText);8 y9 {+ {6 [; H7 ^1 `
  11. //report error to the user) l( Z! I, E3 u% h
  12. UF_UI_message_dialog("Dialog", UF_UI_MESSAGE_ERROR, _, o" I3 ^5 n3 V, L( j. P/ o. s
  13. &ugErrorText, 1, ..... );6 z# I8 [" v/ I' @+ F' |
  14. //report error to syslog  h# d3 |# g: A% Q* K( r6 x* n# ~
  15. UF_print_syslog("Failed to create block\n", false);
    ' N' C9 y' L  l/ C' F( I+ o
  16. return 1;+ S9 t* F# y) z3 n( A' `
  17. }& T: [4 {  P( s8 l' ~
  18. status = UF_MODL_ask_feat_body(features[i], &blocks[i]);" c) t% e- G, ]6 c- `+ H
  19. if (status != 0)
    ) @8 b7 [! C: Z6 b+ f* f) g
  20. {
    . ?( [$ Y# I! g3 b7 N; R! k4 p% i
  21. UF_print_syslog("Failed to get body from block\n", _% T4 C  V5 A' \; K( p
  22. false);$ ^& Q; R4 B" {9 c$ v! R* c2 \
  23. return;5 Y& ^$ Y8 u/ z
  24. }0 V+ q6 @, Q; e' h* W9 c7 T
  25. 6 f2 W1 I0 R  V
  26. //NXOpen 的方法,以下是java代码: d7 I7 d+ ?, ~% L
  27. 7 Z, l% T, P& s' j4 d4 K
  28. try
    ' u4 B. H$ B# [; u3 i1 g$ U
  29. {
    7 I# v7 ?' s0 {& z/ @9 M7 A
  30. Session theSession =(Session)SessionFactory.get("Session");# X, L! C6 X% e: n* Y
  31. Part workPart = theSession.parts().work();
    " _+ o2 `$ y( G. N7 E  v" c! N4 P
  32. nxopen.features.Feature nullFeatures_Feature = null;
    & z9 t8 q/ H! W5 v
  33. nxopen.features.BlockFeatureBuilder blockFeatureBuilder1;2 F4 z6 b% x% ?6 c; q6 Q
  34. blockFeatureBuilder1 = workPart.features(). _$ H: p8 D& T0 g  a, a" X2 V0 K/ o# d
  35. createBlockFeatureBuilder(nullFeatures_Feature);
    ' U0 g( J5 d  J% ?' k7 t6 J
  36. }
    6 K+ [& P! i" r' K
  37. catch (Exception e)
    6 ]( @/ O. Y2 H- a
  38. {1 i3 C& F' d5 P
  39. //report error to syslog, Message property on _
    5 W2 u- S8 B2 t2 {+ O4 k# H1 j0 {
  40. exception object already has human4 n0 R2 b5 |) B$ [
  41. //readable message
    4 {7 F' L  e4 C2 l8 J0 z
  42. theSession.Logfile().WriteLine("Failed to create _
    " U; H) V1 j& h2 _5 l; K
  43. block", + e.getMessage());" `4 @! A" C  _9 }
  44. }
复制代码

4 ?  L# F' Z: F4 d. [# i5 [7 |2 y) I
3 L6 b7 _+ j6 f6 ~  r
6 F$ O3 Q8 G5 M2 }2 A# ]  G
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 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二次开发专题模块培训报名开始啦

    我知道了