查看: 6513|回复: 1

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

[复制链接]

6

主题

4

回帖

60

积分

管理员

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

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

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

×
在NX二次开发中,默认的开发模版,使得开发NX非常方便,实际上主要是在Visual Studio 的环境下,加入了库的路径,以及一些预处理相关的设置。7 P3 r+ F4 b) U
关于ITK开发中的模版,我制作了一个,大家可以在这里下载:
2 N/ |/ w% H7 v" x: `2 K, [! a0 @# D0 @) b6 a; u- _( \
此处是给一个报告ITK函数执行错误的函数,方便使用,大家可以替换上面下载的模版template.c里面的代码,直接使用这个。当每次返回的status进行错误获取的时候,直接可以ITK_CALL去捕获错误。这点和我们在ufun中使用 UF_CALL类似!8 n, n6 `! b) I) ]' A, M

% ^/ |: y1 I7 E  H1 P这种方法省去了大量的调用EMH_ask_errors(&n_errors, &severities, &statuses, &messages)的重复代码!!
! ^- J! ?+ D5 e! d5 ?/ f% n4 \3 m* G0 ^; [5 X

" r" }- k/ W) ^$ M8 U
  1. #include <TCcore/aom.h># Z0 }" w7 K% M4 E6 @* Z9 `, j7 M
  2. #include <sa/user.h>
    5 ?4 F. ^$ c# \* G9 E8 L6 R
  3. #include <sa/person.h>4 u( t8 F' D' D
  4. #include <tc/emh.h>
    / M- A3 g. P+ R$ {0 h
  5. #include <tc/tc.h>
    - Z$ U; g3 F" O+ V# I' t# L0 d9 l
  6. #include <stdarg.h>4 \2 C: }+ t7 K/ i& I

  7. 1 f# U# T1 v( e* O0 h6 A. |
  8. static void ECHO(char *format, ...)
    ' E- m! W3 r5 m7 B# [7 R% D
  9. {5 s5 l0 p# k% P4 r. J
  10.     char msg[1000];, P) _; k& ^! s$ X' N
  11.     va_list args;* C* v+ g! M4 s9 x
  12.     va_start(args, format);, w! Q1 F8 \; p. D% b
  13.     vsprintf(msg, format, args);) k! Z2 r8 q! `4 ?# e, P3 ?
  14.     va_end(args);2 h3 g6 p# `& q# [' M' v
  15.     printf(msg);
    ! Z3 [6 b5 v- G, l- X
  16.     TC_write_syslog(msg);5 J. O- G1 F' X
  17. }: [! d5 D' K) z+ ]1 A. m% b. }
  18. 2 \- G" f6 f' r/ p. N7 c
  19. #define  ITK_CALL(X) (report_error( __FILE__, __LINE__, #X, X, FALSE))( y8 N5 `' @$ P. l. D- M8 K% H

  20. " p+ F3 o- w9 V) c4 i  K
  21. static int report_error(char *file, int line, char *call, int status,
    3 V: Z- P0 j! |& t9 H. X2 J8 P
  22.     logical exit_on_error)
      c1 l4 o) d6 h8 `5 U6 d
  23. {
    , ~1 l$ P( z7 P! O
  24.     if (status != ITK_ok)
    9 v1 W5 X7 |& }6 X: s5 |  F
  25.     {/ F8 ~: C/ ]: H9 a
  26.         int
    # ^  f& B# Q3 L6 j: ^
  27.             n_errors = 0,, q# l2 X( B5 q# v7 q( ^
  28.             *severities = NULL,; _' K' E- ]) C% [8 ?
  29.             *statuses = NULL;$ N# p/ }( k% z6 J& |" q( s: ?
  30.         char
    / R  j/ s6 {8 u9 `! y0 v' D
  31.             **messages;8 m& R3 ^1 i3 h1 h% R
  32. - c( X# [( [1 {
  33.         EMH_ask_errors(&n_errors, &severities, &statuses, &messages);
    , ]( g* ~' t2 A2 w% x6 l) G
  34.         if (n_errors > 0)
    ! f$ M$ L# j" ^/ i: C# a& Z
  35.         {
    $ k8 T* V/ l" d
  36.             ECHO("\n%s\n", messages[n_errors-1]);
    4 F9 u+ }6 o6 |
  37.             EMH_clear_errors();3 s* z( G; h9 Q
  38.         }2 [% A3 Z9 a$ G4 e7 C: ?: g  D$ p
  39.         else
    # e  Z! ~" l5 X$ h, W: n4 z9 Q
  40.         {
    8 ?+ A/ X% I6 v8 t, a5 ^7 v
  41.             char *error_message_string;  t2 z) S& s' h9 M. @- q; N$ r. @
  42.             EMH_get_error_string (NULLTAG, status, &error_message_string);
    ( k/ Z/ \5 T1 H5 M0 m: [
  43.             ECHO("\n%s\n", error_message_string);* Q4 b) G, U$ F) _  F7 _# ]! n
  44.         }" F0 Z! `( i$ n1 J& i
  45. 0 I) e! \9 D- r: e: Q4 c3 ~/ Z
  46.         ECHO("error %d at line %d in %s\n", status, line, file);! y/ B3 z& P7 G# ^- Y8 g# z( [, ^
  47.         ECHO("%s\n", call);
    : _, R* T9 E  M

  48. 0 W6 K4 X* H0 l0 W& e# ^3 B
  49.         if (exit_on_error)3 c! J$ }9 X0 J/ }
  50.         {
    ' K0 x0 F6 f; U# o% H
  51.             ECHO("%s", "Exiting program!\n");
    5 B/ [! u: k0 J. E9 p% d6 j
  52.             exit (status);9 g3 f( x5 W3 T  ?* Y; s  w* m
  53.         }
    6 A7 i& s9 R5 q+ [! y
  54.     }
    # L# @$ t8 Z- |, t5 _- e
  55. ; p4 J. e3 |0 J
  56.     return status;$ i* G5 F+ r- M0 v! G% Q
  57. }
    " \# j6 x3 v6 G  l5 J# u0 \
  58. ' s7 E% U+ F8 T) z1 l! R2 T4 D
  59. * Q$ f! n% \6 f+ c! h' s4 I* g
  60. static void do_it(void). [9 k$ ?/ O! m6 _- e' P
  61. {
    ; j) Y1 F! C7 ^! z/ D
  62.    // write your code here
    . k! w: d$ h- d: K% l
  63.    " d0 R9 u. B/ K: L! z
  64. }1 ^) i: \8 L& D2 }( X  Z

  65. 8 V3 ]$ X/ Q* }5 ]
  66. int ITK_user_main(int argc, char* argv[]). h1 C: a& Z' T* a
  67. {
    # {; @, y1 I7 H, b8 r; r
  68.      ITK_CALL(ITK_initialize_text_services(ITK_BATCH_TEXT_MODE));) u$ d+ V" ^$ t- F/ i
  69.          ITK_CALL(ITK_auto_login());
    ! e: r, J. J2 [
  70.      ITK_CALL(ITK_set_journalling(TRUE));$ X6 y! T4 x9 \1 H( Y3 m' u1 X

  71. 0 i& z3 p: z4 C$ t9 A$ H  v
  72.                 do_it();
    * j. V; M4 _+ ?1 w1 t

  73. 6 a; n( ?# a. `# [- c) _5 j8 P
  74.      ITK_CALL(ITK_exit_module(FALSE));
    9 ]% o' p4 I/ O2 m, ~5 Q

  75. 2 A% n1 }( h& f" c( B4 \2 \
  76.     return ITK_ok;
    ) f+ S" m+ y: f9 _/ ^
  77. }( _8 s$ t" k. h5 P3 Y* s  E6 I
复制代码

" ^1 W" i) x( W5 T- X$ |# @
* \7 n- M/ |* ?6 i2 E; y
上海点团信息科技有限公司,承接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 | 显示全部楼层
模版下载地址:. n3 E  h" P' }% b8 |
$ T' s% ]9 q' B# O/ K
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客服返回顶部