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

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

admin 楼主

2013-11-8 13:35:27

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

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

x
关于NX 二次开发中,错误异常的处理详细介绍6 b5 v! q2 \2 F: e5 A* z

+ z& ]0 t2 n8 H9 }% b错误处理8 v% u( j2 z. W+ o5 e' B5 W. A
1 NXOpen API设计和捕获阻止程序成功执行的错误,这些错误包括:
6 F1 l0 `. C- a% ~$ k! E(1)无效的参数输入/ A" h$ s+ N6 m0 C+ Z0 s
(2)企图创建无效的几何模型3 l+ e1 d, Q2 {3 J$ Y% f& \
(3)不可预料的调用顺序
: {) @/ C8 ~# b; z(4)得不到的系统资源,比如内存或者文件访问等0 r* m/ y2 ]7 I( J  _& r6 b
  所有输出均为最新。
; W, f$ \2 F& |% D$ OLINK : fatal error LNK1168: 无法打开 C:\NXdev\Code\confirmcylinder\x64\DebUG\/confirmcylinder.dll 进行写入
# b. @8 [6 u. z3 _# H/ c- k* M0 o8 d* ]9 r# ]2 ]
2 错误侦查
. v5 v  w& x5 u6 ]  G通常返回错误状态或者异常。! ~$ D$ d% D& [% V$ ~
对于ufun,通常返回数字,如果是非0的话,就是程序出错,对每个return都要进行判断非常重要;* o, c+ O, f% t7 y+ B! d9 a' u' a
对于NX Open 通过 Try/CaTCh的架构进行处理
5 ]8 j2 L* u* ~3 错误报告
2 a! u0 [9 z! b% v* \5 P& w5 z+ B7 x(1)获取错误信息
, @: o5 b# P  i$ K/ G% T, x( s" k+ m( o错误信息,获取一个错误码,并有一段可读的错误消息
; h5 w& x8 A# j$ o/ ?* P ufun 通过 UF_get_fail_message进行获取,如果需要翻译到本地语言,可以通过UF_TEXT_translate_string处理
# t- e3 L1 a2 x. p- S7 I NXOpen 通过NXExcepion处理
# |. i" d2 _# _ - U  _9 j4 s- n  Z+ _! G
(2)建立报告
! d0 r% r9 V2 k+ `1 ], J9 w  s3 {: E 需要增加信息去报告什么操作导致报错,以及如何处理
( y( V) p, d; V& `+ `7 B; A9 t . a. k+ N$ |9 C5 p' ]
(3)报告错误
* W; x6 F0 B4 i/ v7 F5 F$ j" ~- O 报告信息ok后,就需要处理错误了,对于致命的错误,需要给用户一个选项进行退出程序,而不是使得整个程序崩溃或者part文件损坏。* i; B6 D- z( [% k
如果是可以接受的错误,需要将错误日志记录在NX日志log里面,或者设计一个对话框来处理错误日志。
/ {8 j0 y) t3 M ! r6 P% j7 A) s# Z/ y2 a
(4)错误修复; U7 O3 p! n  B; U2 [' F/ L4 t0 V
是一种特殊的错误处理方式,比如倒角时候,半径输入过大,这个时候通过合理的提示,用户还可以返回到原始的对话框,重新输入半径。! g1 |% R6 e0 q# a
NXOpen提供的错误修复包括:# b% ]$ d0 q' ]/ @* V* P  t
a.方法定义给于异常处理,让程序员来诊断错误. y0 m. _' X) f  h/ G' U8 `
b.当方法错误的时候,可以返回NX回话和part到一个有效的状态  V6 u6 ~* ~3 g+ r; ]3 E
c.UDO进行处理,去返回曾经的状态6 Q# a5 j/ y& R. F  S

& k' P! G9 m/ |
  1. * V0 c7 l9 n, j1 E3 J
  2. // ufun 的方法& }8 P; U* l( z% X

  3. % F7 E( l1 z. a  b
  4. int status = UF_MODL_create_block1( UF_NULLSIGN, _
    $ b' d" O( ~' p  O
  5. corner_pts[i], edge_lens, &features[i]);
    2 }3 X% K* {/ a" m  {$ s7 C
  6. //check for return value; i% j9 f, r9 V6 }3 u
  7. if (status != 0)
    2 T  z3 H# u; k2 I% _0 I+ X
  8. {
    % P8 c* f/ ?9 B. u5 {2 `7 M. T* m
  9. //get the human readable error message$ A  y' t2 O1 j( P+ |7 q
  10. UF_get_fail_message(status, ugErrorText);8 F+ h; Q& Q, ^: l2 S
  11. //report error to the user
    % q) r% Y+ M: b  t% R
  12. UF_UI_message_dialog("Dialog", UF_UI_MESSAGE_ERROR, _
    $ j! E& l6 v. C. Z7 K5 E! [
  13. &ugErrorText, 1, ..... );$ C( H& f( d" K; _9 {
  14. //report error to syslog
    6 _( }; q/ h0 G
  15. UF_print_syslog("Failed to create block\n", false);
    7 l- c. Z1 O8 C
  16. return 1;
      Z) Y0 v% z; S6 {5 S0 a7 J% u8 u
  17. }3 s+ u) O+ I6 }0 B3 w: Y9 M" o
  18. status = UF_MODL_ask_feat_body(features[i], &blocks[i]);4 E: R+ A9 t1 v- a' y6 j+ E
  19. if (status != 0)4 a, z8 \8 B; ]6 J
  20. {
    5 `* D  d8 K. a4 \' n$ v
  21. UF_print_syslog("Failed to get body from block\n", _
    - h% Y: ~2 A$ c3 u
  22. false);# w9 e0 [' \( y! K4 h* T
  23. return;0 K- T, r) |4 Y- g0 F
  24. }  K2 w( o0 ^& f+ W7 x6 ^+ @1 ~

  25. 2 A* U0 @4 ?5 r% [
  26. //NXOpen 的方法,以下是java代码9 ]- F  M4 e# F6 p4 B- _: J* N

  27. , k; R) X+ _) w2 o# b& y
  28. try
    5 _1 q* ?6 U$ P( u! O
  29. {
    . d. j  D, {4 s! Y* X/ c
  30. Session theSession =(Session)SessionFactory.get("Session");
    . t* o7 a4 W9 G0 z/ K5 \
  31. Part workPart = theSession.parts().work();
    + \1 h; `/ q/ [9 c* e1 f% o  G
  32. nxopen.features.Feature nullFeatures_Feature = null;: g& N( X; m# m
  33. nxopen.features.BlockFeatureBuilder blockFeatureBuilder1;7 J- Z$ C& H! `( ~+ i; ?
  34. blockFeatureBuilder1 = workPart.features(). _$ F' r8 o) Q# R5 Q
  35. createBlockFeatureBuilder(nullFeatures_Feature);% W/ J( x6 R7 i9 w% C2 ]4 C
  36. }
    ! h+ g) f7 b) Y; X* l, @
  37. catch (Exception e)
    . l9 [) e0 i; |8 j. K
  38. {
    & @! U1 K; C3 J3 V. P7 }0 s' P1 p5 ~
  39. //report error to syslog, Message property on _
    # f" z* ]7 G3 H: C8 t
  40. exception object already has human
    8 k: k7 w, f, ~1 V
  41. //readable message
    % i/ ^& m& E  f& Q5 c2 x
  42. theSession.Logfile().WriteLine("Failed to create _
    . `) r! |# N7 c' E: ?" A6 w- v! J
  43. block", + e.getMessage());' E5 |) S; B9 }) S+ E3 ], d
  44. }
复制代码
* k/ o6 k) r' S2 o/ g0 s$ t' Z
7 g3 @1 M. Z7 U5 z' l; j; H

+ y/ V( x8 Y9 S+ D5 ]+ A0 R
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了