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

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

[复制链接]

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

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

admin 楼主

2015-1-21 14:42:57

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

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

x
NX二次开发中,默认的开发模版,使得开发NX非常方便,实际上主要是在Visual Studio 的环境下,加入了库的路径,以及一些预处理相关的设置。& f  N" E# a) u; g
关于ITK开发中的模版,我制作了一个,大家可以在这里下载
1 _' M& m* j. ?& \. i: E* P( e8 U6 ^
此处是给一个报告ITK函数执行错误的函数,方便使用,大家可以替换上面下载的模版template.c里面的代码,直接使用这个。当每次返回的status进行错误获取的时候,直接可以ITK_CALL去捕获错误。这点和我们在ufun中使用 UF_CALL类似!" y) |4 W& v4 h' w" S- J
' Z+ k0 }% ~. }. a
这种方法省去了大量的调用EMH_ask_errors(&n_errors, &severities, &statuses, &messages)的重复代码!!" ]8 S, N: a) `

# P- t# d0 p- p3 \( Y  d: P7 k. e$ z+ C
  1. #include <TCcore/aom.h>5 w- A+ T9 Y" p9 X: `" q3 ~  d
  2. #include <sa/user.h>
    4 B2 i9 ^& \. ^7 J
  3. #include <sa/person.h>
    9 X8 q8 ]" D. C+ z0 i. Q
  4. #include <tc/emh.h>' H% q2 j2 F  r7 f( M) c
  5. #include <tc/tc.h>2 x  c, W$ J" E. D
  6. #include <stdarg.h>* Z7 ~$ Y: p* ^2 R

  7. ; s$ D' d6 K3 i$ d! a- n
  8. static void ECHO(char *format, ...)
    / \6 l8 O( f* y) W
  9. {
    " k/ k$ F7 Y$ L: K0 {
  10.     char msg[1000];. C5 [( k! Y4 g& k! U5 u
  11.     va_list args;
    0 d8 V; y& i' X5 T% d
  12.     va_start(args, format);# E. r& f6 a( Z% F: o
  13.     vsprintf(msg, format, args);: s. u7 t$ Y0 Y7 e4 J  d8 b
  14.     va_end(args);# A/ E- |, K1 B8 X
  15.     printf(msg);. p0 ]8 T9 M2 a  ]
  16.     TC_write_syslog(msg);+ P  Z$ q/ t( t% m
  17. }
    3 t1 m8 v: Q7 y# Z2 U

  18. 3 t8 N0 Q0 K# R: U# b$ \$ G) R
  19. #define  ITK_CALL(X) (report_error( __FILE__, __LINE__, #X, X, FALSE))
    ' ^6 R$ C2 q6 L; N' I

  20. 8 }% h. l4 W! D4 t6 C- K% [$ ^
  21. static int report_error(char *file, int line, char *call, int status,
    " [6 ~! F% y5 L0 e1 i
  22.     logical exit_on_error)2 B& O+ n$ u8 k3 Q
  23. {3 d* b) n) T4 g1 o
  24.     if (status != ITK_ok)
    2 `- D; [1 ?) v( y4 I* F; {3 [& x
  25.     {
    , R. F4 a* @: N, e& e# H: L4 N( D( E
  26.         int3 p" E, V9 B4 S" r  s6 n
  27.             n_errors = 0,0 k+ T- ^  B* O
  28.             *severities = NULL,
    " L8 }3 T4 {+ ]
  29.             *statuses = NULL;$ w5 p0 y8 C; O& ?' |6 U
  30.         char
    5 C- w# M! @2 W1 ]
  31.             **messages;4 [5 j. O# |) S9 D3 f) }" o
  32. " a# M6 b: m$ U/ s3 s3 k
  33.         EMH_ask_errors(&n_errors, &severities, &statuses, &messages);
    , v& }* y* r" e0 G( n
  34.         if (n_errors > 0)$ ]. g4 E# h* N
  35.         {
    $ z- q1 H: e6 d" x! b
  36.             ECHO("\n%s\n", messages[n_errors-1]);
    1 {  c. i1 E0 H0 q$ T
  37.             EMH_clear_errors();3 z& n& P( V' I) [, A
  38.         }, e6 U$ K/ t. m. S2 r
  39.         else
    4 _  ~6 A+ e$ R# Q/ u6 N
  40.         {$ j0 t, L: T; ~( m* |: s: }/ M( a
  41.             char *error_message_string;: E5 R( {: v# H
  42.             EMH_get_error_string (NULLTAG, status, &error_message_string);) ~' S( k( Y* X0 q3 F
  43.             ECHO("\n%s\n", error_message_string);  W0 q9 [. e( [) j. j
  44.         }
    ! p& M, D4 V. n" k

  45. + {9 E+ ^; T# i# S" F$ s2 ^8 M* Z
  46.         ECHO("error %d at line %d in %s\n", status, line, file);
    8 F# j* g+ `7 [( p5 J! n
  47.         ECHO("%s\n", call);
    . Z, M9 L5 w3 n3 T

  48. ( Q, p$ }  C; R9 ^
  49.         if (exit_on_error)
    ' N5 u; ]3 `2 ~' S, h4 C
  50.         {
    3 `) b3 z& H$ f; b6 C0 `. Q
  51.             ECHO("%s", "Exiting program!\n");
    - s5 V: [! {) ?
  52.             exit (status);: k( o9 `* ?9 \9 O6 f. h
  53.         }3 [8 h8 k4 G8 U) E) y' m; j$ t
  54.     }' b5 B! \5 }0 P/ F& w  x

  55. # {1 Q" X: X. c2 a' `8 e! ?
  56.     return status;
    + z5 z8 a2 W" p( |  E8 `* J1 T
  57. }
    ' P0 p1 x, I+ h
  58. $ E/ j( E6 V' [7 ^
  59. & }) J3 I1 j4 M/ @0 _' H3 W6 ^
  60. static void do_it(void)
    & z. m/ @  |; y' u! ^1 v7 [
  61. {
    - o4 ^6 y% m9 L3 s+ F5 p
  62.    // write your code here
    - c% j7 m; I$ r" N  @
  63.    / G3 x* y4 c, C8 N# G+ F, O
  64. }1 v( G! s; v0 |/ T+ P( b4 o
  65. & y; n5 q+ F( P) S. _, S
  66. int ITK_user_main(int argc, char* argv[])
    5 P: Y6 Z; z& E+ _
  67. {4 Y: k" I4 G* Z! Y
  68.      ITK_CALL(ITK_initialize_text_services(ITK_BATCH_TEXT_MODE));) `0 \& z" S& o4 Y% t2 F8 M9 v5 m
  69.          ITK_CALL(ITK_auto_login());
    9 v- w# o! K0 Z
  70.      ITK_CALL(ITK_set_journalling(TRUE));. t5 A2 r' `9 j3 V% [% }
  71. 5 q9 M  C" _8 V; s. I, v
  72.                 do_it();! `5 [& |1 K: F4 P

  73. , B! j& k; r# k" y
  74.      ITK_CALL(ITK_exit_module(FALSE));
    & s9 A" N' ~' o

  75. 2 ]% j* O, _6 E! I
  76.     return ITK_ok;; n# r2 S* C8 }1 R
  77. }
    7 j* ]5 G6 L$ p
复制代码

# [, L1 b/ @) D3 v7 ^
: a+ q9 J3 w1 O7 ^0 ^
上海点团信息科技有限公司,承接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

模版下载地址:
: H& \3 }' A" @# \6 H; N
- p9 b2 {/ K( _8 g# t1 [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二次开发专题模块培训报名开始啦

    我知道了