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

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

[复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

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

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

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

x
NX二次开发中,默认的开发模版,使得开发NX非常方便,实际上主要是在Visual Studio 的环境下,加入了库的路径,以及一些预处理相关的设置。# q* D: }2 E5 T0 X$ Z: c0 ^, e/ G+ _
关于ITK开发中的模版,我制作了一个,大家可以在这里下载  ~" S8 y0 n( a9 K& L& O

9 Z  P0 z! ]- ?7 N4 ~此处是给一个报告ITK函数执行错误的函数,方便使用,大家可以替换上面下载的模版template.c里面的代码,直接使用这个。当每次返回的status进行错误获取的时候,直接可以ITK_CALL去捕获错误。这点和我们在ufun中使用 UF_CALL类似!
. {2 k( x& z5 r" d$ {, A' Q! L
7 _$ q, [  U" g9 B3 x+ Y/ C这种方法省去了大量的调用EMH_ask_errors(&n_errors, &severities, &statuses, &messages)的重复代码!!2 B9 J; G7 e- j" D8 Y8 a

6 }( T4 ?5 `+ K5 E$ P. a0 w1 y% C: w. y+ o
  1. #include <TCcore/aom.h>
    % p4 G1 G+ {! s) k
  2. #include <sa/user.h>8 S3 m7 Z4 Z  @$ q& W
  3. #include <sa/person.h>- `9 t  {9 c1 B: U' l
  4. #include <tc/emh.h>
    % h/ y  B# l0 C5 b
  5. #include <tc/tc.h>- G& {" W, i) O! E) e% A4 A( o% k
  6. #include <stdarg.h>
    9 l3 L/ `$ y+ d1 ~' V

  7. " p; G3 U2 M$ \$ p, A" {
  8. static void ECHO(char *format, ...)
    4 w6 x2 p* X  ]; d
  9. {
    : U' C$ [9 r* _# \3 @  f' ~8 @
  10.     char msg[1000];
    & O. K5 l: G+ Q0 T
  11.     va_list args;5 V. M  @" \1 O# Z+ B
  12.     va_start(args, format);
    1 x# s% {, a& z
  13.     vsprintf(msg, format, args);' u+ h8 k4 h* ?2 Y4 U1 E4 o0 ]
  14.     va_end(args);
    * a1 O2 k3 m0 N8 J
  15.     printf(msg);3 x" m0 T" U7 T- ~
  16.     TC_write_syslog(msg);
    % q) k$ e9 ^+ d/ s6 N1 j
  17. }, z' t' C. W! H' r% m

  18. 9 T! Y: N/ f" X8 H& h" ^
  19. #define  ITK_CALL(X) (report_error( __FILE__, __LINE__, #X, X, FALSE)): J! u' w# k! v6 M! I! O& o

  20. # Y+ w' l/ _: H4 l2 h7 ~" ~. f
  21. static int report_error(char *file, int line, char *call, int status,
    * P7 ~; k% `; G% Y4 F: b% x9 X
  22.     logical exit_on_error); B# c: z2 `8 m" a$ q) y9 j* _1 e
  23. {
    0 u' q. P/ W2 U; ~
  24.     if (status != ITK_ok)* V5 l4 X6 d) C
  25.     {5 O1 e, F+ s3 E2 Y: x
  26.         int2 p6 K- f% O* N
  27.             n_errors = 0,- V5 g! \# {& I, }! N8 |# {& g
  28.             *severities = NULL,
    6 h6 w4 \* J) n9 [
  29.             *statuses = NULL;, `3 O5 x9 h: O2 i5 S
  30.         char/ H. [+ {2 M* i  n7 P( K
  31.             **messages;
    % `( s) v0 m! D4 R& P
  32. + K( A  h5 l7 v: X. m: c% E5 E
  33.         EMH_ask_errors(&n_errors, &severities, &statuses, &messages);/ |/ o7 E: B/ f" P8 u
  34.         if (n_errors > 0): ~) {' d* _- I- Q+ _, R
  35.         {0 a  E9 n3 K7 p/ {
  36.             ECHO("\n%s\n", messages[n_errors-1]);
    4 B6 _6 z. `# S0 y3 Y
  37.             EMH_clear_errors();
    1 s8 Y& s, ]2 z, V/ p- K# K
  38.         }4 }4 V8 x, v$ m, d( t  W( G% u
  39.         else
    ! Q/ D5 u9 ]5 A8 c, I4 h: B4 X
  40.         {2 W+ Y3 `) M* T9 n
  41.             char *error_message_string;& }+ z1 |9 \( k2 |6 j) l/ C
  42.             EMH_get_error_string (NULLTAG, status, &error_message_string);+ Z3 E1 Q( p8 `* `
  43.             ECHO("\n%s\n", error_message_string);
    ) y) P: ?& [1 R# t
  44.         }+ O6 @" ]% U% H) ]; N1 @

  45. 8 H6 L. v- \* [5 o4 _
  46.         ECHO("error %d at line %d in %s\n", status, line, file);
    5 q0 ]  Q0 J0 I, f
  47.         ECHO("%s\n", call);
    - d2 F* o( A  {4 t* r9 h6 ?
  48. , f2 W3 S# [0 V) M# a& A
  49.         if (exit_on_error)' l1 U( n( k5 Q  Q
  50.         {0 O% K$ X) ~; }8 f0 `
  51.             ECHO("%s", "Exiting program!\n");
    8 N$ A+ ]; N8 j9 f
  52.             exit (status);
    4 Y' i  j, L) F/ ^$ s& c
  53.         }
    % H2 Q9 z, w) J8 W
  54.     }
    $ f8 N% e3 y3 x) M" u$ Y( O. |
  55. 7 z. X- Y6 v2 i. m/ i( L8 x; i5 }
  56.     return status;; A7 j( u. v  Z  v) s- w
  57. }, ]* G3 i/ h% k" e# l) [# B3 `
  58. / f) k' ?+ Z0 x5 f' n

  59. $ T6 x) U5 S4 t
  60. static void do_it(void)
    . V/ i  L& g; w. M( h
  61. {+ f0 N; T, I% \5 M
  62.    // write your code here8 @0 V! A( x$ L, b3 i- ^
  63.    - b6 \6 y% @/ l- f
  64. }8 S' N7 K( a, |, h% m0 E
  65. 9 Q9 P# h4 o5 X' M/ {* Z1 e+ o
  66. int ITK_user_main(int argc, char* argv[])
    + F/ A6 {; P9 _" L" l! a- \2 [6 y& F: Y
  67. {7 g* t  a* H0 t9 I
  68.      ITK_CALL(ITK_initialize_text_services(ITK_BATCH_TEXT_MODE));
    - }) ?1 d" d5 ~" F
  69.          ITK_CALL(ITK_auto_login());
    9 F, W# @* h! v" ^2 R
  70.      ITK_CALL(ITK_set_journalling(TRUE));( b7 I2 l& D7 |5 K% o  O, R
  71. ' }5 H) P+ g4 N9 b
  72.                 do_it();
    / ]" P+ C- r3 \8 P; z
  73. ) |4 i  _  s2 ]9 t' C
  74.      ITK_CALL(ITK_exit_module(FALSE));
    . z1 `+ V0 I: O* i3 i5 M
  75. & S7 Q5 f- K, U" f# ^3 |9 L4 V
  76.     return ITK_ok;
    6 y7 g  B. r: p" ?. X% b
  77. }2 m* k& L: ~8 f. b( ?
复制代码

5 w0 `4 e( ~0 J1 ~. \3 r: E3 M6 \- a) A( X: M( R
上海点团信息科技有限公司,承接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 | 显示全部楼层
模版下载地址:( C! f& ^$ u% ^

, P: @, m, s! B1 s, G6 N. Ohttp://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二次开发专题模块培训报名开始啦

    我知道了