PLM之家PLMHome-工业软件践行者

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

[复制链接]

2015-1-21 14:46:15 6214 1

admin 发表于 2015-1-21 14:42:57 |阅读模式

admin 楼主

2015-1-21 14:42:57

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

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

x
NX二次开发中,默认的开发模版,使得开发NX非常方便,实际上主要是在Visual Studio 的环境下,加入了库的路径,以及一些预处理相关的设置。8 Q( }0 |5 W& s% I
关于ITK开发中的模版,我制作了一个,大家可以在这里下载! H7 V# _: d- `; O& v) P' l
. b6 `; C* o- a! u% ^, _! \
此处是给一个报告ITK函数执行错误的函数,方便使用,大家可以替换上面下载的模版template.c里面的代码,直接使用这个。当每次返回的status进行错误获取的时候,直接可以ITK_CALL去捕获错误。这点和我们在ufun中使用 UF_CALL类似!# H$ {2 ?$ D& I2 H
  }8 @1 ?, }: d3 c
这种方法省去了大量的调用EMH_ask_errors(&n_errors, &severities, &statuses, &messages)的重复代码!!4 D+ t# t+ ?- h" v

# ]6 x' N. j0 L$ a" o! i7 ?8 w  o" x  z& k1 \* Y
  1. #include <TCcore/aom.h>* L8 }6 p+ I, H# d7 @  M
  2. #include <sa/user.h>
    2 G3 x) T+ s9 I' H
  3. #include <sa/person.h>  `4 ~0 }  Y$ w* _- Q2 x) Y! m
  4. #include <tc/emh.h>% A, U& X* o  z% `3 F
  5. #include <tc/tc.h>% z' l& @2 ]& ~. h+ V" U
  6. #include <stdarg.h>, \& I# l* w4 ?

  7. # a" D+ u( U4 }: R  @
  8. static void ECHO(char *format, ...)
    : |  h/ M; q1 D/ b# x& r6 e8 Z
  9. {
    3 s) w4 g0 s  S0 A; O/ v) h
  10.     char msg[1000];
    ! W+ D# I7 ^4 S: r$ Z
  11.     va_list args;
    & b$ j- U8 V4 p: @8 \% Q
  12.     va_start(args, format);
    % F3 o3 i, e( E6 K* Y
  13.     vsprintf(msg, format, args);
    # P" U; A' X  J! [# ^5 e5 L0 @
  14.     va_end(args);
      Z* a7 V6 T3 I" G) }1 |( k
  15.     printf(msg);
    6 b" p6 k3 N! E+ h7 n
  16.     TC_write_syslog(msg);
    " o% l9 g5 h, z. [1 G% i) p, X
  17. }
    % Y# Y- C1 c' l; J$ G( r! {; q
  18. , d# C* ~' a" ^3 E1 C- H7 @: P; C5 Z
  19. #define  ITK_CALL(X) (report_error( __FILE__, __LINE__, #X, X, FALSE))
    * x+ P; D' e$ ]# M
  20. 3 M" I3 e1 p: ~
  21. static int report_error(char *file, int line, char *call, int status,
      I7 O; I$ u1 ?6 S4 X4 ^8 `' b; R1 [
  22.     logical exit_on_error)' g7 v) V, [# D* E0 Y
  23. {& Q7 ^7 u+ t9 _4 |
  24.     if (status != ITK_ok)
    $ |9 i/ n0 E1 M2 Q# E
  25.     {- t) `2 n4 n- e% p  I  [8 W+ s
  26.         int
    , k+ @7 y: y& r5 J
  27.             n_errors = 0,8 O* B  F, m+ T) i
  28.             *severities = NULL,
    ' M6 @& Q" ~' I: g# F
  29.             *statuses = NULL;# U1 K" N+ G$ l- j2 h
  30.         char
    % S/ I% F7 F" \5 y- ?+ Z5 F) f
  31.             **messages;# [' w5 Y1 _5 V+ B* G

  32. # H! `1 I+ A2 L* O2 d* c, z4 y
  33.         EMH_ask_errors(&n_errors, &severities, &statuses, &messages);% j$ Y) q5 W5 T$ H( L; t0 E$ I  t
  34.         if (n_errors > 0)
    0 w( I. Y% O: H/ c: d9 e
  35.         {
    7 S8 Y2 B, j, H# H3 D
  36.             ECHO("\n%s\n", messages[n_errors-1]);  r; s8 n& B5 h4 J) r
  37.             EMH_clear_errors();; p: W! I, K* e/ C: p6 x% }( M
  38.         }4 l, ~2 O6 R) P6 {1 [( F; y  M6 f
  39.         else& U8 }  Q* F* O4 b! {1 r+ ], W
  40.         {9 f5 j; c9 o! B  g$ I! S! c
  41.             char *error_message_string;( D6 [  ~* _/ p7 g1 Z; l! g$ E
  42.             EMH_get_error_string (NULLTAG, status, &error_message_string);  l. V: ^3 w7 I/ l$ G
  43.             ECHO("\n%s\n", error_message_string);
    4 `0 R3 T9 Z- \& l# E  c, v
  44.         }& W2 ^$ f; U6 z3 g5 I

  45. * E+ e1 `, U) z5 W, t& A0 V5 q
  46.         ECHO("error %d at line %d in %s\n", status, line, file);
    $ Q* ~( n$ i, Z* M; q9 X) \, u
  47.         ECHO("%s\n", call);
    $ p, y; s& q* @, ]1 {+ n: ~! S

  48.   L+ i1 {$ G* L/ U( |
  49.         if (exit_on_error)
    ; N( \1 M  _, H( I" }+ i8 I: N
  50.         {3 t8 l. ^$ I# J1 z
  51.             ECHO("%s", "Exiting program!\n");  i2 M3 ]; {$ \# B  u8 X, s  F
  52.             exit (status);
    7 T+ b5 M7 U' Y  Z
  53.         }
    ) T# f; y- {; A# {! `% x7 U4 M
  54.     }" T- o, M. [% o+ A9 R
  55. 8 S/ W& G: X: G! w9 |: X
  56.     return status;
    5 x2 i. q( E* S3 S& x
  57. }
    & \2 A6 V; k5 O+ F6 {: A; b# k+ H9 A
  58. 3 e% k6 [8 q9 E" T6 n

  59. 9 C6 g) V8 [/ C, g7 _
  60. static void do_it(void)
    ) B% w0 m  u" w' Z9 X8 ]6 ?
  61. {
    0 Q+ S$ H5 k4 z4 S2 o$ }
  62.    // write your code here
    4 g4 ?* |4 j7 O& p2 f
  63.    ' k0 H. d1 x3 C; N: D0 e7 o
  64. }
    , y( W" j8 a' d& X. f. B4 W$ n

  65. . A& m/ A3 M- L% K/ ^. {+ C
  66. int ITK_user_main(int argc, char* argv[])9 s$ @7 G( W" `# k% D
  67. {" L  v' O  Q) U" T
  68.      ITK_CALL(ITK_initialize_text_services(ITK_BATCH_TEXT_MODE));
    , Y0 T( x  y6 |/ a
  69.          ITK_CALL(ITK_auto_login());
    , V+ g& c; k: R3 v2 ~# y! K0 z* b3 ?
  70.      ITK_CALL(ITK_set_journalling(TRUE));
    # U' J6 I* T* }9 F# Q& T
  71. " Y  Y' L+ l6 m" |/ ^. K8 [
  72.                 do_it();
    ! s& Q6 G5 X" i8 L8 P3 [

  73. + \: J6 h* }7 F3 C
  74.      ITK_CALL(ITK_exit_module(FALSE));
    " R4 z+ F$ |' g- u& s' \

  75. 5 J( W6 A3 U$ i$ B" ]" Y3 s9 ^
  76.     return ITK_ok;/ `% L0 Z# r" p
  77. }
    6 j( f) Z& M9 X
复制代码
) g: }4 {( N/ G! C& @3 ], V; _$ p
  `* C: l) U/ P) J
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

全部回复1

admin 发表于 2015-1-21 14:46:15

admin 沙发

2015-1-21 14:46:15

模版下载地址:  Y: I& U2 p1 `8 B
) [" P) G0 Z4 R% g4 _! l$ c3 j
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
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了