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

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

admin 楼主

2013-11-8 13:35:27

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

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

x
关于NX 二次开发中,错误异常的处理详细介绍
# E! B5 [" G& z+ N0 f  h7 L. p0 g( h5 ?1 l! z" H
错误处理( ?( \' m7 E% _9 F" J  R* n0 s; i+ L
1 NXOpen API设计和捕获阻止程序成功执行的错误,这些错误包括:1 d2 j6 ^0 c7 h: z5 E8 S3 w4 M
(1)无效的参数输入/ G2 {( N6 B6 Z$ q+ r7 I
(2)企图创建无效的几何模型  l6 I' g1 v* p, _+ j, K* R
(3)不可预料的调用顺序9 w* T3 A" o# n, O4 Q3 K3 r. j
(4)得不到的系统资源,比如内存或者文件访问等
/ t7 ^3 w  G- h1 y. k  所有输出均为最新。' k2 J& ]5 H6 m" j, L
LINK : fatal error LNK1168: 无法打开 C:\NXdev\Code\confirmcylinder\x64\DebUG\/confirmcylinder.dll 进行写入
+ \- M# R- ^, |0 E1 x- x" n
- c) I/ y3 I5 K2 x$ v4 o2 错误侦查
! ~5 q/ |4 [2 ~( `通常返回错误状态或者异常。  L- L, a" c, F8 q7 A
对于ufun,通常返回数字,如果是非0的话,就是程序出错,对每个return都要进行判断非常重要;/ W+ D9 Q! U3 K8 w6 r6 i
对于NX Open 通过 Try/CaTCh的架构进行处理
! {4 ~) J8 |' E9 b, x! _3 错误报告- o/ i- ~; v) B
(1)获取错误信息! R, W# u8 b; U3 \
错误信息,获取一个错误码,并有一段可读的错误消息
) m7 ^) E. B2 N5 q, _ ufun 通过 UF_get_fail_message进行获取,如果需要翻译到本地语言,可以通过UF_TEXT_translate_string处理4 G5 `5 A# r& m7 V
NXOpen 通过NXExcepion处理
0 a9 O2 J6 C$ l& k
+ P  ?; v: X  v0 v& M (2)建立报告
; Y) K  z# W+ }- O4 W( i 需要增加信息去报告什么操作导致报错,以及如何处理
3 E/ W( B$ m+ q: Z$ ]- Z 3 y+ d: O' J* Z9 n% }
(3)报告错误
' x+ @/ U. @4 H0 z5 ? 报告信息ok后,就需要处理错误了,对于致命的错误,需要给用户一个选项进行退出程序,而不是使得整个程序崩溃或者part文件损坏。2 {; I" a2 h2 P! A
如果是可以接受的错误,需要将错误日志记录在NX日志log里面,或者设计一个对话框来处理错误日志。- E$ z: L3 w3 e: J( W" C

6 ?5 n+ ~0 a. F2 S (4)错误修复) a+ O2 C% `6 {' P2 o) w
是一种特殊的错误处理方式,比如倒角时候,半径输入过大,这个时候通过合理的提示,用户还可以返回到原始的对话框,重新输入半径。$ h# Y3 Y. c& ]; W+ I' q/ U! a
NXOpen提供的错误修复包括:
/ O- i( H5 c/ ~ a.方法定义给于异常处理,让程序员来诊断错误
! o, w8 k6 F! M' L% ]; f# E b.当方法错误的时候,可以返回NX回话和part到一个有效的状态
$ c+ C9 j# k0 P4 z; F c.UDO进行处理,去返回曾经的状态
6 o" E, R1 H0 m7 y' }$ [8 g* K8 c2 I. L. Q; i' q1 F" Y; G7 F" C
  1. & Y: c# B( [" z+ m
  2. // ufun 的方法
    " W  o+ {  C, |! T1 c0 A0 |" P

  3. 9 \; A8 c9 f/ S- ]# k+ C/ a& j
  4. int status = UF_MODL_create_block1( UF_NULLSIGN, _; p: y* I+ l& k- t% K4 g' w* O. u
  5. corner_pts[i], edge_lens, &features[i]);( D, ?6 u4 P. Y8 ~0 L$ Z( }8 c
  6. //check for return value
    , A* y. ^8 i2 g5 [1 \4 G& X' y
  7. if (status != 0)8 w8 s5 z: c* d3 u4 b
  8. {
    8 y5 ]( P/ y3 g6 p
  9. //get the human readable error message/ s8 B  x% p- ]% E
  10. UF_get_fail_message(status, ugErrorText);
    7 d7 y* n: B3 U: ?
  11. //report error to the user
    8 u  u) v" w6 a% z3 q
  12. UF_UI_message_dialog("Dialog", UF_UI_MESSAGE_ERROR, _8 U4 D6 y  P% ^$ @. ]  I0 @& @  |
  13. &ugErrorText, 1, ..... );
    * ^2 X" z7 G3 j5 ?, B% Z5 U7 P
  14. //report error to syslog
    4 i  d4 W, `$ y$ O6 t1 D; p$ t
  15. UF_print_syslog("Failed to create block\n", false);
    . }7 P4 p# r0 u4 z9 V9 B
  16. return 1;
    % i* H" |& n: P
  17. }/ v/ r2 B2 Q8 z+ t- [  K6 ?
  18. status = UF_MODL_ask_feat_body(features[i], &blocks[i]);, N) ~3 d& ^$ e4 L0 U0 Z# [8 ]
  19. if (status != 0)
    ! l  b2 m  d' Q) x
  20. {
    # G% G, m5 \, m+ ]* I, {
  21. UF_print_syslog("Failed to get body from block\n", _4 }- P# w9 F) `3 l
  22. false);& \) q6 d- I7 d4 t+ ?* V% I
  23. return;
    , `; {1 b, m9 N
  24. }
    6 G: O1 q" z% O

  25. ' Q4 I; f3 b5 _9 x' N( ?
  26. //NXOpen 的方法,以下是java代码/ ?1 M, y% g; u: `* j

  27. * {# R. P& ]  G" r
  28. try& x: }( j" g. B3 F) F3 E
  29. {0 B9 H5 e, Z4 Q2 t4 f0 h) Z
  30. Session theSession =(Session)SessionFactory.get("Session");$ L8 B0 W1 {( s" m' h
  31. Part workPart = theSession.parts().work();
    ) b& d, b3 Q; |! l4 J( @
  32. nxopen.features.Feature nullFeatures_Feature = null;$ F4 S$ Z) {9 N) z' m5 @7 z
  33. nxopen.features.BlockFeatureBuilder blockFeatureBuilder1;+ I) N: i2 @, X- ~1 g5 F/ f
  34. blockFeatureBuilder1 = workPart.features(). _
    8 S: g: J7 h  N$ ]4 X
  35. createBlockFeatureBuilder(nullFeatures_Feature);
    8 [+ M2 X# Q0 R. s9 L
  36. }0 B, j. {6 o2 `
  37. catch (Exception e)
    , y8 G" ?! ?9 w0 C" F
  38. {7 B8 H& I& L2 U& u  W! D' ?
  39. //report error to syslog, Message property on _& O, k" x  I2 O/ H. V% ?
  40. exception object already has human
    $ \1 S" m5 ]$ r+ J, }: U% A$ X
  41. //readable message' T# b! b5 ]/ W; c
  42. theSession.Logfile().WriteLine("Failed to create _3 U' o; n* }# r6 L& e8 f' p8 I3 L
  43. block", + e.getMessage());' r# [; w  M" `. n% I8 j
  44. }
复制代码
+ B" m  ^7 T7 p; m7 }% {- ^
0 A% H- c2 q# {. ~

7 s- i% G0 ]/ u  r2 [- d
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了