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

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

[复制链接]

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

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

admin 楼主

2015-1-21 14:42:57

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

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

x
NX二次开发中,默认的开发模版,使得开发NX非常方便,实际上主要是在Visual Studio 的环境下,加入了库的路径,以及一些预处理相关的设置。; C" D' I! E6 S
关于ITK开发中的模版,我制作了一个,大家可以在这里下载9 \3 G; g6 v; f  v9 h, }
! ^3 Y4 V1 P' Y% k
此处是给一个报告ITK函数执行错误的函数,方便使用,大家可以替换上面下载的模版template.c里面的代码,直接使用这个。当每次返回的status进行错误获取的时候,直接可以ITK_CALL去捕获错误。这点和我们在ufun中使用 UF_CALL类似!
4 c3 m0 l# m1 Z. {% J
2 z7 m! F" s6 T这种方法省去了大量的调用EMH_ask_errors(&n_errors, &severities, &statuses, &messages)的重复代码!!
: L7 w6 M" o5 B+ h/ y/ _
- t6 Z& O3 T9 q$ M- s1 v
7 I* z7 w1 ]& v* }* t1 a6 F
  1. #include <TCcore/aom.h>' ~" p/ J" t) o# N
  2. #include <sa/user.h>4 ~% k: b6 V' @2 r
  3. #include <sa/person.h>3 }0 b( F+ o3 G7 Y
  4. #include <tc/emh.h>
    ) f8 n( g9 u( ?* H: w
  5. #include <tc/tc.h>
    + u% Z) x% Z: M
  6. #include <stdarg.h>
    7 J3 S0 n; h; A0 \9 B

  7. $ L' Q( l/ U/ p4 d+ j. a4 R/ b
  8. static void ECHO(char *format, ...)1 H& w3 y6 q5 m4 s
  9. {
    & W. x( t( [# d% H- l6 f. l- y
  10.     char msg[1000];# C4 t5 M& `! \+ ]1 v: e- s
  11.     va_list args;
    ' F: \8 M% u- f3 o
  12.     va_start(args, format);
    % `/ K9 ?: C1 n" s3 o" ?
  13.     vsprintf(msg, format, args);
    , k* u1 n/ f1 j+ I- Z
  14.     va_end(args);% Z6 w* r7 J9 h7 u$ Y( |2 r
  15.     printf(msg);
    9 D: N* c8 R( S: l$ l4 x$ R
  16.     TC_write_syslog(msg);( s  _( R! x% T4 i
  17. }6 n' [4 J% S2 v# o$ |

  18. 0 u3 \% g' R3 h: Q
  19. #define  ITK_CALL(X) (report_error( __FILE__, __LINE__, #X, X, FALSE))
    , `& [+ [. v6 K! V8 G
  20. ' J% ]1 b' C' d" N9 D2 n
  21. static int report_error(char *file, int line, char *call, int status,2 h( M; Z3 w2 n
  22.     logical exit_on_error); L5 Y8 z) [7 N$ W+ U( l# s7 y
  23. {
    4 j: K; F. g6 T9 v' N6 U1 f
  24.     if (status != ITK_ok)
    7 w& V$ q' ~$ m  e7 @6 Z2 S7 M, ?
  25.     {
    0 c; I/ m9 D; f0 V8 j
  26.         int
    3 |, `) M5 N" S9 q2 E
  27.             n_errors = 0,( |* a* `1 Y! c7 A! t
  28.             *severities = NULL,
    * e* X  `1 t1 I5 x& J
  29.             *statuses = NULL;
    : z* \; E% I+ _' I6 h0 m
  30.         char) e/ P! G4 {  O& j- x5 q
  31.             **messages;3 i! s8 A& x. d* N1 T/ K

  32. 6 H- i% w1 X% X$ B2 A
  33.         EMH_ask_errors(&n_errors, &severities, &statuses, &messages);" }6 m  [9 R) \) J
  34.         if (n_errors > 0)- L7 y0 ?, k3 N( s/ o
  35.         {' O0 O5 S+ m% P- i6 d
  36.             ECHO("\n%s\n", messages[n_errors-1]);
    + m* O$ h* t  y  Y% ], W, N4 j
  37.             EMH_clear_errors();
    ) x3 s  }& G6 a
  38.         }
    $ }5 B! }- m5 a7 T. a9 p
  39.         else
    0 f# y$ b8 Y, @7 ^$ X+ k
  40.         {! q. Y) Y1 p9 p
  41.             char *error_message_string;
    0 a; o/ Z7 a& h; {! G' x& m, D( L# ^
  42.             EMH_get_error_string (NULLTAG, status, &error_message_string);9 v  r$ r# F" i5 d4 a4 L# w  g
  43.             ECHO("\n%s\n", error_message_string);- a7 h6 U$ y5 {( i) u" ?" V/ v
  44.         }3 a7 U/ {9 r. w

  45. 9 W' i; \4 F9 d4 r+ _1 P+ D! D
  46.         ECHO("error %d at line %d in %s\n", status, line, file);9 u( |  I7 G6 s3 X0 O" s8 \# u# f
  47.         ECHO("%s\n", call);  s' ^. f! T' i1 N# |! H' _0 E9 S

  48. 0 w! p- P; v, y# X
  49.         if (exit_on_error): T) j, e: w( p8 A$ k5 b1 ]  {
  50.         {; D7 G1 k2 g) k% l  A( D) F
  51.             ECHO("%s", "Exiting program!\n");
    , r& O! w% i1 h% m! F
  52.             exit (status);( a) b" W& D. k
  53.         }/ T8 S, R5 S2 y
  54.     }
    3 @) u  z& ?! T! R8 q- a1 o- v$ {
  55. * o+ y4 S. L9 a( e5 E. K
  56.     return status;
    , n( b! D  b% y/ C7 w, P# z
  57. }
    $ ?0 ~1 C3 q9 E% Z1 i7 |1 M! @& ?
  58. : o1 Q% P$ v) ^& u' ?$ F
  59. 6 h& z! k' [; U. i6 m( `0 g4 p
  60. static void do_it(void). o! _/ i& J: |$ K
  61. {
    1 j+ ^4 E/ N) ^  C; C5 c
  62.    // write your code here6 Z' J9 Q3 @$ [& ?0 \4 P
  63.    + f/ K" w  m4 Q/ K" ]
  64. }0 d/ _$ Q5 P* t2 U: m

  65. 0 d7 E% B0 }+ A# Z/ ]
  66. int ITK_user_main(int argc, char* argv[]): X2 Q! i2 I' p; R' s
  67. {) h; ]& w+ J3 W3 h0 T. ]- T
  68.      ITK_CALL(ITK_initialize_text_services(ITK_BATCH_TEXT_MODE));* s4 e- X# E; k9 ~( q, ~
  69.          ITK_CALL(ITK_auto_login());9 ]4 ?# Y% N3 |( N
  70.      ITK_CALL(ITK_set_journalling(TRUE));! I+ M( j; M" z" R) M

  71. . H* U, w6 M5 b% E
  72.                 do_it();
    3 v5 G8 i/ T. H  k5 b6 i
  73. 1 g* p, i' _& b2 ^/ E6 k
  74.      ITK_CALL(ITK_exit_module(FALSE));
    & q3 S5 Q! g0 l

  75. 7 W2 m' K+ n4 Z7 l1 F5 U' o) |
  76.     return ITK_ok;8 Z- Q( c1 g1 Q0 A+ h
  77. }! C, A9 t5 E% ?3 @: ]6 q3 |. F
复制代码
' A" _& v; z# n2 w0 E4 x3 \- n
: I; [  |) Q" F4 \% [( M! {0 b8 j
上海点团信息科技有限公司,承接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

模版下载地址:) v* P! K& K8 C3 F0 t+ ~

" Q. i0 c- R' a* k! L3 ?& Chttp://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二次开发专题模块培训报名开始啦

    我知道了