PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

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

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

admin 楼主

2015-1-21 14:42:57

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

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

x
NX二次开发中,默认的开发模版,使得开发NX非常方便,实际上主要是在Visual Studio 的环境下,加入了库的路径,以及一些预处理相关的设置。+ z8 ^. t" ^9 _- y
关于ITK开发中的模版,我制作了一个,大家可以在这里下载( n" ~$ L+ E0 `9 ~6 N
3 w  P+ p* u! R+ A5 ~! h; U) I" z* D
此处是给一个报告ITK函数执行错误的函数,方便使用,大家可以替换上面下载的模版template.c里面的代码,直接使用这个。当每次返回的status进行错误获取的时候,直接可以ITK_CALL去捕获错误。这点和我们在ufun中使用 UF_CALL类似!, `* @4 y% H6 {+ ~2 R! u

& u$ K% Q) _9 f% Y- c* e这种方法省去了大量的调用EMH_ask_errors(&n_errors, &severities, &statuses, &messages)的重复代码!!
& [+ E- g( z9 I: p" i% `  {* o# F) g" V' R$ B. }; _" r( y) w

% \+ B7 }5 q6 ^' B5 |0 m) k
  1. #include <TCcore/aom.h>
    1 p5 k  N1 J& H3 u* ~
  2. #include <sa/user.h>
    $ A$ e( P1 M% P- h
  3. #include <sa/person.h>
    0 P4 ?+ w9 k. a; I# Z
  4. #include <tc/emh.h>% q' z8 P; j! `8 T+ B
  5. #include <tc/tc.h>
    2 ~# Q7 I4 p5 q9 ^# x0 @
  6. #include <stdarg.h>
    $ e  `6 Y; f) I; T% Q% Y/ O
  7. - ~( y' R- E3 J! A3 x
  8. static void ECHO(char *format, ...)
    , @9 G% V. J8 {0 k/ X
  9. {6 y; F' E/ T& e
  10.     char msg[1000];
    $ L; ~5 _$ V$ a: R$ {6 R
  11.     va_list args;: H1 ?8 N# f9 _0 m5 |5 \
  12.     va_start(args, format);
    / i3 v- d" T- d, S+ P% |
  13.     vsprintf(msg, format, args);& w( {) g6 r2 k. G0 Y/ g
  14.     va_end(args);5 A# t' L7 k* u$ F/ ]! ^! m$ O
  15.     printf(msg);$ M; ~/ N6 ~8 u$ `3 [3 ?
  16.     TC_write_syslog(msg);
    " X4 \0 c  h4 j4 [9 R7 Z
  17. }
    - p5 ]* X3 Q  @, b4 }  V$ O

  18. 4 r  J  C- _+ I5 d9 P) F/ y
  19. #define  ITK_CALL(X) (report_error( __FILE__, __LINE__, #X, X, FALSE))0 V. k2 O6 [. o$ B# G0 l+ ?9 R

  20. $ S  j" p+ ]& l) [+ V& R
  21. static int report_error(char *file, int line, char *call, int status,; ]5 h7 ^1 c5 C( W! k- P
  22.     logical exit_on_error)
    2 M- [; ?0 }' F& S3 Y
  23. {- g( D8 O( ]8 \$ `6 @
  24.     if (status != ITK_ok)
    6 ^) t6 H4 {) R0 }; n# F& G5 D# j
  25.     {3 x: t& i9 c  h& ~% Y# H) c9 o! E
  26.         int
    ! z  ~0 u1 O! `! ?& U. z: _
  27.             n_errors = 0," L  Q  t0 ]( }# V$ P, B$ r, f0 C; K
  28.             *severities = NULL,
    ( v8 K$ P/ l7 j' C4 w
  29.             *statuses = NULL;; K  O6 ~) V6 r  V9 `
  30.         char
    ; l0 s6 x% ^) u
  31.             **messages;
    + n, Y9 P0 b6 x" `
  32. - {0 Q: A! G, e- W8 B
  33.         EMH_ask_errors(&n_errors, &severities, &statuses, &messages);6 ?4 Q- K2 e( g& {# B
  34.         if (n_errors > 0)
    6 K" c4 R( j- g: `) V
  35.         {
    . C0 |: F8 b1 V
  36.             ECHO("\n%s\n", messages[n_errors-1]);
    ) l! t' I0 `  ^# q& ^
  37.             EMH_clear_errors();
    8 q; z& \1 J( f' y! G
  38.         }" p9 [& u' R) p( S$ H6 Q: n9 C
  39.         else
    ; w# J- Z/ V5 j' i6 r* v3 `
  40.         {  r! \/ c) c8 |+ f
  41.             char *error_message_string;: o" B( l" Q+ F
  42.             EMH_get_error_string (NULLTAG, status, &error_message_string);
    " u: z2 d* N9 F, h! K& `" t
  43.             ECHO("\n%s\n", error_message_string);" ^0 y2 x7 C3 \& Y* B9 n( s
  44.         }' T3 f0 w" ?7 @  r
  45. 5 w# s* z8 U, i. f7 y
  46.         ECHO("error %d at line %d in %s\n", status, line, file);
      B4 {2 [6 Z( ?& r: r7 X/ q
  47.         ECHO("%s\n", call);9 f: @: I* B$ [8 M% X+ r; `  @2 G1 r
  48.   d4 Z0 G2 v8 @" C
  49.         if (exit_on_error)& e; l0 X- s/ W: \* K8 y& C9 n, K
  50.         {  _9 n+ R8 e6 p; [! [! Y
  51.             ECHO("%s", "Exiting program!\n");
    : d5 _$ c/ j) @7 Q
  52.             exit (status);" _$ y* @5 E! @- T6 x
  53.         }
    $ h& B! V: B1 }2 |
  54.     }2 G" f' z7 q& l, k" J5 P( g! G
  55. 6 O) N- Y5 `+ L, g, T- {* s* g
  56.     return status;7 P: k. I4 @# u
  57. }
    & s$ U$ ]6 }6 _5 _8 a- d- Z% z

  58. 6 ?2 M5 K9 D2 V( b! T3 t) \# [5 T1 _
  59. 2 G; p( Z4 ^6 }1 O' {- c
  60. static void do_it(void)$ X5 b! c8 a$ v/ `. _# X# [
  61. {5 X3 {7 X8 ~4 r3 z% ^; _
  62.    // write your code here% K3 s" b$ K' {% R1 `5 I( A
  63.    
    ) [2 T" }* |) K" w
  64. }! @' ?" F6 D$ k" C

  65. . p! x* C) M: f' g6 v
  66. int ITK_user_main(int argc, char* argv[])) D$ E' a, m1 o4 j  T: D
  67. {
    " k# q& p; N  m0 z6 m) C  Y1 l# ?& b
  68.      ITK_CALL(ITK_initialize_text_services(ITK_BATCH_TEXT_MODE));& q' ~& K* m- X7 T' }. T& q- S" V
  69.          ITK_CALL(ITK_auto_login());* l, |  w+ |( J: |( n8 z
  70.      ITK_CALL(ITK_set_journalling(TRUE));
    1 H# E( v, A5 ^- F

  71. 7 d0 H- b7 k' F+ j
  72.                 do_it();
    7 D' t8 ~  {7 C8 i* b' g1 y

  73. ( f5 I+ r) U) `6 M
  74.      ITK_CALL(ITK_exit_module(FALSE));
    9 ]/ |3 g2 D7 M3 P

  75. " d( o1 {- D0 \: T8 |/ b5 W
  76.     return ITK_ok;& `8 H; W1 S, ^7 _
  77. }/ C* O& @! V6 U1 a
复制代码

/ i3 j" i; w& V4 x: g2 A  C
% p+ Z7 d" L, a( d* e: \8 ^
上海点团信息科技有限公司,承接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

模版下载地址:) r7 O) }9 O. x5 t  t
' F6 O9 D3 T1 J' P( i7 ?
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二次开发专题模块培训报名开始啦

    我知道了