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

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

[复制链接]

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

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

admin 楼主

2015-1-21 14:42:57

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

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

x
NX二次开发中,默认的开发模版,使得开发NX非常方便,实际上主要是在Visual Studio 的环境下,加入了库的路径,以及一些预处理相关的设置。0 a3 l- W0 c7 s; L% ~5 a: k
关于ITK开发中的模版,我制作了一个,大家可以在这里下载
* O6 f9 D, O& H! @  ^. r- g8 K- _
! K  ^4 G( w) |9 |此处是给一个报告ITK函数执行错误的函数,方便使用,大家可以替换上面下载的模版template.c里面的代码,直接使用这个。当每次返回的status进行错误获取的时候,直接可以ITK_CALL去捕获错误。这点和我们在ufun中使用 UF_CALL类似!: v+ M: G: X1 h- ~

! V$ ^+ F+ M6 f' k! i这种方法省去了大量的调用EMH_ask_errors(&n_errors, &severities, &statuses, &messages)的重复代码!!  @* Z: A5 f" g( j5 f6 y& j

, @9 C; y8 P% Y* O) p, F" ^: O. B; ^1 V( e* j& w4 V
  1. #include <TCcore/aom.h># B, V  _8 g1 u  o
  2. #include <sa/user.h>+ O7 a/ k6 `1 p: M- ?
  3. #include <sa/person.h>, Q! [, F" Q1 C, f. M
  4. #include <tc/emh.h># G- B( E, Y8 c* R# a
  5. #include <tc/tc.h>
    6 U4 y  M& h; }' k( h6 \( F; F; C
  6. #include <stdarg.h>) \6 p4 [! }: C9 w2 Q: ]

  7. 3 T3 Y: M5 T" `7 z1 u4 j
  8. static void ECHO(char *format, ...)
    1 K! I& |/ @, X5 p, \$ _/ v
  9. {
    0 Q2 M; `1 s7 _7 g( M* \7 d  Y; e) f
  10.     char msg[1000];9 r. k+ @( w# ~. b+ U
  11.     va_list args;0 g  G0 D% m% p3 o" a+ |$ H
  12.     va_start(args, format);$ o$ V5 y+ T0 p, q! D$ }
  13.     vsprintf(msg, format, args);% i  I0 y5 `" @8 k
  14.     va_end(args);
    2 H0 e  e: |- D4 f) L
  15.     printf(msg);+ N- g/ W" i2 A
  16.     TC_write_syslog(msg);
    ; G7 E5 q$ r/ Z3 u
  17. }/ m; o' m$ {( c, K0 ]* ?1 h& s

  18. % }0 \4 Y( N, m; u5 u: K
  19. #define  ITK_CALL(X) (report_error( __FILE__, __LINE__, #X, X, FALSE)), v. |7 I. ?' `

  20. 5 T+ f+ O: W% A  k6 w1 y4 Y
  21. static int report_error(char *file, int line, char *call, int status,
    / G2 N; N- [% }6 d
  22.     logical exit_on_error)# Q& q. a$ W7 S# K7 a) i4 F" o
  23. {+ i1 m, x' U6 w* I0 Z/ M4 @
  24.     if (status != ITK_ok)2 ~+ ]( n% Z7 r& x% e6 a; S
  25.     {
    # T8 S1 P* t# Y$ Q. P
  26.         int# ~& j/ K% F9 @9 [
  27.             n_errors = 0,3 D1 a  _- F: ]  |( t; \, F% s
  28.             *severities = NULL,
    ! \1 J# g( ?7 i7 P0 O+ J3 T
  29.             *statuses = NULL;7 y/ l( C. A& u* {
  30.         char) r, Y" }3 L( C) u1 @5 n
  31.             **messages;
    & m" E; {: [0 }( @) ^' I7 B

  32. 0 C2 A: ^/ X& d/ J  J
  33.         EMH_ask_errors(&n_errors, &severities, &statuses, &messages);: a% Q) Y& t2 J* F
  34.         if (n_errors > 0)
    # }$ ?* b0 Q( ?! W6 z
  35.         {2 w  D: L! _8 ?3 ]2 }4 [, o
  36.             ECHO("\n%s\n", messages[n_errors-1]);: D; X$ v0 g3 _: R9 ^4 f1 F
  37.             EMH_clear_errors();2 I5 k% p+ r  C, Y# L
  38.         }
    + X/ S! ~. r) o
  39.         else
    # Z6 \' [3 q4 O. L# W/ _: _0 o
  40.         {
    . L; r7 h# ?. c" X
  41.             char *error_message_string;+ N( \, i& D% D4 N/ _8 y
  42.             EMH_get_error_string (NULLTAG, status, &error_message_string);' r6 i$ n3 F1 h" I; o- \$ a
  43.             ECHO("\n%s\n", error_message_string);* ^; b; V$ w$ w! W! i+ Y
  44.         }
    3 N) U6 |, y2 \9 e0 k
  45. 0 m0 e, \- T9 ^0 @/ O
  46.         ECHO("error %d at line %d in %s\n", status, line, file);
    & L; h* r$ \0 ?+ E3 d! H2 `6 c
  47.         ECHO("%s\n", call);( ]; v2 y6 s# a

  48. 4 R0 Z% o, F& ~8 l- G; e
  49.         if (exit_on_error)! a. j" ]- t" a# f/ y1 N7 u
  50.         {2 t4 A3 a( R& _1 k
  51.             ECHO("%s", "Exiting program!\n");
    ) n& z! ]- S2 b5 k' \# P
  52.             exit (status);
    9 b0 {7 H% _3 j+ w" X+ y. {
  53.         }
    % k/ h" _- ~" H3 n0 W8 Z
  54.     }. K9 n! W& N1 H7 |0 g" J6 z2 Z

  55. " N" \0 c. u. I! u
  56.     return status;
    ) Y$ i+ ~8 e! ^8 N
  57. }
    ' Z( r" I; F: y( R0 w4 P# R

  58. 0 ^, f2 R2 z' a& g
  59. ! i: u& S, b+ w4 d9 _  H$ |
  60. static void do_it(void)  s2 o5 [2 x+ l6 ?6 w* a( |
  61. {; ?/ X& W* I3 F4 M. [
  62.    // write your code here6 H0 s6 N- Y3 J4 R  H) P
  63.    
    * ^9 Y# ~0 V4 t# M4 H1 w
  64. }
    " E& p0 d" U1 t4 Z% P1 Z) _
  65. . |/ C; N" E+ a3 i
  66. int ITK_user_main(int argc, char* argv[]); }0 O* m- D  k6 Q
  67. {
    & W- }, d9 y# y: [# F9 g1 s* g
  68.      ITK_CALL(ITK_initialize_text_services(ITK_BATCH_TEXT_MODE));
    % p  ], b3 s6 [) v
  69.          ITK_CALL(ITK_auto_login());
      \, U5 A/ y' f3 J! l: ^
  70.      ITK_CALL(ITK_set_journalling(TRUE));6 _3 e1 m8 T$ a' s+ e( [- ~
  71. , j# L- s! u( y  @0 ]" }' T& |
  72.                 do_it();9 ?5 F  Q# `6 d9 s! I: [* p+ ~

  73. , }/ a% \. [  a. W  v& n- o
  74.      ITK_CALL(ITK_exit_module(FALSE));
    2 @0 a6 @; v- `' {
  75. ; a$ a6 j5 |+ }3 \; ]' |
  76.     return ITK_ok;
    * \. G* n+ u7 X5 i7 G
  77. }
    / y( }/ \# C  m
复制代码

' }* S! o9 M; B5 |% a- J( ?! a) J% @' y5 L" [; \6 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

模版下载地址:0 K) [+ P; W1 I5 B  g
3 H: K& b# M: a2 d; ~8 u4 r
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二次开发专题模块培训报名开始啦

    我知道了