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

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

[复制链接]

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

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

admin 楼主

2015-1-21 14:42:57

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

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

x
NX二次开发中,默认的开发模版,使得开发NX非常方便,实际上主要是在Visual Studio 的环境下,加入了库的路径,以及一些预处理相关的设置。+ X3 l- x8 ^2 d: `3 ?( Z
关于ITK开发中的模版,我制作了一个,大家可以在这里下载- ~1 |/ e4 R2 a9 S  s, m1 j2 K) `
) ?; Q4 Y" M0 E, S8 N  m
此处是给一个报告ITK函数执行错误的函数,方便使用,大家可以替换上面下载的模版template.c里面的代码,直接使用这个。当每次返回的status进行错误获取的时候,直接可以ITK_CALL去捕获错误。这点和我们在ufun中使用 UF_CALL类似!
, {8 W3 W7 W/ O! E; K, K1 e7 {1 V8 n, K: O
这种方法省去了大量的调用EMH_ask_errors(&n_errors, &severities, &statuses, &messages)的重复代码!!
2 V( o! \, x, @; V5 M! M+ x9 ^# b! q9 S9 J& V: R3 E! t0 Y
8 }  a9 G* }1 `/ L6 a' h  ~
  1. #include <TCcore/aom.h>
    8 l" y* R* V! d; k$ T4 h+ F
  2. #include <sa/user.h>
    ; D$ u$ K. O3 m
  3. #include <sa/person.h>) }3 Q8 F! P& d3 g  Q8 ^
  4. #include <tc/emh.h># B* O  q1 d# L8 G
  5. #include <tc/tc.h>4 `: w5 g, o0 d; @
  6. #include <stdarg.h>
    " |) t7 ?% t3 V0 ~/ E

  7. 6 H  }8 q: d. P- z( z+ F. }
  8. static void ECHO(char *format, ...)6 S  U8 }5 P6 Z/ N0 i& B
  9. {; B; `/ w% C2 F7 c" p
  10.     char msg[1000];# V7 @) ~4 k/ M" b% B
  11.     va_list args;
    : |5 x  U: O- E8 M; Q' _( C8 }  X
  12.     va_start(args, format);
    ( g0 x$ u1 _4 f4 z
  13.     vsprintf(msg, format, args);* R! B+ o$ s: |/ O5 q
  14.     va_end(args);1 t: g+ T5 B' g
  15.     printf(msg);
    / l# X. p2 {! I. c2 X8 y; B
  16.     TC_write_syslog(msg);8 B+ k; V7 V9 W0 N
  17. }& _" r! s2 l' z2 |3 ?- a

  18.   F0 |* B% Y9 n+ A9 C% }
  19. #define  ITK_CALL(X) (report_error( __FILE__, __LINE__, #X, X, FALSE)): Q! d' t* h7 h5 B
  20. " {% z" F, e$ \0 ]( i* }
  21. static int report_error(char *file, int line, char *call, int status,1 I7 `4 u9 N- B- F, t' F; D# g
  22.     logical exit_on_error)! y4 n; v' b. l% Q' e
  23. {7 S4 L3 `0 b& m3 g3 i
  24.     if (status != ITK_ok)+ m, y# g1 W" t5 Q9 u" c8 T
  25.     {
    0 L/ Z, L9 w) W6 z! S# [( Q
  26.         int& D9 K7 h; l/ `+ O4 Q& S5 B
  27.             n_errors = 0,4 O3 b' s# h, e/ ^: E# u$ R
  28.             *severities = NULL,
    , U$ v0 Q0 s8 h3 R9 _' K- L. y
  29.             *statuses = NULL;* o6 [, ^9 l+ _# s# b
  30.         char2 c9 T6 i& r5 R9 A& r/ e; H
  31.             **messages;! m% ^5 ?3 m/ I, F+ }" J( |# K8 q
  32.   j/ F) I, `/ |# c* B# j# _0 l
  33.         EMH_ask_errors(&n_errors, &severities, &statuses, &messages);
    3 c+ O! l. P% q1 p1 V( z
  34.         if (n_errors > 0)* }. {8 l$ _2 X% }# M8 ]( ]# ~
  35.         {
    . K9 G( _$ J+ M7 e" Q' t3 g1 _
  36.             ECHO("\n%s\n", messages[n_errors-1]);
    1 `8 c+ U' ?+ T& h) ]+ ~, f
  37.             EMH_clear_errors();
    / ^9 _2 P) O: S3 ?+ `% b& x
  38.         }. v1 Q5 j7 m$ W; m/ |8 V" h
  39.         else8 q( j' i6 o6 o' b, o
  40.         {
    7 P, I$ ~; O+ v% t2 S6 b+ U0 a4 H
  41.             char *error_message_string;
    8 g: ~0 u) F* p  i6 ~' W9 {5 \# B
  42.             EMH_get_error_string (NULLTAG, status, &error_message_string);2 b1 I7 c4 L4 M4 {2 q; h+ A. a1 ?
  43.             ECHO("\n%s\n", error_message_string);  @3 _5 H& |' t2 f8 k4 r' |
  44.         }9 ]1 i$ y" X9 e2 z

  45. 0 `% R# X6 ~" m5 `( j3 \1 T* O
  46.         ECHO("error %d at line %d in %s\n", status, line, file);  w6 [4 r4 ^9 i, [
  47.         ECHO("%s\n", call);' }1 Y2 j; ?, F
  48. ! S0 U: o9 ?2 y& ]
  49.         if (exit_on_error)
    : M( o) Q$ h* v8 _; l
  50.         {: J0 ]3 h- z6 `* h& v
  51.             ECHO("%s", "Exiting program!\n");
    5 t: b" T$ {( e) ^
  52.             exit (status);
    % t9 G$ X0 V& ?' m/ w
  53.         }
    * S. I9 }. q/ c- c$ |5 A* Q
  54.     }
    5 S* x  Q$ r) X1 d- q3 ]" X; O
  55. 1 `& [1 o- P2 r- O
  56.     return status;1 T1 x) i7 a9 g$ E- D/ T% U5 E/ _
  57. }
    $ U. B% H$ @% H0 y
  58. ( j1 N7 g0 T/ @! _
  59. : q' \% Z% A# K- p+ j
  60. static void do_it(void)& c& v- p+ U7 e) ^
  61. {. ?" C! C: \+ u) j. a  U
  62.    // write your code here
    $ o  Z8 M& |: h: Z% M3 |
  63.    8 S- f% h$ I9 c" U$ X8 L
  64. }
    : E6 Z% ~' L) F1 m3 Z- b; ]

  65. ! @  F5 h+ N) n
  66. int ITK_user_main(int argc, char* argv[])  i7 V& m  u" p
  67. {: J' b* k  ]+ s/ R$ S3 I
  68.      ITK_CALL(ITK_initialize_text_services(ITK_BATCH_TEXT_MODE));! V1 q0 }1 z& H0 e
  69.          ITK_CALL(ITK_auto_login());
    ) l( V$ F" `! B3 `2 E
  70.      ITK_CALL(ITK_set_journalling(TRUE));2 z* ]$ R9 d! M

  71. ) L7 I% R7 k3 o7 ]& M
  72.                 do_it();( B3 ~# Y. S' l( w! R

  73. " ~! M; }, ?6 F
  74.      ITK_CALL(ITK_exit_module(FALSE));
    # A: y1 R# P6 Z/ E& l
  75. 8 E! ~' j  T, k: F" s1 @$ y
  76.     return ITK_ok;
    1 p! B5 J- t- A7 Z5 u7 @
  77. }2 w) g% c/ y2 q$ o* d# a) o5 F1 m4 S
复制代码

( R% I& n2 `- N4 F3 J$ v! c
3 w+ J3 g5 H4 j9 l6 }8 W3 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

模版下载地址:
- V5 F9 @- X2 k  ~2 R
4 L' s) ]* Q! y5 n1 k$ e$ Phttp://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二次开发专题模块培训报名开始啦

    我知道了