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

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

admin 楼主

2013-11-8 13:35:27

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

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

x
关于NX 二次开发中,错误异常的处理详细介绍
2 W* H4 b3 @1 R! \' U3 J, e' T/ O. y# D# h: q+ h6 R  O# e
错误处理- V' }8 w! ?. X5 ?
1 NXOpen API设计和捕获阻止程序成功执行的错误,这些错误包括:
% v% R  ?% B3 u; N(1)无效的参数输入
4 I$ N; Y3 f. d9 {( u(2)企图创建无效的几何模型( K4 P/ ?4 `' L  h! t) e
(3)不可预料的调用顺序
/ S; t; I1 z; S; S' t(4)得不到的系统资源,比如内存或者文件访问等
& Z+ X6 _) _7 _$ y$ B  所有输出均为最新。
: y/ z3 g/ V3 t- K$ ?LINK : fatal error LNK1168: 无法打开 C:\NXdev\Code\confirmcylinder\x64\DebUG\/confirmcylinder.dll 进行写入! w* |, S* x7 s1 `6 u% N
2 {/ e2 Y( M3 Y+ Z# ]2 a
2 错误侦查
: R3 k! G3 P& t7 Q6 |通常返回错误状态或者异常。
: X2 K" y" b; }3 u2 [: \, v对于ufun,通常返回数字,如果是非0的话,就是程序出错,对每个return都要进行判断非常重要;9 R2 g8 R: t2 m! N( Q
对于NX Open 通过 Try/CaTCh的架构进行处理) r; O+ Y, O7 t+ C' h! c2 Q0 }* ^
3 错误报告
' g) m2 w) A+ {8 B(1)获取错误信息
( [4 K6 u8 {) S+ ?# l. |8 O错误信息,获取一个错误码,并有一段可读的错误消息* T7 a$ s$ H) U: `2 u1 O  r
ufun 通过 UF_get_fail_message进行获取,如果需要翻译到本地语言,可以通过UF_TEXT_translate_string处理$ R6 y' Z; k6 i. m/ e
NXOpen 通过NXExcepion处理
) ]2 o+ {1 [( t- s. k+ n, v5 n
& T: }( e: h3 q. m+ X (2)建立报告% y: L3 W; }- }4 ]9 F# c# J1 Z0 q5 e
需要增加信息去报告什么操作导致报错,以及如何处理
  T+ R- |' n6 U, e  D8 K) Q
! \5 D9 r1 z$ r" R# y) f1 {1 K (3)报告错误
# X; r4 ?6 _2 S6 C! @( j  c8 S 报告信息ok后,就需要处理错误了,对于致命的错误,需要给用户一个选项进行退出程序,而不是使得整个程序崩溃或者part文件损坏。( ~8 l8 o& c( o, a0 o' D
如果是可以接受的错误,需要将错误日志记录在NX日志log里面,或者设计一个对话框来处理错误日志。
: p# m( a5 x# _" [ ; O; V% j' @: b8 n  E
(4)错误修复# s! `/ k$ y# u1 X" _
是一种特殊的错误处理方式,比如倒角时候,半径输入过大,这个时候通过合理的提示,用户还可以返回到原始的对话框,重新输入半径。
' \3 D6 a  y; W3 }" ^3 ^- q NXOpen提供的错误修复包括:" b( L7 E! T* e3 T) x
a.方法定义给于异常处理,让程序员来诊断错误( @: k2 L, t" p  `* c* v$ E3 D0 c
b.当方法错误的时候,可以返回NX回话和part到一个有效的状态
4 v: p. H$ Z) p& R c.UDO进行处理,去返回曾经的状态
/ }2 S$ f8 y! j  \9 ?
7 @( S, f* e/ k
  1. ) e, N. ^: o( ^; }) U
  2. // ufun 的方法! M: A9 N" B" e; s9 ]5 ^6 J

  3. 9 K/ L$ H7 l4 a* D
  4. int status = UF_MODL_create_block1( UF_NULLSIGN, _
    + r. H" ?, {# J# P5 C
  5. corner_pts[i], edge_lens, &features[i]);
    - A. V  O9 l% [; N1 D
  6. //check for return value# v; F2 i' I* O, @
  7. if (status != 0)
    . c8 l7 }/ y7 \; n. Q3 g1 t
  8. {
    3 U2 {! j/ {3 G, n) N
  9. //get the human readable error message" E0 h, q& U7 c- A3 b1 }
  10. UF_get_fail_message(status, ugErrorText);
    2 `2 ?; p/ G& ~9 n7 l
  11. //report error to the user
    ! Y+ V1 h' T" X
  12. UF_UI_message_dialog("Dialog", UF_UI_MESSAGE_ERROR, _
    , q+ b9 }! F+ c( M3 X" \0 P
  13. &ugErrorText, 1, ..... );9 h9 g7 a* V( `% _# H
  14. //report error to syslog$ R; A. w, z, L* a. J# a
  15. UF_print_syslog("Failed to create block\n", false);
    0 ~/ W; i4 X2 s! r6 d
  16. return 1;
    3 u/ }8 j0 O3 x1 ?) g+ R
  17. }
    - z7 _9 N5 l6 x1 I0 b2 @6 _
  18. status = UF_MODL_ask_feat_body(features[i], &blocks[i]);
    , d' [  ~' j- O* ~6 c) L4 f
  19. if (status != 0)" x( t8 s: W- `
  20. {4 B: A4 E* ]& r
  21. UF_print_syslog("Failed to get body from block\n", _
    5 E& a6 h/ o, @" d
  22. false);
    4 A' r' ]0 Z1 N: n- C: O; q/ ?
  23. return;
    ) D7 s5 B! f4 b3 g  T
  24. }
    : h' M  q6 [& J0 a" R- v

  25.   |; x3 M: g; N& P8 y% y
  26. //NXOpen 的方法,以下是java代码
    8 ?' \9 X; q$ l- ^0 x# F% g' y( B
  27. 3 B' @+ w$ ?2 g2 g7 p6 k# h7 r
  28. try& T  N  J6 m3 n, l
  29. {
    ; t% Z/ S1 ?8 H$ ~7 ]2 R
  30. Session theSession =(Session)SessionFactory.get("Session");! T; _: [9 C& p4 f8 ]# K. Y
  31. Part workPart = theSession.parts().work();! x6 Z( U3 D" h% l
  32. nxopen.features.Feature nullFeatures_Feature = null;
    & e  O8 P$ f/ K3 t$ {
  33. nxopen.features.BlockFeatureBuilder blockFeatureBuilder1;
    * n0 c- l8 q" k0 W
  34. blockFeatureBuilder1 = workPart.features(). _
    / d% I6 k  j* T/ U3 \- j
  35. createBlockFeatureBuilder(nullFeatures_Feature);2 }0 K3 G: q5 B/ `8 p$ P
  36. }
    # ]. ~5 T3 W- c% p" g( o
  37. catch (Exception e)$ ^. `' F& H2 @6 _  d9 L
  38. {/ [0 J& q& V2 y4 u) m
  39. //report error to syslog, Message property on _& x( g# F% w& t. l; z3 l* E+ G
  40. exception object already has human
    ; @  A4 s* }5 l8 D3 Z
  41. //readable message
    9 C. O. `5 o2 R$ k- u) @
  42. theSession.Logfile().WriteLine("Failed to create _
    7 p, v+ m5 R# `! H% x
  43. block", + e.getMessage());5 H' a' v% S8 m7 e" I& A/ g2 W: r/ c
  44. }
复制代码
2 L) ^3 v& v" B- s

; _  a( `4 a& x. E
' i8 `0 q0 ^$ `0 [6 A# U
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了