查看: 6446|回复: 1

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

[复制链接]

6

主题

4

回帖

60

积分

管理员

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

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

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

×
在NX二次开发中,默认的开发模版,使得开发NX非常方便,实际上主要是在Visual Studio 的环境下,加入了库的路径,以及一些预处理相关的设置。
& h" U, ~+ w/ c0 _* |关于ITK开发中的模版,我制作了一个,大家可以在这里下载:
; E- F9 Q0 n* j$ F* h* `( N% P0 w, d' H( l5 }) O
此处是给一个报告ITK函数执行错误的函数,方便使用,大家可以替换上面下载的模版template.c里面的代码,直接使用这个。当每次返回的status进行错误获取的时候,直接可以ITK_CALL去捕获错误。这点和我们在ufun中使用 UF_CALL类似!
6 z: {% o+ y5 ?/ W$ N  s+ b3 R
% C* d2 T, }# u# V& I. e这种方法省去了大量的调用EMH_ask_errors(&n_errors, &severities, &statuses, &messages)的重复代码!!
' f3 a8 ~/ H/ G& M% G' N9 ~5 b" L( v7 ^

) Q4 F, v4 n$ ?
  1. #include <TCcore/aom.h>; u2 t. g" j- J( [* a7 h$ M
  2. #include <sa/user.h>
    : U! Z: N. k7 p: T/ m  y# D9 s
  3. #include <sa/person.h>
    : O9 j, w/ b( `' I. \
  4. #include <tc/emh.h>
    * Y2 z9 q6 t8 g3 M! K
  5. #include <tc/tc.h>/ l& o2 D+ W6 f" J, V& y
  6. #include <stdarg.h>& Y3 R' x5 a/ w$ s( y+ A

  7. 7 h0 Z, d! M7 k- F# B! x
  8. static void ECHO(char *format, ...)
    ; O, r3 O. }' Q3 @8 o
  9. {3 i. m7 w9 q$ o7 H3 d6 o. w
  10.     char msg[1000];
    ! Y; B/ J# h0 h
  11.     va_list args;
    ) b/ W; |  Q( m) y' Z7 K! @
  12.     va_start(args, format);' w2 j  W% j9 c
  13.     vsprintf(msg, format, args);
    - Y6 }2 i4 @$ {
  14.     va_end(args);( o1 N, u* I  D9 A; k5 c3 D
  15.     printf(msg);
    & ^6 U; h4 `+ ]
  16.     TC_write_syslog(msg);7 I  O/ D# g: q/ N
  17. }4 o0 y3 U& |6 y( Q1 w2 I! B  N' ~
  18. / [. L5 Y7 ^  Z5 ~
  19. #define  ITK_CALL(X) (report_error( __FILE__, __LINE__, #X, X, FALSE))9 T+ O. _# |* M  x6 ]* B

  20. 2 `3 m& x5 C- X4 r4 L
  21. static int report_error(char *file, int line, char *call, int status,8 E" J# ?9 b" e2 n4 X, Y
  22.     logical exit_on_error)
    ; {9 K9 l7 q5 w
  23. {
    0 D- H. ~& ?) G9 w7 ~5 [( [
  24.     if (status != ITK_ok)
    3 ^# X. S% I5 b5 C3 g
  25.     {# l. j" j' V4 o; g3 d/ R
  26.         int
    1 O+ a& |8 B* B& ?8 |' u# J
  27.             n_errors = 0,
    6 e3 z% z, }/ F& e) w& q  W
  28.             *severities = NULL,
    : N4 n7 u& @. e# h( A1 b: T& J
  29.             *statuses = NULL;) A# Z) o9 ]8 s( m: o% X
  30.         char' m# O, Z) l3 o! i; ?$ p- F8 Q
  31.             **messages;
    - S; W2 Q2 s' O, f9 P% P& G
  32. " b9 o. c* d8 C! a  a6 l# d5 o$ @3 C* s
  33.         EMH_ask_errors(&n_errors, &severities, &statuses, &messages);* e$ B" J  Q" t" [. u# Q  z
  34.         if (n_errors > 0)8 Q& V3 r. ^) N9 }* _0 n% C' b
  35.         {) l4 W$ `1 a4 _. z
  36.             ECHO("\n%s\n", messages[n_errors-1]);
    1 J7 d- b1 s, m" ]  b: q/ _$ H
  37.             EMH_clear_errors();# u2 I) J) ?6 s0 P9 A
  38.         }
    ) h/ ?3 C( _2 E8 {/ F
  39.         else
    1 s/ h/ J  F& M$ _' @
  40.         {
    7 X) Y  X$ o7 z" V
  41.             char *error_message_string;
    ( T, R! F4 S4 G( T& y1 y* g
  42.             EMH_get_error_string (NULLTAG, status, &error_message_string);
    9 B. s9 y4 M2 Y- y
  43.             ECHO("\n%s\n", error_message_string);
    7 L& a5 P9 Y8 r
  44.         }% X( L1 i5 n7 {9 `) n7 {

  45. , S' v; K* d! ]% f# ]
  46.         ECHO("error %d at line %d in %s\n", status, line, file);
    7 C( A" d& z2 ?' L6 K( d' L
  47.         ECHO("%s\n", call);
    ; \9 J; Z" N$ l3 K4 d
  48. 6 g% v- @# m2 Z
  49.         if (exit_on_error)9 g% L- E* j9 V
  50.         {
    8 a, G: C5 h& q
  51.             ECHO("%s", "Exiting program!\n");
    ( O- [' M. j5 d/ F, w+ L. b
  52.             exit (status);, g; ?3 P3 P" ^, O
  53.         }2 z# a- N1 o3 V/ d  _2 }! X
  54.     }
    3 l" V" O2 X9 t- X( G" D) M- G" K
  55. + L# S+ i. O0 d; H( K& D9 M
  56.     return status;1 z5 f4 T4 [0 ~, z
  57. }* a! Z- o7 y2 ?% F
  58. . s! ^  R' H! _' A3 v- R! r5 K3 V
  59. , W# g1 S9 o+ ?
  60. static void do_it(void)
    2 k0 I& X' i! ~7 C) H$ j
  61. {
    / G( k7 \; E+ ^0 V; x9 N* H
  62.    // write your code here' c9 G8 ~* ^/ c1 L$ H  Y: o$ ~) U
  63.    
    : E4 {; U; ^# ^, u' T  V
  64. }7 j+ C2 F' ]0 w& A
  65. * `/ d8 V7 \1 m/ ?
  66. int ITK_user_main(int argc, char* argv[])
    0 G9 M; D9 h: V) O1 ^$ n. v
  67. {
    " [( S& c. H* k6 B# s$ R/ U$ ?
  68.      ITK_CALL(ITK_initialize_text_services(ITK_BATCH_TEXT_MODE));3 y4 p6 C) m3 @' X( M* C' d
  69.          ITK_CALL(ITK_auto_login());8 k' \% d1 k+ o$ d  h7 c7 w% V
  70.      ITK_CALL(ITK_set_journalling(TRUE));& x% ~: D6 j: G& W3 ]; R8 n! m

  71. - I" F" g+ t% m$ k# l
  72.                 do_it();
    0 A( ^# l+ x1 t5 f
  73. + b+ o6 e* L/ X2 }$ q
  74.      ITK_CALL(ITK_exit_module(FALSE));
    ; D: H  _- e' p! V

  75. 4 F; A/ t1 N7 T3 `  t
  76.     return ITK_ok;  M( d+ Y  r- E' B" A4 z3 E4 c& o
  77. }
    % l8 F+ ^% G( X; z5 h
复制代码

- V" s7 B4 Z) g; S9 p" U/ g
. _6 i% L5 X' S# P4 M* N* I
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

6

主题

4

回帖

60

积分

管理员

积分
60
 楼主| 发表于 2015-1-21 14:46:15 | 显示全部楼层
模版下载地址:
0 l3 m1 O1 P; Y( L7 @4 |- S0 {' N; j* p1 Q6 A
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 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

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

本版积分规则

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