查看: 6556|回复: 1

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

[复制链接]

2477

主题

1280

回帖

8万

积分

管理员

PLM之家站长

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

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

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

×
在NX二次开发中,默认的开发模版,使得开发NX非常方便,实际上主要是在Visual Studio 的环境下,加入了库的路径,以及一些预处理相关的设置。
! L" n* g* r6 F, Q! S1 N# w关于ITK开发中的模版,我制作了一个,大家可以在这里下载:
- x- l9 z' k1 W4 m) U9 K
3 c3 d6 P! [7 _, \  W0 U: U此处是给一个报告ITK函数执行错误的函数,方便使用,大家可以替换上面下载的模版template.c里面的代码,直接使用这个。当每次返回的status进行错误获取的时候,直接可以ITK_CALL去捕获错误。这点和我们在ufun中使用 UF_CALL类似!
8 ?4 Y5 M% e* ~( U) Q0 a0 T
- e1 G  Y' f/ S这种方法省去了大量的调用EMH_ask_errors(&n_errors, &severities, &statuses, &messages)的重复代码!!, v! X$ |- n2 V& V
' J: {! Q7 }* c, L

: }3 Z4 `$ L- P9 e1 {! X
  1. #include <TCcore/aom.h>& a* y2 n: s" `
  2. #include <sa/user.h>
    ; g6 J8 C/ j3 d3 B9 _5 K+ k
  3. #include <sa/person.h>
    ) ]5 P% ~0 [' L) A0 f
  4. #include <tc/emh.h>
    ; p: d8 Q8 z' k# \# m- h
  5. #include <tc/tc.h>
    3 O- |( E# t# y+ E
  6. #include <stdarg.h>
    1 ~& n& A% }7 Q) B2 ]& X
  7. " @6 y" [% B/ z* [& N
  8. static void ECHO(char *format, ...)
    0 ]. ]- v2 u5 }
  9. {; y" f2 `2 \. ?5 E6 B0 c8 G
  10.     char msg[1000];
    3 b( J% ^# g. ?) O6 B
  11.     va_list args;
    ; P4 K; X3 j2 |$ X) Q# V, S
  12.     va_start(args, format);
    8 Y9 D- ^1 `3 ]* T1 {) p
  13.     vsprintf(msg, format, args);: \+ O3 s# P# S; m1 v3 I
  14.     va_end(args);# G8 V8 a& A/ X0 J; A3 O
  15.     printf(msg);' N6 o$ {# `1 m3 ?
  16.     TC_write_syslog(msg);
    5 T; c1 @" O8 `' i
  17. }
    ! C( u4 X3 R1 R! k

  18.   a; z( T3 y; t. {; D8 ~6 x
  19. #define  ITK_CALL(X) (report_error( __FILE__, __LINE__, #X, X, FALSE))
    % m0 T8 ^  z: \  A/ E5 H

  20. , v, l' {( W# Q: \. G# F1 X' L1 Q# n
  21. static int report_error(char *file, int line, char *call, int status,
      b0 S6 a5 T+ j9 q9 g# ]
  22.     logical exit_on_error)
    6 q3 ?5 ~" a8 [! R" i2 f! f0 u! E
  23. {$ ]: w* K3 O' D# N: L7 A1 b/ r3 m9 u
  24.     if (status != ITK_ok)6 b- l! p6 ~# ~- B- ~% A' g
  25.     {
    & U- d9 W9 K1 j- K, \1 G
  26.         int; O! o2 Z  }' f0 B
  27.             n_errors = 0,: b) C# f" y3 j8 ^
  28.             *severities = NULL,
    * K* q0 `$ a+ F
  29.             *statuses = NULL;
    % u: Q  J4 U! M* p0 Z8 a
  30.         char* L" e* U) V) X/ U
  31.             **messages;: M  o( E, f7 C% _# o

  32. ) a% \8 M2 q6 Z
  33.         EMH_ask_errors(&n_errors, &severities, &statuses, &messages);1 f5 N3 E* W$ m. C% g
  34.         if (n_errors > 0)
    9 L" P9 B5 M, y, [) Z+ t
  35.         {
    3 B1 F) c/ ^$ W4 G; W8 n( N5 [
  36.             ECHO("\n%s\n", messages[n_errors-1]);
    ! a, c8 X( J& `9 j( j" F
  37.             EMH_clear_errors();
    ; j7 x* [- R. ^* G1 O
  38.         }
    ' H7 ^# D  o8 @& y! j
  39.         else
    4 l& S0 m2 g8 r: R5 Z
  40.         {
    - Y# v$ ^, \' `& I8 R' Y* d0 ]
  41.             char *error_message_string;
    / o) H  r; Q( w2 y. c" X$ U$ ~$ y
  42.             EMH_get_error_string (NULLTAG, status, &error_message_string);$ K5 {  ]( {6 U7 f% g
  43.             ECHO("\n%s\n", error_message_string);6 I& k* ^% z- _9 ^$ D% R
  44.         }
    % l8 k4 V% ~' k1 d

  45. - e5 g7 C, u( a$ P6 Z
  46.         ECHO("error %d at line %d in %s\n", status, line, file);. T( V+ n3 Y$ g/ P' E
  47.         ECHO("%s\n", call);  c% V+ X! C' w" Q$ g# t2 O

  48. & P$ }) f, _% J
  49.         if (exit_on_error)$ i) M# r+ n3 S; a% j, d
  50.         {
    ) C& }* _7 B1 f
  51.             ECHO("%s", "Exiting program!\n");. C& e5 S) M: i. S, _7 L: P
  52.             exit (status);
    6 U* n6 n0 u. Q9 |4 _  G- a
  53.         }
    1 @0 a/ V- x7 N4 S3 ~$ v
  54.     }
    # W% ^" ?  B3 E  a% Z1 h
  55. # G) q0 H8 d) l4 B! B
  56.     return status;
    $ J5 t* K0 `& S- ~
  57. }
    ) G, u0 c; r5 v3 I4 G/ Y3 Z) r: p7 `' K

  58. % k0 J) X+ a- i: d! O/ V

  59. # {' }+ t5 H6 _  j! Y( Z7 A2 @
  60. static void do_it(void)
    0 e% H, Z( g/ ^- Q
  61. {
    1 t, x+ L: w$ o% |( ~
  62.    // write your code here( K( c7 [9 K" R, V( b% G) G$ T1 q
  63.    
    4 D( p) a) h! C" C) @
  64. }
    ; {: X& r! g, D1 R  _5 o

  65. " v4 S. V- P) p$ k% J- Q2 ~
  66. int ITK_user_main(int argc, char* argv[])
    ; {- G/ k8 K- _
  67. {# W8 _( E! H0 ^1 U$ E! n$ `; u
  68.      ITK_CALL(ITK_initialize_text_services(ITK_BATCH_TEXT_MODE));
    1 u- R# m% M) b0 F% T$ {2 y
  69.          ITK_CALL(ITK_auto_login());
    * T& c4 z( H2 i+ u
  70.      ITK_CALL(ITK_set_journalling(TRUE));  o. q1 }4 ]0 ]2 p) y

  71. 5 v* b/ H* x. X1 P3 Z
  72.                 do_it();
    , i: ?8 \/ I4 r+ V, Y4 G0 i4 G
  73. % z2 Q! A& O6 F; y: S9 W8 d( h( ?' X
  74.      ITK_CALL(ITK_exit_module(FALSE));
    # ?9 q9 t3 x1 K# a, e
  75. 6 K+ t/ b! @" W# N
  76.     return ITK_ok;
    % p' V" H/ L4 u$ I5 |$ v8 g& v
  77. }
    ( V- @) m& n3 P9 [. j" y
复制代码

- g1 B2 S1 P5 J& i& g: L& R7 R) v0 {) E
  d5 v" J0 B1 N1 u5 V' J
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

2477

主题

1280

回帖

8万

积分

管理员

PLM之家站长

积分
82265
QQ
 楼主| 发表于 2015-1-21 14:46:15 | 显示全部楼层
模版下载地址:( @7 k5 I7 h, v9 q8 `
  r1 @: {  j/ B( x8 Y$ ~6 G( B
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
回复 支持 反对

使用道具 举报

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

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部