PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

PLM之家PLMHome-国产软件践行者

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

  [复制链接]

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

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

admin 楼主

2013-11-8 13:35:27

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

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

x
关于NX 二次开发中,错误异常的处理详细介绍
/ e- ]6 `, q, g( U6 ^
8 C/ s: @- k& `6 m0 C- ~错误处理0 U. \) D, Z+ ?& Z5 q
1 NXOpen API设计和捕获阻止程序成功执行的错误,这些错误包括:
2 @( }6 F2 X: p3 G(1)无效的参数输入
; G' j- Z& n) ?0 y& h& h9 D8 }(2)企图创建无效的几何模型
8 U9 K+ k3 \. j0 {0 ]  a& T$ B(3)不可预料的调用顺序" d1 `/ E- R; L# \  {/ p' m* }
(4)得不到的系统资源,比如内存或者文件访问等
6 P0 F+ a& Y6 Q  所有输出均为最新。$ Z  n  A- V# E( l$ d# {
LINK : fatal error LNK1168: 无法打开 C:\NXdev\Code\confirmcylinder\x64\DebUG\/confirmcylinder.dll 进行写入; W( {5 M: k8 r' k

7 j5 |$ u. R7 k2 M9 f+ C2 错误侦查
, D5 p* @! I2 [* c4 Z# O9 C* p通常返回错误状态或者异常。
6 t! b* e" u7 a6 s" v3 {对于ufun,通常返回数字,如果是非0的话,就是程序出错,对每个return都要进行判断非常重要;
) b: }9 L" D. s3 }0 ?$ t对于NX Open 通过 Try/CaTCh的架构进行处理6 J( a: D- r5 M8 a" X; |
3 错误报告" \4 j9 P) p0 f/ h2 i
(1)获取错误信息; J5 Q# _3 M# c+ @8 r( t  ~
错误信息,获取一个错误码,并有一段可读的错误消息
, s/ L% M1 v$ x  r+ O# X+ Q6 u% l ufun 通过 UF_get_fail_message进行获取,如果需要翻译到本地语言,可以通过UF_TEXT_translate_string处理
" X0 r! `+ Y1 k, _8 j/ a6 {. P9 P NXOpen 通过NXExcepion处理, x0 T: a! A1 D- h& t
1 }, a/ t# v, |, _* e
(2)建立报告+ W" g- |+ P8 }! |2 k, `
需要增加信息去报告什么操作导致报错,以及如何处理
! |$ l! m1 F5 h, P+ ~# X
9 P( b: N/ N) t' B) |/ C! ]( s% L (3)报告错误
5 S1 B- j7 m7 ]. e 报告信息ok后,就需要处理错误了,对于致命的错误,需要给用户一个选项进行退出程序,而不是使得整个程序崩溃或者part文件损坏。
* J  w! k. C# N& | 如果是可以接受的错误,需要将错误日志记录在NX日志log里面,或者设计一个对话框来处理错误日志。
# {) F( H% S6 V/ ]  q " f' O) y" z" E7 ?+ N! Z6 e9 I# g
(4)错误修复) }) R: _7 |9 o  P0 ?" g0 w
是一种特殊的错误处理方式,比如倒角时候,半径输入过大,这个时候通过合理的提示,用户还可以返回到原始的对话框,重新输入半径。
, }+ r; O4 N2 a% J7 k6 k+ g& W NXOpen提供的错误修复包括:; ]9 o+ y$ S. L5 r' c
a.方法定义给于异常处理,让程序员来诊断错误4 Q3 `3 X) m) V1 f5 p
b.当方法错误的时候,可以返回NX回话和part到一个有效的状态
; W  k  p& Q& f, k* [ c.UDO进行处理,去返回曾经的状态8 u( v& m1 z% P2 ?& F' l# i
0 B" e  U. d. D

  1. % L  }  i9 Z% B
  2. // ufun 的方法
    - I! O( f- c8 W( }

  3. & o! l$ Q* y: c+ Y1 a5 W% S
  4. int status = UF_MODL_create_block1( UF_NULLSIGN, _& [) c! ~: D) c5 t6 C
  5. corner_pts[i], edge_lens, &features[i]);, j' I1 x% c1 S3 f* ~
  6. //check for return value
    ( c5 ^6 [& p- |8 C' C+ y( l6 h. Q
  7. if (status != 0)
    2 U# n; ^+ o) i! r6 n' W
  8. {' L* h5 u) W2 C* M# B7 H$ i
  9. //get the human readable error message+ L, Y& G4 U; ]) t+ |/ z  D* t
  10. UF_get_fail_message(status, ugErrorText);
    # C8 A, J0 \$ d: E6 X1 |
  11. //report error to the user# U7 f5 c( H. P
  12. UF_UI_message_dialog("Dialog", UF_UI_MESSAGE_ERROR, _3 c& k) P* ]5 s2 }! s* Q5 N
  13. &ugErrorText, 1, ..... );
    ( ]% \/ H! K4 f* g, {" N$ T/ Q! k" |
  14. //report error to syslog1 \' f% Z' s% k* \5 b: q
  15. UF_print_syslog("Failed to create block\n", false);6 a( c. V( ]; H% E
  16. return 1;5 \6 ^4 [0 s/ Q1 M& }$ w
  17. }' U& N9 x  p$ @7 Q3 e) U# h
  18. status = UF_MODL_ask_feat_body(features[i], &blocks[i]);
    / B6 P+ D) |0 G4 P2 Y0 w
  19. if (status != 0)7 y9 s' q+ v6 W% X. X) v  R  y
  20. {" O" _6 L7 z2 ~& P5 S% `3 y
  21. UF_print_syslog("Failed to get body from block\n", _
    ! \  q! o7 `( J# L- D
  22. false);8 ~' g2 \0 E+ o
  23. return;/ A% h+ |; L0 K" Y% O
  24. }, m7 g; M5 U8 a! |( ?
  25. 1 w" K9 U3 C' A* i( t( b" L+ ^
  26. //NXOpen 的方法,以下是java代码
    9 E& g0 A- P4 `7 a
  27. 5 w% P2 ~# V6 h- X2 ~9 Y8 }: g$ h
  28. try# E3 D( B' z3 e! |( o/ R3 b
  29. {+ Z% F9 M4 t+ K8 D( W( o: B: S" {( z2 |
  30. Session theSession =(Session)SessionFactory.get("Session");  i& S$ x7 t  b# h/ ~/ {9 k
  31. Part workPart = theSession.parts().work();
    + a; k: G! j% f, ~5 k/ X; f4 G3 g
  32. nxopen.features.Feature nullFeatures_Feature = null;
    + H' z0 t! P2 w9 A- [/ I3 v
  33. nxopen.features.BlockFeatureBuilder blockFeatureBuilder1;
    4 w$ S" m" Q4 O2 ]
  34. blockFeatureBuilder1 = workPart.features(). _
    / t2 M# a  c( k, J6 z; t
  35. createBlockFeatureBuilder(nullFeatures_Feature);; Q1 D% J3 {( t& x
  36. }
    & n- @, b, g$ p
  37. catch (Exception e)
    * D( {2 t6 K2 |! C9 p4 q! I2 j  n  S
  38. {$ }/ V( E' G9 P* m7 f& b" f; W3 d
  39. //report error to syslog, Message property on _/ {6 f& }. J4 V
  40. exception object already has human+ _, ~% P3 ]6 V+ [8 A9 j; ?( R
  41. //readable message
    9 P4 _; }! W1 y: c9 {2 [/ c+ j
  42. theSession.Logfile().WriteLine("Failed to create _1 Q4 Z) s  L9 l; q. W& u
  43. block", + e.getMessage());
    ' T. V: `$ O$ X
  44. }
复制代码
+ y4 T  _0 `* q; w
: s- f8 M2 ?: M* V2 N
3 D. E  ?' M! L: E% d  A% ]
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了