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

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

[复制链接]

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

admin 发表于 2015-1-21 14:42:57 |阅读模式

admin 楼主

2015-1-21 14:42:57

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

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

x
NX二次开发中,默认的开发模版,使得开发NX非常方便,实际上主要是在Visual Studio 的环境下,加入了库的路径,以及一些预处理相关的设置。6 b0 F2 L8 }- z( j8 u+ }  i
关于ITK开发中的模版,我制作了一个,大家可以在这里下载
8 \; d  m' X( @
8 E3 m+ N# F  F, a0 ]& J此处是给一个报告ITK函数执行错误的函数,方便使用,大家可以替换上面下载的模版template.c里面的代码,直接使用这个。当每次返回的status进行错误获取的时候,直接可以ITK_CALL去捕获错误。这点和我们在ufun中使用 UF_CALL类似!, F' s0 ]9 Z! H
  P( S1 f; L" }$ _
这种方法省去了大量的调用EMH_ask_errors(&n_errors, &severities, &statuses, &messages)的重复代码!!
9 ?. N9 p/ l8 m1 l9 Z5 A2 M/ q& ^$ o7 v. x' n( v9 d% d/ H

" j7 E; b7 u6 E4 _, U2 ]- X9 W+ n
  1. #include <TCcore/aom.h>
    4 N* t4 a& V/ F; F( p' G
  2. #include <sa/user.h>
    . X, S) J  f1 H$ I7 l
  3. #include <sa/person.h># U. d8 @$ X4 X+ d" p/ I
  4. #include <tc/emh.h>
    : i$ t- k# N; M6 i' e
  5. #include <tc/tc.h>; D# B- b$ J* u5 E0 ]
  6. #include <stdarg.h>
    ; j# t# b; M# X' C: }3 ~0 D
  7. 0 r8 D1 W% a$ `7 z. u2 ?6 a' s: N
  8. static void ECHO(char *format, ...)( O' a. ]. [/ L/ W3 s% z1 l' I& l
  9. {
    ' z2 r/ D3 C- P# N0 a
  10.     char msg[1000];
    3 k, T0 Q3 t. `% [* F( M! T! z
  11.     va_list args;0 n; C2 v( u* u- h7 r$ Y1 O! S6 \
  12.     va_start(args, format);
    / |& s9 l" n! q
  13.     vsprintf(msg, format, args);! s5 l/ `2 V: B/ ~/ Z
  14.     va_end(args);, r0 F, S: @6 V% Y" L+ ^, C) T3 Y
  15.     printf(msg);
    ! s3 d6 a3 d* F1 y) J
  16.     TC_write_syslog(msg);
    ! Y1 k* C! b2 f' e8 ^$ L" a
  17. }
    ! R3 E* ?* t6 C3 n4 ^
  18. ; e4 R+ N  ^" o5 ^$ t* R
  19. #define  ITK_CALL(X) (report_error( __FILE__, __LINE__, #X, X, FALSE)). Z, r& H5 }3 K% A

  20. , x) G: F" V4 t: K& }
  21. static int report_error(char *file, int line, char *call, int status,
    . K6 C% {* \5 s7 f& D# \
  22.     logical exit_on_error)
    . z, d; P& {4 G2 n6 E" W+ B
  23. {' P9 M+ ~7 B) g$ r! m) D$ F& ~$ m
  24.     if (status != ITK_ok)
    5 j" s5 s- W1 d8 j7 L
  25.     {2 w4 E7 O8 S1 `  V
  26.         int: ^% H' k& X* C" i2 `8 X
  27.             n_errors = 0,
    $ _8 A% U  Y/ p! q& O) d
  28.             *severities = NULL,
    7 u  E. |( P( s; r
  29.             *statuses = NULL;
    0 X6 L7 ^1 t/ n3 E8 B  V7 s# }3 q
  30.         char
    ) T$ t2 r. q6 p1 o
  31.             **messages;
    1 I0 N% t* p2 r& L+ P

  32. & m5 E# n9 d0 x9 r/ Z
  33.         EMH_ask_errors(&n_errors, &severities, &statuses, &messages);
    ! D  D& M( e3 r) s
  34.         if (n_errors > 0)
    6 m* B2 h2 N( X/ r+ x" Z
  35.         {2 J4 o9 w; s! J, D
  36.             ECHO("\n%s\n", messages[n_errors-1]);
    % z& b# |! E9 I8 t1 y$ r
  37.             EMH_clear_errors();4 u0 X4 R2 I/ X/ ~! h9 ~
  38.         }
    & {1 m) e) {/ J- F$ g4 J- F/ r/ ^
  39.         else
    4 K: m: w2 w8 n* ~- H0 Z
  40.         {
    ) L' y" W- ]- m+ w) [+ j3 T. Q* h
  41.             char *error_message_string;' K& h. X  _% {" k5 Z2 M
  42.             EMH_get_error_string (NULLTAG, status, &error_message_string);
    ; z3 E; ^7 e0 f; ~! u/ \* W6 V
  43.             ECHO("\n%s\n", error_message_string);
    $ Y$ B8 \' ]# B  {6 r" m
  44.         }) o. w# m: P7 Z7 k4 _& H. i1 H* M3 b
  45. 8 x& Q& \  x/ m% Y8 T# W
  46.         ECHO("error %d at line %d in %s\n", status, line, file);% W5 |  N1 {, m& B  M% E4 E
  47.         ECHO("%s\n", call);
    ; y2 V1 M! ^8 x( r7 f

  48. . c: M/ d3 r) h
  49.         if (exit_on_error)
    ( J& t" x+ z# e( e
  50.         {; r& d# m6 B; U5 \" |+ o/ d
  51.             ECHO("%s", "Exiting program!\n");
    / `3 `, R9 C6 D
  52.             exit (status);
    ) D5 ?1 f4 r. R
  53.         }
    3 l: x" ~! Z. R
  54.     }
    % p4 ]1 u8 v9 @) s0 g; N# A
  55. ' h# o6 s: ]/ d0 `( f5 W( L" i
  56.     return status;
    ; g) a7 V# Z, ~0 Z! o7 B" `8 A
  57. }
    3 y1 ~% C! i7 u

  58. 5 d7 H# S' D0 o' B1 K0 ~

  59. 8 x" ~& i" t- O
  60. static void do_it(void)
    + @2 ]$ }, V9 b; Q7 ^9 z% X
  61. {( g) h8 {) B2 K, P% b% b' a7 G
  62.    // write your code here/ d5 U% k/ v  b! B% `0 C) i
  63.    : W: l$ v2 \7 u- E: i/ n- |  B- M1 z
  64. }/ T+ }4 |" m6 l2 e5 V

  65. 7 u* i; ~+ B* f1 @9 A/ c
  66. int ITK_user_main(int argc, char* argv[])5 h8 d* q# ^, H: r
  67. {, o; `# @; x9 A2 k  Y
  68.      ITK_CALL(ITK_initialize_text_services(ITK_BATCH_TEXT_MODE));8 x3 n4 j6 u0 ?  q0 H
  69.          ITK_CALL(ITK_auto_login());' O( S* d6 V1 t: o& j/ g
  70.      ITK_CALL(ITK_set_journalling(TRUE));
    9 `8 Q9 `' o0 k3 j& ^, t0 T# \

  71. / ^3 U- ~! S, x9 u
  72.                 do_it();
    % P  N$ [+ ]: f( z- J3 u
  73. & K4 h# `: ^9 T$ T$ G3 s  P
  74.      ITK_CALL(ITK_exit_module(FALSE));& \, N7 l' w: h' _- ]( `, N  T2 c. S

  75. 5 a. Q3 s. t7 K. i
  76.     return ITK_ok;  D. x8 H  Q4 b; e1 g" h3 I" H
  77. }' `' M& s* J. z
复制代码
8 Y  s+ _4 M3 D  ^6 t

+ Q) U$ F" M: i; f
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

全部回复1

admin 发表于 2015-1-21 14:46:15

admin 沙发

2015-1-21 14:46:15

模版下载地址:6 x- E# r7 p. L2 x- _$ v+ I
+ ~8 W3 S; _+ X$ C) f; e
http://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二次开发专题模块培训报名开始啦

    我知道了