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

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

admin 楼主

2013-11-8 13:35:27

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

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

x
关于NX 二次开发中,错误异常的处理详细介绍9 K) u5 s. C( [% R" o5 S

# n7 F" e4 [/ J8 C错误处理
1 ]" D. H* c' y) b* R1 NXOpen API设计和捕获阻止程序成功执行的错误,这些错误包括:# V" X- ~) t/ M/ |$ c6 R
(1)无效的参数输入7 U: H" s4 o& |- w7 U: W
(2)企图创建无效的几何模型
3 S: J, W) E8 ^. n(3)不可预料的调用顺序
) s, F; H6 B( {$ g: q$ P(4)得不到的系统资源,比如内存或者文件访问等1 O; X: ~6 \2 \
  所有输出均为最新。
, C1 f: @  X4 N! a/ sLINK : fatal error LNK1168: 无法打开 C:\NXdev\Code\confirmcylinder\x64\DebUG\/confirmcylinder.dll 进行写入
9 M# ^% z9 k& K0 O0 G5 s3 D# p7 h% X: l, R8 t( V
2 错误侦查* E9 Q  `# Z- q, ~8 n/ x1 A/ N
通常返回错误状态或者异常。) s  r& k! r. N! S' j
对于ufun,通常返回数字,如果是非0的话,就是程序出错,对每个return都要进行判断非常重要;
$ ~  |) F9 v0 `5 ^8 j( |, a" \$ y对于NX Open 通过 Try/CaTCh的架构进行处理; E  h/ j& j, A( {( Z5 K5 Y8 n
3 错误报告
5 s4 J0 @# B" n6 s# L& j(1)获取错误信息
- V. p) S/ e% c4 e  K错误信息,获取一个错误码,并有一段可读的错误消息% Y& k- u6 f5 i9 ~7 s$ k
ufun 通过 UF_get_fail_message进行获取,如果需要翻译到本地语言,可以通过UF_TEXT_translate_string处理5 a; F) Y3 d  f! u; G
NXOpen 通过NXExcepion处理; N$ m. w4 ~2 I, {- z

* K$ n% i# a- ~  g2 O (2)建立报告
- b9 z! N; i" B: e/ X 需要增加信息去报告什么操作导致报错,以及如何处理
$ y8 `7 ?& n$ I0 J. u0 n
5 `" u& M$ |$ a/ b3 Y (3)报告错误
. ^% M2 T' {; ?* ]6 p* Y- n$ C+ ` 报告信息ok后,就需要处理错误了,对于致命的错误,需要给用户一个选项进行退出程序,而不是使得整个程序崩溃或者part文件损坏。
# v4 ^7 J2 T6 H5 v7 Q7 c 如果是可以接受的错误,需要将错误日志记录在NX日志log里面,或者设计一个对话框来处理错误日志。% d4 J* d  z$ h
3 a7 u/ O: e) C9 D
(4)错误修复6 s6 e# |2 s/ [& A$ g8 B: }) G
是一种特殊的错误处理方式,比如倒角时候,半径输入过大,这个时候通过合理的提示,用户还可以返回到原始的对话框,重新输入半径。2 t: M. r4 F' t) I' S3 ~
NXOpen提供的错误修复包括:
$ D9 B: l+ P. L$ a a.方法定义给于异常处理,让程序员来诊断错误
2 j! A0 l# i: G b.当方法错误的时候,可以返回NX回话和part到一个有效的状态4 }6 Z4 v5 b6 v) y
c.UDO进行处理,去返回曾经的状态
4 `, s" n* H; z/ U, Q' a8 p7 x" p1 J2 N* ]" ]
  1.   D2 ]5 P7 }0 C  p5 k) q
  2. // ufun 的方法
    5 X# {1 x( p9 @% E

  3. * S  Y6 c" ?: p  h' K3 B" G
  4. int status = UF_MODL_create_block1( UF_NULLSIGN, _% e% m* Y0 S& o6 t/ a1 e. ~
  5. corner_pts[i], edge_lens, &features[i]);
    2 T2 H; z0 d" H
  6. //check for return value2 e( k3 y6 g- }7 [# ~/ ^3 z! C7 g
  7. if (status != 0)
    & Z. @: y) O# C% A3 L2 R# N" d
  8. {
    " i: O( e, K& b2 x+ M% k- D
  9. //get the human readable error message
    $ c0 f7 P6 Q9 _. L0 c4 t
  10. UF_get_fail_message(status, ugErrorText);  F6 m1 A4 j* I7 H) i
  11. //report error to the user
    % i- p% m, R" V. Z3 X) Y
  12. UF_UI_message_dialog("Dialog", UF_UI_MESSAGE_ERROR, _, _1 T* {* N: k+ ~+ c; G% @: Q
  13. &ugErrorText, 1, ..... );$ ]9 B5 G, U% ]6 I/ X
  14. //report error to syslog2 h0 k9 ?- Y+ C" ~$ l) B+ `, ?9 U( ]
  15. UF_print_syslog("Failed to create block\n", false);' q* x6 q- E: `6 e
  16. return 1;  _% p# a( w3 I! a  z
  17. }0 |3 R" t0 K0 U! R2 b+ h
  18. status = UF_MODL_ask_feat_body(features[i], &blocks[i]);
    & A7 S, H6 n8 a
  19. if (status != 0)& J+ e* I  V! _4 e- K; {! `
  20. {
    ' G7 I. Y' t/ J8 t. J/ G8 A. o
  21. UF_print_syslog("Failed to get body from block\n", _- P* N; U( O- R
  22. false);% I; S$ s' j/ V5 v8 q* N
  23. return;
      }0 }$ X! D. _! v% F5 }( }
  24. }& G3 s, {0 I# T5 D/ Y

  25. 7 @, v2 a2 a, g4 l+ k$ }! _1 I+ d
  26. //NXOpen 的方法,以下是java代码
    - @( P$ R; R9 S- T7 p: y; X5 J: Q  f. h
  27. ' B6 c8 Z& c+ m/ m- X* C
  28. try
    2 x1 x4 T8 |8 d- H
  29. {
    0 i' Z7 s6 g* w/ t7 V/ c2 v0 B
  30. Session theSession =(Session)SessionFactory.get("Session");  ]: O6 Q9 M! n) O/ \4 i
  31. Part workPart = theSession.parts().work();2 S6 T1 f1 k4 L- N/ w
  32. nxopen.features.Feature nullFeatures_Feature = null;
    " S/ B- G* X- E% T+ u
  33. nxopen.features.BlockFeatureBuilder blockFeatureBuilder1;
    ) x4 x3 z4 ?( Z- Y9 ^
  34. blockFeatureBuilder1 = workPart.features(). _
    - H1 N* ?: b2 y/ h# Y
  35. createBlockFeatureBuilder(nullFeatures_Feature);& U3 H7 H) b4 I& e, K2 U0 |
  36. }
    : y  g+ K0 C- y7 Y
  37. catch (Exception e)
    % W0 U- p& W& ^4 N
  38. {; C; C( B" @  I# k
  39. //report error to syslog, Message property on _4 {2 G6 Q' V+ L& J8 b
  40. exception object already has human
    % W2 `( Q; O- t# U1 O4 ]5 a
  41. //readable message' v, U# M( c$ x( ^7 A4 {( D4 y" X
  42. theSession.Logfile().WriteLine("Failed to create _7 g) i+ s! ^9 a2 A8 J7 \
  43. block", + e.getMessage());
    9 j4 d& J* N$ i4 S  x" {
  44. }
复制代码
9 g/ P/ E+ l6 K& p2 {2 f3 B4 f
8 B5 Z; K0 M2 N" L: ^

- w# B) }) U8 s
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了