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

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

[复制链接]

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

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

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

x
NX二次开发中,默认的开发模版,使得开发NX非常方便,实际上主要是在Visual Studio 的环境下,加入了库的路径,以及一些预处理相关的设置。, Z* N. z0 p( k2 V2 }
关于ITK开发中的模版,我制作了一个,大家可以在这里下载
' P; I: c" C7 D" c. U: }% s" O) [2 O$ G6 N# b
此处是给一个报告ITK函数执行错误的函数,方便使用,大家可以替换上面下载的模版template.c里面的代码,直接使用这个。当每次返回的status进行错误获取的时候,直接可以ITK_CALL去捕获错误。这点和我们在ufun中使用 UF_CALL类似!
4 ~1 f! G3 ]' \: r5 J! k$ Y7 b
( V1 Q- h1 U0 G0 R) J  I这种方法省去了大量的调用EMH_ask_errors(&n_errors, &severities, &statuses, &messages)的重复代码!!
/ z, X; U# Z% ~
+ p9 Z2 a- w2 i( E. y& J/ B! e7 d) w8 K! h- e/ S+ I
  1. #include <TCcore/aom.h>0 D7 f/ |( D" f
  2. #include <sa/user.h>8 m: ^* x( q6 ]% P+ x; G
  3. #include <sa/person.h>& u# N; L) t4 u
  4. #include <tc/emh.h>
    4 S) |. \* {1 H/ x  M4 R7 r
  5. #include <tc/tc.h>
    " J5 h4 d9 w, e8 i% B: t
  6. #include <stdarg.h>+ ~$ ?9 I) N! Y. p$ \
  7. : h8 q/ u+ o% e: E9 X; K
  8. static void ECHO(char *format, ...)! R" k/ }8 n% k& s
  9. {
    0 J3 Z( x$ y, V, p# p( n, [& P
  10.     char msg[1000];
    2 v4 q( r% m. [- o
  11.     va_list args;
    & [$ O5 R9 I$ X9 n8 k3 |% @
  12.     va_start(args, format);
    2 H* ?: S: I6 i2 ?9 q
  13.     vsprintf(msg, format, args);3 W" w/ r. z0 e3 ?4 S, \8 ~
  14.     va_end(args);
    ; {3 I6 _; x' q" J: a
  15.     printf(msg);/ E4 l' v# }2 A5 P: s. o) s: d9 Z
  16.     TC_write_syslog(msg);
    ' s8 D2 u5 z* I" j2 n  U6 z
  17. }0 N4 U! D, ]' _. u2 O
  18. 3 s/ L  r2 X8 i* q& [) Z$ N
  19. #define  ITK_CALL(X) (report_error( __FILE__, __LINE__, #X, X, FALSE))" p+ R9 u4 u+ E. n

  20. 2 r; |4 T) H9 |5 |; T8 q
  21. static int report_error(char *file, int line, char *call, int status,. M% w3 `  |2 {: @4 G0 [
  22.     logical exit_on_error). J6 }" _2 C" G9 O2 a, o1 n# A
  23. {) n: m" u8 l% H& d3 I4 o
  24.     if (status != ITK_ok)$ p1 _4 f( {/ [! T) I
  25.     {2 }7 f/ o3 W; f3 P' j# V" }, b
  26.         int: Z0 H3 R" B. r3 Z6 d, _, B, Q
  27.             n_errors = 0,
    ( ~: k5 J9 a' |
  28.             *severities = NULL,
    * J* \  m. \8 o
  29.             *statuses = NULL;
    3 v" ]! g# K$ u5 t# \6 F' c
  30.         char
    + B! O& n/ u9 Y' r; D
  31.             **messages;
    ; h4 W" k0 g. P) P; M- W4 [4 c
  32. ; k1 a* W: Q3 P0 H; O
  33.         EMH_ask_errors(&n_errors, &severities, &statuses, &messages);) l5 E* C. b. S( J
  34.         if (n_errors > 0): ]0 U! T7 O# o9 w1 S
  35.         {* J  b5 z8 b1 i3 I+ r5 f2 V
  36.             ECHO("\n%s\n", messages[n_errors-1]);2 @& l. t; ]/ o, y: t
  37.             EMH_clear_errors();, k# _  J/ [2 o$ a* e' c0 S
  38.         }' l3 F6 e2 n7 w2 q
  39.         else. l9 z- E2 ~. G; v: [* p
  40.         {* j% g1 \! a- i! ?
  41.             char *error_message_string;
    3 \* K4 g! [  t; S, |
  42.             EMH_get_error_string (NULLTAG, status, &error_message_string);
    - I' q: @. \- I0 O2 m5 {$ k
  43.             ECHO("\n%s\n", error_message_string);
    ! f: w) ~7 i1 T" g
  44.         }; D6 C6 i; u) u, L4 p; @3 P

  45. 8 h+ k! I! g$ H; E+ a! j
  46.         ECHO("error %d at line %d in %s\n", status, line, file);
    0 S1 O# t' f$ T
  47.         ECHO("%s\n", call);
    ' D$ g' Z' T3 e. D2 O
  48. 7 t5 N# [" J3 P9 f
  49.         if (exit_on_error)
    % N; r( M7 g: c; d! M8 y
  50.         {
    ( \6 B2 {5 r: m( x1 E' P: |  a, N
  51.             ECHO("%s", "Exiting program!\n");$ }# O9 R! r1 t2 w6 T
  52.             exit (status);& p  ^/ {$ D5 ?
  53.         }
    ' I2 L0 o1 v( x7 c8 v1 c
  54.     }3 T5 r2 m- ^1 E/ B+ ]. h9 Q% ?
  55. & f8 P  N0 A* x' ]3 z0 ^
  56.     return status;
    ' }! o% b6 ?! f+ Y7 j# n6 d8 k
  57. }
    6 d6 x0 k9 S+ F  d9 p2 b" u: b: n. d  E

  58. " w1 l- _4 i: J( I. `2 k

  59. ' b% S  k# d/ N! M# M
  60. static void do_it(void)7 m8 j$ k, l( z" Z: g1 d
  61. {
    5 B+ T) f3 m& |- m. i0 e( w' a% Y
  62.    // write your code here: f; f: ]5 A0 j, }; V
  63.    
    ; K# l1 [8 B3 ^0 ?
  64. }
      j. G8 [! i9 M- F" o# j

  65. # s4 M3 o+ g, g. n8 L, _
  66. int ITK_user_main(int argc, char* argv[])8 k- Q3 a# I! ^; u2 Y+ X1 b
  67. {: ^1 u/ t& Z8 P
  68.      ITK_CALL(ITK_initialize_text_services(ITK_BATCH_TEXT_MODE));% I( q* S: ^' T5 {
  69.          ITK_CALL(ITK_auto_login());& G6 N6 R6 o, O9 j; |2 U
  70.      ITK_CALL(ITK_set_journalling(TRUE));( i9 n% G3 r6 `: F4 n! p! `" a
  71. ) H- t# R' w( p0 J0 J, X0 a
  72.                 do_it();
    1 p+ @* P' I& R6 z

  73. . P; t9 ]  o7 H# G+ J8 W( I6 c4 W
  74.      ITK_CALL(ITK_exit_module(FALSE));
    ; W. c. b  S- b# C: @
  75. " t) M) B/ V( O8 {% ?0 m& _. G0 G
  76.     return ITK_ok;+ t+ F# x! {0 m/ r
  77. }7 |9 Y+ Y) q4 ^$ _
复制代码

4 V; r# M# L; D& Q  V
" t4 J0 S# N9 C2 |. J/ v8 g1 D) 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

模版下载地址:
% b7 f6 a" t2 H- b' M- ~+ k. l( L  O: a' ^" L+ `( L
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二次开发专题模块培训报名开始啦

    我知道了