PLM之家PLMHome-工业软件践行者

从NX二次开发转化层teamcenter ITK二次开发的模版分享

[复制链接]

2015-1-21 14:46:15 6311 1

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82172
QQ
发表于 2015-1-21 14:42:57 | 显示全部楼层 |阅读模式

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

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

x
NX二次开发中,默认的开发模版,使得开发NX非常方便,实际上主要是在Visual Studio 的环境下,加入了库的路径,以及一些预处理相关的设置。1 k7 ]5 ]8 d( P' D1 X
关于ITK开发中的模版,我制作了一个,大家可以在这里下载; e8 M/ a3 O0 f9 w  [

# t* C  ~" p# n# E9 f! l8 M' i, A此处是给一个报告ITK函数执行错误的函数,方便使用,大家可以替换上面下载的模版template.c里面的代码,直接使用这个。当每次返回的status进行错误获取的时候,直接可以ITK_CALL去捕获错误。这点和我们在ufun中使用 UF_CALL类似!
& J* m# M( d2 m+ _4 J* u: b
- J1 z( I& O' m$ {' ^) U" y! ~这种方法省去了大量的调用EMH_ask_errors(&n_errors, &severities, &statuses, &messages)的重复代码!!
* ]7 `. R; q/ B" Y1 i. C# ]2 @$ b+ _( ^7 R" C/ R5 z
/ H& o7 x9 y: c1 Z
  1. #include <TCcore/aom.h>
    , o6 |! z. s# n
  2. #include <sa/user.h>4 Z1 e% i) ^! W0 |) o! s" y) D
  3. #include <sa/person.h>
    & N  L' {2 Z7 l1 j
  4. #include <tc/emh.h>8 D% Q3 v) S9 j$ A$ _! y
  5. #include <tc/tc.h>0 B4 ]$ t3 `' {
  6. #include <stdarg.h>
    0 W2 _$ O& b3 i" l% f4 }
  7.   n2 X5 e, \7 C$ D. n
  8. static void ECHO(char *format, ...)
    & r# r. N+ u! Y/ p  y. m6 u7 p
  9. {
    8 |0 o) d" g3 P/ }% |
  10.     char msg[1000];
    ; o, K2 y8 j: T9 A3 @3 g' S2 T$ t
  11.     va_list args;7 p( w' C, ^* v5 `9 h
  12.     va_start(args, format);
    : r/ u. ?* ~2 E
  13.     vsprintf(msg, format, args);0 t, L! {9 r, v; a- ?
  14.     va_end(args);; j9 ?$ S& ^& D, n
  15.     printf(msg);7 E( W/ }3 B" U& [/ j. _1 o8 \2 q
  16.     TC_write_syslog(msg);
    ) }# [- h$ m. g9 n' m( \
  17. }) R3 S4 ^! K$ c
  18. 9 w9 r! w) v" |% O, Q" }& F
  19. #define  ITK_CALL(X) (report_error( __FILE__, __LINE__, #X, X, FALSE))
    , b) p, u7 A3 C
  20. 6 d8 M* g! r9 q
  21. static int report_error(char *file, int line, char *call, int status,
    3 A( h' V+ ~. k( D* S0 p% T
  22.     logical exit_on_error)5 Y! `( l( p, n+ o! N
  23. {7 ~- J/ O; N  N/ J  _
  24.     if (status != ITK_ok)# k' l* Y8 o- X; O- q: y( z1 J
  25.     {
    9 i6 ?4 u$ {4 V1 L
  26.         int. p4 P  E; Z0 Q5 h- W, W+ i. A* }
  27.             n_errors = 0,/ Z" w4 R3 y8 J
  28.             *severities = NULL,
    0 T, E4 U# f# [  d. k) t
  29.             *statuses = NULL;
    7 k0 f# s3 L3 k6 Z! |
  30.         char
    ' r0 ~4 P& _& H; c9 v% B
  31.             **messages;
    8 r; T" l# k0 Q' G( S; [
  32. $ R, q# c2 n9 y; w  a
  33.         EMH_ask_errors(&n_errors, &severities, &statuses, &messages);! I3 Y/ T& ?/ @5 ~: d8 p
  34.         if (n_errors > 0)
    ; }$ g! p0 Z" G; \' h: s- f
  35.         {
    6 w4 D% S$ f1 e* H8 d* c' }
  36.             ECHO("\n%s\n", messages[n_errors-1]);& t) K; E$ M, F
  37.             EMH_clear_errors();
    : ^* g: ~. }4 b
  38.         }
    - [# J5 @5 J1 J% w
  39.         else, h1 Z4 j, o, e
  40.         {( ]6 {* u' s/ Q& G/ a
  41.             char *error_message_string;% ~0 t+ U4 [+ y* x8 P, `/ x
  42.             EMH_get_error_string (NULLTAG, status, &error_message_string);
    % r# v& _9 ~2 O# T/ c
  43.             ECHO("\n%s\n", error_message_string);$ H7 ~; }( `* J7 Y. e
  44.         }
    3 {7 n" g8 p% \- U6 _

  45. 2 Z* `# f% R( s! m. c# q
  46.         ECHO("error %d at line %d in %s\n", status, line, file);8 G5 R! e' h& M- w9 P
  47.         ECHO("%s\n", call);6 p. K# R" R+ x2 W% [% h: |

  48. / k; [0 z) Z1 P
  49.         if (exit_on_error)
    9 K9 B' {. f* a5 @2 K
  50.         {& R+ |8 X' A' j9 A! g
  51.             ECHO("%s", "Exiting program!\n");
    0 U8 ?# P8 z: N# ^* W
  52.             exit (status);
    & k9 Z+ P( {# e% D6 j7 ?
  53.         }
    + F, r2 ]' Z/ t% v3 f  f
  54.     }  ]- H& \+ ?3 l
  55. , S, r; G4 [' T& ^8 ?! E
  56.     return status;. v: g1 B8 M+ {: i  B, w
  57. }" s7 z/ w, T5 w! c
  58. 5 @3 L/ I- F* U; ~$ T3 G

  59. ) J& h9 h5 q7 E, Z
  60. static void do_it(void)- D0 G% d3 F- @# X5 R, Y
  61. {3 T$ j( v- A( D: y& P5 l& G6 z
  62.    // write your code here2 o+ q8 H2 @* @% z9 i
  63.    
    4 i9 R: A/ Z  s1 C7 L$ `
  64. }
    : }# P9 s% u4 H3 G! g6 r
  65. ! \/ x* y: m# q. u. |, e. t0 a
  66. int ITK_user_main(int argc, char* argv[]), z, C' k# n1 p8 @
  67. {: w+ v; C+ s5 D  \) _( Z
  68.      ITK_CALL(ITK_initialize_text_services(ITK_BATCH_TEXT_MODE));5 }/ w& w' I) B/ `- g) b
  69.          ITK_CALL(ITK_auto_login());( ?" Q9 ?) I- r, M- }% l, V0 q$ t1 y
  70.      ITK_CALL(ITK_set_journalling(TRUE));
    " ~6 K- [% f2 S1 m/ _

  71. 6 G  z2 }4 @: D4 _1 H& j
  72.                 do_it();+ g- j" P+ Y9 s& g8 f, r: `6 ^

  73. # f; g" s# Y3 I. ~" A( G
  74.      ITK_CALL(ITK_exit_module(FALSE));- G0 l# a6 i/ a( y$ _9 p& `
  75. 2 c* [. u% b" F: X4 ]9 ~" q' K
  76.     return ITK_ok;
    : H4 b5 T% p8 E, s, f, M; D( L
  77. }
    9 U9 E% T. h5 L' D0 ?
复制代码
3 c& m0 k9 j7 l6 o$ v/ Z

& g6 g1 Z' \1 ?8 G1 S
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

全部回复1

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82172
QQ
 楼主| 发表于 2015-1-21 14:46:15 | 显示全部楼层
模版下载地址:, U) C. f5 K: t  s3 L" I8 ?# W

& K/ t& ^1 l+ P& o; C0 shttp://www.plmhome.com/forum.php ... &extra=page%3D1
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了