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

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

[复制链接]

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

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

admin 楼主

2015-1-21 14:42:57

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

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

x
NX二次开发中,默认的开发模版,使得开发NX非常方便,实际上主要是在Visual Studio 的环境下,加入了库的路径,以及一些预处理相关的设置。) ]/ S1 \; \$ y! U4 M
关于ITK开发中的模版,我制作了一个,大家可以在这里下载
9 L/ ^1 `( {: ]9 O3 o& r. ~. w: B: q8 z. a2 U) V
此处是给一个报告ITK函数执行错误的函数,方便使用,大家可以替换上面下载的模版template.c里面的代码,直接使用这个。当每次返回的status进行错误获取的时候,直接可以ITK_CALL去捕获错误。这点和我们在ufun中使用 UF_CALL类似!. U) r0 t# c8 G# S# A$ s
9 U; ^: N0 [$ O4 Y) M: Q! P
这种方法省去了大量的调用EMH_ask_errors(&n_errors, &severities, &statuses, &messages)的重复代码!!! M  `( Y" |; ~/ s+ F6 }

- V2 s8 M8 w$ U0 a
/ Z9 y  Z7 u, W  t5 T
  1. #include <TCcore/aom.h>
    8 {: }" H) p2 d: f/ Y% s" A, w
  2. #include <sa/user.h>
    % n, b9 ]6 T, i3 n7 v! m$ @
  3. #include <sa/person.h>& F  Q+ ?0 n+ \0 W
  4. #include <tc/emh.h>4 b5 T6 {/ p, V
  5. #include <tc/tc.h>  B3 L% R; |# n2 C; Z
  6. #include <stdarg.h>* g& ~6 q- ~) a8 M
  7. , [6 E/ I' Y+ `( d
  8. static void ECHO(char *format, ...)4 V; W, j5 z% `' F: c7 H8 z
  9. {) z4 B5 N7 N3 ]
  10.     char msg[1000];
    7 L0 [2 P6 u, p2 \6 @# B
  11.     va_list args;
    0 H% h. y; d3 a! K; q, u
  12.     va_start(args, format);  o+ V3 b+ w% o5 d- t; p, L  y
  13.     vsprintf(msg, format, args);" n: C% @+ j! ^- \, d, _: s
  14.     va_end(args);. n: d  W4 n' [) c
  15.     printf(msg);  Y* o. ~, Y" c8 [( {
  16.     TC_write_syslog(msg);( n4 C6 L% e2 ]% r
  17. }
    0 C# _# U& g( w6 v

  18. ! n% R0 f+ G% r, @
  19. #define  ITK_CALL(X) (report_error( __FILE__, __LINE__, #X, X, FALSE))
    2 f) g7 Y$ G- D, {# G" Y

  20. 1 m+ G7 F/ V" s8 N, U  s
  21. static int report_error(char *file, int line, char *call, int status,3 d+ a, d( Y2 s  [' t8 h
  22.     logical exit_on_error)9 o. I. z4 t3 [0 ]7 D2 x6 ^
  23. {% q" ]! Z5 C+ k7 Z1 z* z1 k& L4 a
  24.     if (status != ITK_ok)  R7 ~, O$ r9 j' G8 L
  25.     {; O, `' {: J7 g8 Q8 }
  26.         int
    ) b5 @$ z) V3 a; s$ i3 i" K% W
  27.             n_errors = 0,
    2 A7 B" }3 |/ V/ [) D
  28.             *severities = NULL,
      j' K$ h* c, r, U1 s; [6 A
  29.             *statuses = NULL;: F% i$ [5 a+ N4 x% S$ N5 w
  30.         char+ z2 R! T! r5 P9 c- Z! Y
  31.             **messages;$ v/ ?. B1 e: d8 ^0 D, J
  32. 9 T5 k2 T% l0 X) G9 @4 p  o
  33.         EMH_ask_errors(&n_errors, &severities, &statuses, &messages);
    7 D- v0 a& M' E# @# J! p0 P
  34.         if (n_errors > 0)
    0 U" Z9 w: B+ }
  35.         {$ C7 N* M# p9 y; p! M6 c& |
  36.             ECHO("\n%s\n", messages[n_errors-1]);
    ) S7 D% q( q, m4 ^6 m
  37.             EMH_clear_errors();
    4 ^) h! ~5 X/ o, Y6 @
  38.         }
    % K8 `) C# E9 s# H/ @; @) p  I
  39.         else
    + X  ~" z# Z. `; [8 w
  40.         {4 s1 J. w0 P7 B
  41.             char *error_message_string;
    / z6 a7 E( M5 E, r/ {# O
  42.             EMH_get_error_string (NULLTAG, status, &error_message_string);
    6 ^5 }. G* r1 S* R* d% s
  43.             ECHO("\n%s\n", error_message_string);
    ! N% R) l- J7 ^3 H- I' @" }( h% r
  44.         }- O7 a( g# S0 G- A( F; b& ~; B
  45. # J; o) G' p( d. |" c/ Y
  46.         ECHO("error %d at line %d in %s\n", status, line, file);" R  W: w* d9 k: _$ n- ?! F4 l) W, c
  47.         ECHO("%s\n", call);: W- p9 F7 c1 I* t, o- S
  48. 5 q1 @. V$ a# V$ |. ^0 I/ E
  49.         if (exit_on_error)
    6 E, U; }% j; t* A) P) w6 u- T: F' e
  50.         {$ P3 m3 h: i6 G* Q. v$ `9 a/ o6 b
  51.             ECHO("%s", "Exiting program!\n");! m$ x$ v3 D, s' x. |5 \$ R
  52.             exit (status);( N( q# V4 P9 h, p
  53.         }9 w0 O2 V+ ?- N% E* W8 U
  54.     }0 a3 F2 I3 }2 a8 A

  55. 9 R$ A% `  }9 j% [" k; r, {
  56.     return status;8 t; J  O0 q/ i! v* k1 s
  57. }
    7 @  |; e5 F/ W4 t* Z" X  D
  58. + ^+ I) k' S$ N0 T! |) r

  59. , \9 u$ O/ w3 }8 W* ~! T5 z
  60. static void do_it(void)
    , ~0 {, V! s- n/ G' y& n  l
  61. {  l6 z! z( P3 B% S* l
  62.    // write your code here
      ]$ s) c; b8 v& m/ a% C7 h# G+ b( {
  63.    
    / x8 v0 r9 a5 {' K: U8 E4 r+ M: j
  64. }
    6 B3 R7 Z" I8 p' F

  65. 8 [+ Y+ J. r. v
  66. int ITK_user_main(int argc, char* argv[])% S, r4 u+ n5 K1 R0 P6 B; U% z
  67. {4 v; s& S  e- p6 S+ }- K3 ~
  68.      ITK_CALL(ITK_initialize_text_services(ITK_BATCH_TEXT_MODE));: g! k! j, P4 _/ F5 r* I
  69.          ITK_CALL(ITK_auto_login());( j. C7 c- }2 d, Y
  70.      ITK_CALL(ITK_set_journalling(TRUE));
    3 u5 @5 x& R; ~, \" M  Y
  71. 3 m0 p6 y1 D  s) R" G  k# V; {( R
  72.                 do_it();3 @, p# A- r1 Z2 x

  73. * k% y3 j& F7 I9 {
  74.      ITK_CALL(ITK_exit_module(FALSE));
    1 Y5 L; \- D. l, q
  75. . z: d6 C3 n1 W) Z- J# L
  76.     return ITK_ok;
    5 w5 u  J# |+ e4 e5 D
  77. }
    8 W3 D1 V( z8 v( c6 x
复制代码

4 m/ @; a+ @' h
( y  W# @+ t) X4 H! T( p
上海点团信息科技有限公司,承接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

模版下载地址:$ Z* x, o# ^8 O

8 ?# \8 \" {2 ^8 ^3 k, {& c+ T+ Khttp://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二次开发专题模块培训报名开始啦

    我知道了