查看: 6447|回复: 1

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

[复制链接]

6

主题

4

回帖

60

积分

管理员

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

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

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

×
在NX二次开发中,默认的开发模版,使得开发NX非常方便,实际上主要是在Visual Studio 的环境下,加入了库的路径,以及一些预处理相关的设置。1 G/ v5 G9 B3 u* t, I1 e. ~
关于ITK开发中的模版,我制作了一个,大家可以在这里下载:' `7 A+ L; e$ M6 ]7 }

+ J! N1 ]4 `1 Y! i此处是给一个报告ITK函数执行错误的函数,方便使用,大家可以替换上面下载的模版template.c里面的代码,直接使用这个。当每次返回的status进行错误获取的时候,直接可以ITK_CALL去捕获错误。这点和我们在ufun中使用 UF_CALL类似!1 W& N1 O  W- T, I

0 c7 O7 \& u/ i" I这种方法省去了大量的调用EMH_ask_errors(&n_errors, &severities, &statuses, &messages)的重复代码!!
5 z, I' `) n% G+ m' D* S7 R' ~' g; U+ C1 L8 H
' p0 c! Z9 S1 t, _1 E
  1. #include <TCcore/aom.h>
    ( k; ~3 I5 U# }
  2. #include <sa/user.h>
    * r. `" ?. D$ ]$ \9 _7 F/ w
  3. #include <sa/person.h>& T" o1 ?" w% J( L) m( j
  4. #include <tc/emh.h>9 O. D$ p8 c3 k6 x% Q' i' V0 n
  5. #include <tc/tc.h>
    , ^; v2 B' O( J. r* e1 k) B5 U
  6. #include <stdarg.h>
    ) k8 I& `9 e2 f! m( @0 O/ J- S

  7. 2 N. Y* B+ ?3 ?. W" U' |, n1 a- F; @
  8. static void ECHO(char *format, ...)
    4 C; f& H, I$ d1 H4 c5 h+ R
  9. {
    ! w: L# H" p7 k
  10.     char msg[1000];
    0 i" j1 p- \1 ~6 i# W7 k6 C
  11.     va_list args;' X" w0 `0 V" T8 v" o
  12.     va_start(args, format);) H& d0 |$ N  k( v- r+ T6 N0 i, ~
  13.     vsprintf(msg, format, args);1 v- Q' o3 L- `* M1 b8 [
  14.     va_end(args);
    . f, ~, R: C7 S# |
  15.     printf(msg);
    2 |* U5 h6 J. i% V' l
  16.     TC_write_syslog(msg);
    ( j' m4 Y1 k$ @0 y2 F" O
  17. }
    " ^, r) C# S# k' l0 m, `

  18. 5 g; |5 J2 y; ]0 i0 Y
  19. #define  ITK_CALL(X) (report_error( __FILE__, __LINE__, #X, X, FALSE))
    4 I* H; c# b4 q* k
  20. " Q9 \; H  I  r
  21. static int report_error(char *file, int line, char *call, int status,8 `2 B  ?( U1 d( e
  22.     logical exit_on_error)6 B: R/ M. {- }( Q
  23. {& A1 e/ P% H+ o6 [/ H) z. X  }
  24.     if (status != ITK_ok)
    9 y. M1 }0 l: R3 {, q" w
  25.     {1 T0 |6 J/ {3 ]# _* @1 |3 i4 N
  26.         int
    # X) _! G  y2 N2 X( i7 J! T' b, ]
  27.             n_errors = 0,
    6 ?# j8 y  q0 v1 u5 L! j
  28.             *severities = NULL,8 J/ `# \6 J8 P/ X( s2 i4 m% E
  29.             *statuses = NULL;& k) y8 A9 a* x& w; o
  30.         char3 E9 F: |& q, H! k
  31.             **messages;
    0 E- X4 ]' O  L8 b. E
  32. , h3 V; ^4 _; n) ?8 [
  33.         EMH_ask_errors(&n_errors, &severities, &statuses, &messages);
    , R  \# k, ~3 `- x3 P' {( R" ?
  34.         if (n_errors > 0)
    7 o2 Z: H& C. A3 d" P+ Y+ {
  35.         {% b  _1 J& D- Z
  36.             ECHO("\n%s\n", messages[n_errors-1]);
    & N; E9 S) o( W( Q7 G+ M
  37.             EMH_clear_errors();
    : Y$ h; O/ h3 K# p; I8 p
  38.         }
    , T) U0 C: o; m& n8 k
  39.         else
    5 b: |0 q; ^& K4 A
  40.         {
    2 z! j- {* Q/ P& U' Q' H
  41.             char *error_message_string;
    3 U" N" M0 |9 T+ ^3 f, B0 z" p
  42.             EMH_get_error_string (NULLTAG, status, &error_message_string);
    9 w% O3 G  T" p6 N/ Y* \3 A6 |
  43.             ECHO("\n%s\n", error_message_string);$ v: x8 |) r5 J: v
  44.         }  _+ v+ V0 e/ G1 H0 w
  45. * w& }" I% Z( @
  46.         ECHO("error %d at line %d in %s\n", status, line, file);
    , a( @# `0 S0 X- a$ L
  47.         ECHO("%s\n", call);4 B+ P$ h- g4 l& [1 L! [
  48. 8 y& |$ ]2 ~9 `% R6 M
  49.         if (exit_on_error)
    / \- N- r+ T4 G! g
  50.         {
    & T! s7 a" L- I, q
  51.             ECHO("%s", "Exiting program!\n");
    5 R! q4 d, F6 x$ B& c% o' k3 j
  52.             exit (status);. x6 Y  |& r/ ~# n
  53.         }6 M4 M& T2 n9 X0 j9 ^
  54.     }: K; |/ q2 s: P  J. b) l

  55. * t; }' a% d5 a7 x5 C
  56.     return status;
    % n* L1 G3 c! P5 x
  57. }$ g& W* o( x+ C; `5 g' p5 F/ W
  58. 4 `8 `+ ^4 X0 z

  59. - X6 |7 C0 w+ }9 N$ l8 v
  60. static void do_it(void). L2 j1 M3 j3 S* B" A
  61. {
    : w& \6 U, a8 B  ?% `
  62.    // write your code here3 l8 X& i# i# M  D6 b4 H% c
  63.    8 {9 J5 N. v% R+ a+ U
  64. }
    4 `1 x% c5 c. X4 k/ g
  65. , U8 |: c' b) z$ }) V+ P" l4 h8 \0 J
  66. int ITK_user_main(int argc, char* argv[])5 T7 a, K# O0 U
  67. {
    . F' H% a/ K9 j- h
  68.      ITK_CALL(ITK_initialize_text_services(ITK_BATCH_TEXT_MODE));
    . N; A. v. ~0 {0 g
  69.          ITK_CALL(ITK_auto_login());: |. C( N+ o' Q1 l2 n  h
  70.      ITK_CALL(ITK_set_journalling(TRUE));
    1 b( h, D, R6 O: N
  71. 1 B/ c' j3 r; A3 D
  72.                 do_it();5 ~, t# T& h! z* y  s# r
  73. ; l/ A) l$ B# e) X! [9 X8 ]
  74.      ITK_CALL(ITK_exit_module(FALSE));* E) ?: O; R/ d: A; C$ a1 ~5 P

  75. 2 x7 d' s% {) q. j
  76.     return ITK_ok;
    2 R; {1 C4 ~7 y& k+ W
  77. }
    4 c1 K0 Z8 V( ~* u
复制代码
4 J: E, w3 k) _
: \4 r& _2 y  ?0 y1 }2 L
上海点团信息科技有限公司,承接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 | 显示全部楼层
模版下载地址:
* L& V- @- v  b3 Q5 l' S6 \6 f+ f4 L/ u
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客服返回顶部