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 的环境下,加入了库的路径,以及一些预处理相关的设置。
  Z) T. f! w4 T& C  C关于ITK开发中的模版,我制作了一个,大家可以在这里下载
$ T9 y: P( [2 H/ i8 G$ a% e# M# z3 g! S8 ~( M1 U8 }& R8 J
此处是给一个报告ITK函数执行错误的函数,方便使用,大家可以替换上面下载的模版template.c里面的代码,直接使用这个。当每次返回的status进行错误获取的时候,直接可以ITK_CALL去捕获错误。这点和我们在ufun中使用 UF_CALL类似!
' ^  z3 g2 N+ R' g9 e6 y
" ?$ W, s- {" b( v5 i7 `5 l这种方法省去了大量的调用EMH_ask_errors(&n_errors, &severities, &statuses, &messages)的重复代码!!
# w3 x$ v$ @& E' C2 i" t* ?+ ?$ v1 b5 z3 e' b" D

8 x7 q4 t5 U; D9 I) T9 s' v5 O( M
  1. #include <TCcore/aom.h>
    5 x) K* d( R. m% D8 t7 |
  2. #include <sa/user.h>
    , z4 X/ r. J2 I8 V6 K0 \
  3. #include <sa/person.h>
    7 P' i3 k% v: k3 P
  4. #include <tc/emh.h>, o& D" s" t; T4 f1 m" O
  5. #include <tc/tc.h>" ~6 v$ {0 {) A1 X# x- Z" `
  6. #include <stdarg.h>( u0 O2 m& d9 C; @% M0 N

  7. ) c/ Q7 l4 b3 \" ]) o  S
  8. static void ECHO(char *format, ...)
    1 c8 V5 F5 ^- d3 }$ T: B
  9. {' U3 _$ i* g. u0 Z3 U
  10.     char msg[1000];
    5 h9 x" D4 w* y
  11.     va_list args;
    ( u1 @% W+ E8 K
  12.     va_start(args, format);
    # K) S  j5 _. n+ C
  13.     vsprintf(msg, format, args);
    - S7 ~7 I& E' l% L+ ^2 R; z
  14.     va_end(args);3 Y2 D( ?# b$ j9 Q% Y8 D& u
  15.     printf(msg);- O; i+ ~0 k1 p7 p# P
  16.     TC_write_syslog(msg);
      m& f+ q: Z2 D! e& J/ ^! N
  17. }3 K5 j& z$ t; n0 ?
  18. 0 z9 }# x5 _) \; i
  19. #define  ITK_CALL(X) (report_error( __FILE__, __LINE__, #X, X, FALSE))
    . k, i0 B5 y5 p0 t4 w% s) X
  20. ( t* O: J* ~7 j) P
  21. static int report_error(char *file, int line, char *call, int status,% J2 x9 S. k/ ~/ J! v
  22.     logical exit_on_error)
    " M' m" S- ^/ p" l$ u' d$ z
  23. {
    " u: ?7 g$ d5 O& u, ]2 ~2 g
  24.     if (status != ITK_ok)# i" x( ~) {  l* ?( X0 h
  25.     {+ R1 E9 d- Y; `6 d- b4 ^
  26.         int" N' v) C* c! d& w; ~8 j1 l
  27.             n_errors = 0,
    ( d5 j/ t: Q8 _' L( M1 k7 b
  28.             *severities = NULL,
    0 k  m1 j0 N) @: c, E+ d
  29.             *statuses = NULL;
    1 n  R" W  c$ }; J. O
  30.         char$ `* v* A; x- p
  31.             **messages;
    + }( g: G7 z- R* k' I3 P) K

  32. % @7 E3 `; b4 q
  33.         EMH_ask_errors(&n_errors, &severities, &statuses, &messages);
    5 m9 ^* r& N# i+ k
  34.         if (n_errors > 0)
    $ K" y2 A) e# Z) B! I3 Q
  35.         {+ u( m! p! r4 u9 b7 p
  36.             ECHO("\n%s\n", messages[n_errors-1]);
    8 |' p, z) F  S6 s0 L
  37.             EMH_clear_errors();( i8 b( z5 l4 J7 ~; B. P0 W
  38.         }
    ) H2 K9 U$ J' C( j
  39.         else" \: h2 v; P1 @/ S3 O
  40.         {9 u8 u$ C/ |9 A1 l
  41.             char *error_message_string;
    & l/ N* R  e  `8 I; f
  42.             EMH_get_error_string (NULLTAG, status, &error_message_string);
    : \. b% Z+ D; S
  43.             ECHO("\n%s\n", error_message_string);
    1 k& y) W! P2 N% X/ K: V: W4 r& N
  44.         }
    ; A4 g; `8 g2 W0 U2 E4 [
  45. 8 {" g. s2 u: x& c. w- o
  46.         ECHO("error %d at line %d in %s\n", status, line, file);0 [5 y3 ?7 q( M2 v4 `  X  Q
  47.         ECHO("%s\n", call);
    / A$ L" S6 M1 I' V& O# z% L

  48. ! t! Z! s# j6 b) F: N; [) T
  49.         if (exit_on_error)
    : l: i5 H: w0 R- P- n. y, I
  50.         {$ r! ~% ]" x. ?: W+ I: A6 [2 E: g
  51.             ECHO("%s", "Exiting program!\n");1 f6 L* V7 m* Q$ W1 Z
  52.             exit (status);( U2 n0 ?1 D, h
  53.         }
    : K4 D% r4 G. m. {
  54.     }4 {# U: `9 P7 c+ i& u3 A. q& k

  55. * N7 i$ ~' y$ u" T/ Y" a
  56.     return status;/ O8 @* ^4 t* O- f5 X
  57. }
    3 O+ P6 p* ~2 ~0 l/ |0 d! H9 H
  58. % ]1 ~( Z, W8 o5 D
  59. 7 ]9 z8 P2 Y4 N* g3 N. @0 I: q
  60. static void do_it(void)
    + Z# r4 L% g3 N3 D
  61. {# a2 ?0 L2 A) B2 V8 l1 S
  62.    // write your code here) }; X" |$ P; P& E6 G" ]* C
  63.    
    ! U4 m6 l8 l7 ^8 f( A
  64. }
    1 m5 E" U( f$ V- H

  65. 7 [# [* T- \& F4 h+ V" f
  66. int ITK_user_main(int argc, char* argv[])
    7 @. r! V! S8 [0 ~2 ?
  67. {
    ' ~0 b8 N% ?. T* M, a5 o
  68.      ITK_CALL(ITK_initialize_text_services(ITK_BATCH_TEXT_MODE));
    + }7 C. f3 l% a  d% O$ M& u% V( b9 b
  69.          ITK_CALL(ITK_auto_login());# T; E* v$ P5 m% e: M! s
  70.      ITK_CALL(ITK_set_journalling(TRUE));
    ! ~: \$ a5 I: b( K% O! d0 r$ B

  71. * G+ I6 f) r& l
  72.                 do_it();8 Q% ?+ h. m7 k7 W$ ?, U0 f
  73. # K0 q0 w( Y/ a5 C% j0 g
  74.      ITK_CALL(ITK_exit_module(FALSE));
    + y" I( R7 Y4 N5 x; _/ ]1 e  g3 p
  75. 9 I1 O0 Z0 {0 a0 X) y
  76.     return ITK_ok;2 q  O; N- v8 z( l+ h& k
  77. }, Z/ L; u* X3 V# \" e" [
复制代码
4 P/ n  U; V  P, g) J: g7 F

4 _* }% C( R, ?" O. W; Q
上海点团信息科技有限公司,承接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

模版下载地址:
" [1 w2 d* j' R
. H* H6 h: ^: A: n& @: a( mhttp://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二次开发专题模块培训报名开始啦

    我知道了