PLM之家PLMHome-国产软件践行者

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

[复制链接]

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

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

admin 楼主

2015-1-21 14:42:57

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

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

x
NX二次开发中,默认的开发模版,使得开发NX非常方便,实际上主要是在Visual Studio 的环境下,加入了库的路径,以及一些预处理相关的设置。
$ v; {1 |2 ?8 t# J1 y+ U# D关于ITK开发中的模版,我制作了一个,大家可以在这里下载9 B) \  K$ U5 t
  s2 |8 j+ i1 b4 G! J2 u
此处是给一个报告ITK函数执行错误的函数,方便使用,大家可以替换上面下载的模版template.c里面的代码,直接使用这个。当每次返回的status进行错误获取的时候,直接可以ITK_CALL去捕获错误。这点和我们在ufun中使用 UF_CALL类似!
; N# \) o2 k8 T* z) _
8 ^8 `. l* ^6 V7 B/ v) t& D这种方法省去了大量的调用EMH_ask_errors(&n_errors, &severities, &statuses, &messages)的重复代码!!  b8 c4 t8 N; s: a0 \

5 ^* _9 f+ p8 T% C
; P5 @8 `& B7 D5 ~4 ?# N
  1. #include <TCcore/aom.h>3 j4 q* Q4 Z  C6 a' C! h; ?/ Y
  2. #include <sa/user.h>! q+ T7 [% y; ?- o
  3. #include <sa/person.h>
    ) u6 r7 k  @, \
  4. #include <tc/emh.h>6 n& L5 C; T$ J
  5. #include <tc/tc.h>9 l/ {# Y6 u. z/ y
  6. #include <stdarg.h>5 Y! n" q0 g$ H0 ?. Q

  7. & Z* q3 e+ g% D8 ?( C
  8. static void ECHO(char *format, ...)
    : X) k1 q( u* ]0 {3 k/ Q! P$ r5 {
  9. {% M" B9 y5 E! v, y0 g
  10.     char msg[1000];/ A+ @+ Y' M& c/ {5 _
  11.     va_list args;
    3 ], i+ C9 q5 q/ U/ w: Z9 `* Y4 E
  12.     va_start(args, format);6 N: f( d3 D& H: K" z& y
  13.     vsprintf(msg, format, args);
      i+ G4 u5 k8 A- C3 P
  14.     va_end(args);
    7 p. |! p. F  t% n0 k7 q
  15.     printf(msg);1 V& A0 C- i  r- n+ q  Z$ R- B3 d
  16.     TC_write_syslog(msg);
    + }, R, a1 m& z! A: a
  17. }( E* e7 O: A; Q$ G: I# @) R

  18. & n9 o- S' g& v; A; R
  19. #define  ITK_CALL(X) (report_error( __FILE__, __LINE__, #X, X, FALSE))
    ) Q* h; h4 o  D% E3 j

  20. ' V  }7 S% S9 {5 B9 k
  21. static int report_error(char *file, int line, char *call, int status,
    ' r6 R' {* D+ B" _( S! o  {
  22.     logical exit_on_error)
    % O3 f' S" i7 i8 i6 ^2 ^
  23. {
    0 k9 H0 o- B- q, [. r$ }4 q
  24.     if (status != ITK_ok)
    7 ]) R3 ]$ q3 Z
  25.     {% E. V$ M$ t; r- T& M! L
  26.         int: r% g6 l. E, r: l( V- z3 p: \
  27.             n_errors = 0,
    * j' Z/ V( X8 A
  28.             *severities = NULL,+ N/ U! p# o1 r
  29.             *statuses = NULL;
    ) O2 R- f5 I' P
  30.         char1 P) ^, e  |' w" H# X) ], R
  31.             **messages;
    ) p% i) u5 @5 K. `" u

  32. 2 |8 C/ y; ]! t8 x* E: \  c
  33.         EMH_ask_errors(&n_errors, &severities, &statuses, &messages);
    & [% U: v9 ^; y. S  D7 _
  34.         if (n_errors > 0)2 A5 Y' \4 f" P0 |4 k5 O$ d
  35.         {6 D3 V7 C+ K& s6 P& u: U. g
  36.             ECHO("\n%s\n", messages[n_errors-1]);
    % l( o) z2 r5 A
  37.             EMH_clear_errors();
    - o* g0 V  }2 Q3 F
  38.         }
    9 c, t9 ^, _* ]
  39.         else
    5 g+ l8 `7 ^* v+ {4 s
  40.         {
    . G9 E. \1 ~. f8 K6 |( `: Q
  41.             char *error_message_string;7 d  @. T8 g  @8 C! E! r7 u
  42.             EMH_get_error_string (NULLTAG, status, &error_message_string);; A; G+ Q' c2 b. \
  43.             ECHO("\n%s\n", error_message_string);& a7 O! V4 [9 v" |" ~; U2 n1 U
  44.         }
    1 l9 P. E0 G- ^" K! q3 R

  45. : I1 z* G% M+ P2 j3 y2 i/ @6 o
  46.         ECHO("error %d at line %d in %s\n", status, line, file);# }* L3 C8 t$ w- J  b! R4 ^; ?
  47.         ECHO("%s\n", call);$ b4 p! Z$ h/ V& n  a( I! @+ v
  48. ! S# a( }3 m0 `# K0 Y7 [- J
  49.         if (exit_on_error)
    7 ?, H# w3 `, q3 V
  50.         {, C9 z$ ~8 l0 S0 ^
  51.             ECHO("%s", "Exiting program!\n");8 [# i$ i9 f2 W. e% a) P
  52.             exit (status);( `. a* z0 T; {7 T. Q
  53.         }
    ) X4 D4 c( Q+ z) c$ Z& V: f: \
  54.     }
    * E! n  e+ E* n) h

  55. # m: h0 M3 y- e8 O( W6 e: f" ]; `# @
  56.     return status;
    ' z9 Q/ v, }3 c5 m2 h% t# ~! W
  57. }
    & g4 n9 }, |0 C1 }4 k, |
  58. ( D  \0 R# n3 S  ~2 v2 y- m' M

  59. ! B- I4 {' `- s  E8 D% H0 C( ]$ K
  60. static void do_it(void)# ^& p/ h. G! p; l7 \& d
  61. {
    0 H" ~7 O. ^+ l! D' ]0 |# n4 \
  62.    // write your code here
    - |1 ~9 P6 \$ H) z" X9 n
  63.    
    5 O2 m  N2 g, F! f+ P! ^: x5 H
  64. }/ @, \' ^8 h/ L. Z
  65. 2 g' K5 a" b4 o. r
  66. int ITK_user_main(int argc, char* argv[])
    : K* b% F! h4 F
  67. {
    1 ?' x' t" o/ J. f8 [9 o- {. u8 i! F
  68.      ITK_CALL(ITK_initialize_text_services(ITK_BATCH_TEXT_MODE));
    6 H5 w5 D: J; ]3 S' {
  69.          ITK_CALL(ITK_auto_login());
    9 t: _1 ?! X4 D' M" r/ w/ h
  70.      ITK_CALL(ITK_set_journalling(TRUE));6 L+ m( Q, j& L* P
  71.   Z  F) Y% k+ E) G2 k$ {, C4 D
  72.                 do_it();
    3 O; N% r. i* [& h% r  W
  73. / k9 Z* ?: v9 k6 U3 ?8 G
  74.      ITK_CALL(ITK_exit_module(FALSE));% D; _- ^: C! q6 q6 @

  75. ) p4 p( h. {' E  O3 ?) c
  76.     return ITK_ok;
    1 Y: J5 u0 [: z- |
  77. }. y2 q1 h- w$ ]" @8 `
复制代码

0 S: S* E' Y5 S  ]1 h, @4 i' q3 {( k1 J" I* h
上海点团信息科技有限公司,承接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

模版下载地址:4 y: f6 E% U) V, E9 q6 ~; V6 B
1 A+ J0 x, o2 `: f0 E
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二次开发专题模块培训报名开始啦

    我知道了