查看: 6376|回复: 1

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

[复制链接]

4

主题

3

回帖

40

积分

管理员

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

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

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

×
NX二次开发中,默认的开发模版,使得开发NX非常方便,实际上主要是在Visual Studio 的环境下,加入了库的路径,以及一些预处理相关的设置。
% w& W* |3 \% N+ J0 B关于ITK开发中的模版,我制作了一个,大家可以在这里下载2 H3 o% I3 F, D4 D

+ Z6 K, w9 D/ n3 h3 G此处是给一个报告ITK函数执行错误的函数,方便使用,大家可以替换上面下载的模版template.c里面的代码,直接使用这个。当每次返回的status进行错误获取的时候,直接可以ITK_CALL去捕获错误。这点和我们在ufun中使用 UF_CALL类似!
' T$ N6 d5 r7 _2 e7 E% Z
  k1 Q  ^! o5 l0 W$ q这种方法省去了大量的调用EMH_ask_errors(&n_errors, &severities, &statuses, &messages)的重复代码!!
, [! |" P9 j, }7 R0 W* O. I+ w! j% t
. z6 g& ?  a" y2 ^  W- Q
  1. #include <TCcore/aom.h>; L) k6 U) }- @7 ]+ M; N
  2. #include <sa/user.h>
    2 c* m& p. _. b9 X" q( A0 v! _) p
  3. #include <sa/person.h>
    7 t$ B% _% F( U3 p
  4. #include <tc/emh.h>
      T8 X1 L  ?: `% P
  5. #include <tc/tc.h>
    4 U" h+ t4 W! _$ N6 I8 _6 W! u, g
  6. #include <stdarg.h>
    ! r- [5 U; Q8 T' ~

  7. ! ^3 Z9 k9 j6 u: [6 E
  8. static void ECHO(char *format, ...)
    0 v0 \: ]+ n7 g7 \4 v2 A
  9. {
    1 K9 K! Z* d' H* F# _: y4 P# u
  10.     char msg[1000];" N# l7 X% p4 Z. W% I2 s2 S/ d
  11.     va_list args;7 X& C# c' v# b  Z  ~
  12.     va_start(args, format);
    $ K9 I( t$ D" d" d
  13.     vsprintf(msg, format, args);
    2 u$ i' r( O  I9 U5 C1 c# f
  14.     va_end(args);! |: v, Y" B4 R& _
  15.     printf(msg);
    2 a! I) c5 C2 o9 t2 _+ X  s  i3 I
  16.     TC_write_syslog(msg);! }2 n% Q5 ~5 G! g" d
  17. }8 \+ Z; M5 D0 M' @5 I1 Z; _, o' t

  18. ( U/ F% H1 B1 h4 A; ~5 m
  19. #define  ITK_CALL(X) (report_error( __FILE__, __LINE__, #X, X, FALSE))
    7 |' f3 c2 M+ E3 a  ]
  20. ) M  R  }" g: L3 i
  21. static int report_error(char *file, int line, char *call, int status,
    $ M7 v* d8 Q( z7 I, o
  22.     logical exit_on_error); w3 T7 z" e. q0 g) F
  23. {
    ; T; h4 x% s3 W0 E9 F' T
  24.     if (status != ITK_ok)6 Z* S" ]/ n& h0 y2 L
  25.     {3 {/ [& C2 C2 A5 ?+ J
  26.         int
    5 G1 I: K8 M. h! r- O7 I
  27.             n_errors = 0,
    $ F; c0 }0 f  n1 ?+ F
  28.             *severities = NULL,( x8 H, `" {1 E4 l
  29.             *statuses = NULL;
    & K4 ?- L6 X1 x: w
  30.         char
    " B8 E1 h5 C5 y6 R8 @
  31.             **messages;
    5 q! E1 S7 \, h  B- }7 f+ |

  32. + j( S$ P$ u( u; T
  33.         EMH_ask_errors(&n_errors, &severities, &statuses, &messages);. w) \" B9 m- V9 b
  34.         if (n_errors > 0)' j& R* n1 ?! L% m8 Z0 p
  35.         {
      z7 `0 `" f! Q- o9 O( B: L7 Z
  36.             ECHO("\n%s\n", messages[n_errors-1]);2 z* c" ^+ v$ A' f7 |. D
  37.             EMH_clear_errors();
    + M  F* R) w5 s2 G' c
  38.         }
    2 M  O* _& r# U6 f+ i
  39.         else
    9 a& {  s! D8 M$ ?& w
  40.         {
    4 Y' _% d& L3 n! h, ?" a' t2 E
  41.             char *error_message_string;7 y0 x# B& W: h& R
  42.             EMH_get_error_string (NULLTAG, status, &error_message_string);
    . e* p$ r! k" H8 h
  43.             ECHO("\n%s\n", error_message_string);& k, `3 U3 j. U4 A3 Y7 b- T
  44.         }
    8 E# Q# ]1 N. ^  J
  45. / y+ a0 |3 c0 s% {$ \* ^  g
  46.         ECHO("error %d at line %d in %s\n", status, line, file);
    4 Q3 @1 C7 V: d: m8 c9 K. m
  47.         ECHO("%s\n", call);
    + H5 ^  b- `  J. I$ v+ o$ v/ L

  48. ; ^% n9 V7 y, N  C( I0 f
  49.         if (exit_on_error); U, p' f1 o! r
  50.         {
    + v0 ?7 V& ~& h
  51.             ECHO("%s", "Exiting program!\n");
    ' a  h; |6 c0 ]4 s: l. S2 f
  52.             exit (status);
    + h& U. ]9 G$ u4 E6 [
  53.         }
      p; X2 ?9 I2 d, c% _& A
  54.     }
    9 v" r) i5 i) b  c* M8 @

  55. . w8 `+ ^  |5 H; _- x  Q
  56.     return status;/ U3 {9 ?8 N3 f( H1 c5 j
  57. }
    " R; u/ o- P  _

  58. 9 O) b  C" D" ]$ @/ Z

  59. $ W2 B; S2 ?, U- `  @" h5 ]
  60. static void do_it(void)
    6 R) w5 U; U4 c9 h7 q' s: W
  61. {
    5 T6 F" t. T- N1 D
  62.    // write your code here% g& b$ w* s9 o' t" |9 V4 v
  63.    & [1 ]2 I; Y1 G' f- s# O9 L
  64. }
    # k5 @$ ?* v. Z
  65. / V2 j2 }+ V" K$ W/ q9 w/ C- D' b. B" e
  66. int ITK_user_main(int argc, char* argv[])
    4 P  {, E/ `1 @  v! T
  67. {
    8 f+ I( f& c5 @& r
  68.      ITK_CALL(ITK_initialize_text_services(ITK_BATCH_TEXT_MODE));3 \) P; u* V# {; L5 K$ y
  69.          ITK_CALL(ITK_auto_login());
    + D$ J, |/ f1 f0 ]5 h
  70.      ITK_CALL(ITK_set_journalling(TRUE));
    ' a4 R% o8 _$ G% [9 l
  71. 0 f: z1 N  D: U) S2 t; p) `
  72.                 do_it();3 m% H9 W" j, V  d: b! u3 y+ m

  73. 6 K. _4 j9 w" i  v
  74.      ITK_CALL(ITK_exit_module(FALSE));( q( q: E" Q0 `" G7 V+ `0 d" L9 y

  75. ( d! l9 J! {% v# W5 ]' f6 |2 x5 J
  76.     return ITK_ok;% z# `' y' X2 E+ T. O3 C
  77. }
    3 M- `- C. L$ G  y
复制代码
# g+ R( Z; P, ]% f

2 P# _1 @- n! Y6 k
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

4

主题

3

回帖

40

积分

管理员

积分
40
 楼主| 发表于 2015-1-21 14:46:15 | 显示全部楼层
模版下载地址:
5 g6 j7 e# v( g
! q+ |/ z6 `* @% w" e& ^- A) whttp://www.plmhome.com/forum.php ... &extra=page%3D1
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

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

本版积分规则

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