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 的环境下,加入了库的路径,以及一些预处理相关的设置。
2 b+ k' \# [) a1 @. j7 [0 u关于ITK开发中的模版,我制作了一个,大家可以在这里下载
1 ]2 F$ v) p' a3 {) T9 R( r0 Q& [
) Y* O' I9 X: P1 r! [; [此处是给一个报告ITK函数执行错误的函数,方便使用,大家可以替换上面下载的模版template.c里面的代码,直接使用这个。当每次返回的status进行错误获取的时候,直接可以ITK_CALL去捕获错误。这点和我们在ufun中使用 UF_CALL类似!" \% Y1 m' p& N, Q; U* W& j

: d3 X. J- s; B% }, Y: Z这种方法省去了大量的调用EMH_ask_errors(&n_errors, &severities, &statuses, &messages)的重复代码!!, X! y4 O4 |$ g9 i; B# `0 F
% h4 }; o& F0 C7 Y4 T5 L
, c' k0 W# A2 u! L$ j
  1. #include <TCcore/aom.h>
    7 q& t8 @4 T2 h1 o* k
  2. #include <sa/user.h>1 X3 C4 s( p8 B
  3. #include <sa/person.h>* Q9 Q# R  q  U
  4. #include <tc/emh.h>, z: ?9 r: G4 R- l
  5. #include <tc/tc.h>
    : N/ v- Q, R, i1 K2 R+ Q
  6. #include <stdarg.h>
    % \/ S: Q# a- s, F2 \1 B

  7. 9 v8 k" `$ w7 Y1 g
  8. static void ECHO(char *format, ...)
    ; Y; W6 m! P5 \" w
  9. {9 k0 G, C" a+ D; C/ f& F
  10.     char msg[1000];
    " F. _, y' N" O5 c- h6 k4 A# Y
  11.     va_list args;
    * X4 t* n) b8 g3 j3 j( X/ W
  12.     va_start(args, format);
    * j+ H. e. \# k) B0 t+ O
  13.     vsprintf(msg, format, args);: f5 B: O* u3 w* N7 n
  14.     va_end(args);
    & g6 N; Q" _; O. @% m% J5 a
  15.     printf(msg);; ^' Y$ p8 \% [! _  ?  _
  16.     TC_write_syslog(msg);) d3 P. b: a5 e* J+ s
  17. }' R8 G# o# ^6 S) D& P) l1 o. z
  18. 8 L& F5 T; c& _; ^+ p
  19. #define  ITK_CALL(X) (report_error( __FILE__, __LINE__, #X, X, FALSE))+ C" S: y! D/ S4 V
  20. % x" D. x5 n9 }: Y+ N) Y, O
  21. static int report_error(char *file, int line, char *call, int status,
    : G8 a! p+ `2 G, U7 D, W4 b$ \
  22.     logical exit_on_error)
    ) n1 D5 E+ Z$ P/ j
  23. {
    ( T5 t3 c$ ^7 J& C" R/ J
  24.     if (status != ITK_ok)! c/ e* L: W6 \/ f1 h
  25.     {
    " r/ Q- u/ Z4 u
  26.         int% v1 U; m1 C  q0 G$ P
  27.             n_errors = 0,
    ; ~. K  k5 |" Q
  28.             *severities = NULL," y# v4 w* w$ z& ?, C( x% L) N$ P
  29.             *statuses = NULL;
    # W* z9 g/ ]7 s; Y0 Q$ R, E4 P
  30.         char, P5 ]& A: f3 r
  31.             **messages;
    , _9 E% c1 c8 W
  32.   a) I/ G1 I8 j
  33.         EMH_ask_errors(&n_errors, &severities, &statuses, &messages);
    ; d7 J0 ]' x$ K, J
  34.         if (n_errors > 0)
    1 R2 l  }; v2 U1 \3 T# e
  35.         {0 y/ Z1 G- c5 b! i' K
  36.             ECHO("\n%s\n", messages[n_errors-1]);
    " p; [+ G  K: K* I" Q
  37.             EMH_clear_errors();+ @' ?+ D9 k7 x" e; }0 \
  38.         }$ A% F* W' @/ o, J) S+ v0 o/ h! T& g) q
  39.         else0 q, [/ x5 O- x3 b8 s' [0 [
  40.         {
      `6 K# r3 G5 z$ U( n! P
  41.             char *error_message_string;3 }) n/ d6 L* U; `  V. [6 F
  42.             EMH_get_error_string (NULLTAG, status, &error_message_string);
    % R5 I; E1 {- E' i0 M
  43.             ECHO("\n%s\n", error_message_string);4 O4 \/ W; ~5 `: |3 \9 A# T$ J; M! f
  44.         }! h! Q7 ^+ |% {$ d4 C
  45. 6 [, Q4 w0 i) W2 E
  46.         ECHO("error %d at line %d in %s\n", status, line, file);
    3 ?; M8 a3 `; a! D/ n
  47.         ECHO("%s\n", call);
    - d! q8 V- w% Y' U( O

  48. 7 Y0 h9 w5 x; e# H7 G: K
  49.         if (exit_on_error)
    $ H2 v+ M$ I. W
  50.         {0 A# |" U- P7 A/ H
  51.             ECHO("%s", "Exiting program!\n");
    4 l4 z7 L( M3 D# y. E' d: [1 _
  52.             exit (status);
    4 P% B) o( \* r7 L$ _- F
  53.         }
    9 p: d; P1 x: b3 E: {
  54.     }
    1 Y7 H+ Y1 W: W0 x& E
  55. ; _$ S( u9 ]3 \" |
  56.     return status;
    $ n1 K( \1 u0 k. e9 D& }( A3 j: q0 y
  57. }6 g: R0 m! n; g
  58. % o  |- u5 M! [! y
  59. 1 o8 q& H# |2 W
  60. static void do_it(void)6 I, N+ r8 y" V- ^6 ?8 K- }% N
  61. {
    ( w6 `! P3 `" {! {, d* H2 E# P2 z
  62.    // write your code here
    ' R. y# X' ^2 q7 L
  63.    ; _' y$ I) i( e$ j' J
  64. }) [) n1 U) d( Q5 U: ?# u

  65. - g& \$ j1 o& X& J. A! k7 a6 s
  66. int ITK_user_main(int argc, char* argv[])0 X- J9 u8 ]8 Z* r! z
  67. {
    - K9 q: y, H$ C7 ?, q/ \' e3 ?& f
  68.      ITK_CALL(ITK_initialize_text_services(ITK_BATCH_TEXT_MODE));9 C, `% P1 h7 Q- v; Q( E% O+ U& ?
  69.          ITK_CALL(ITK_auto_login());- v1 l3 |" ^& w  W& F
  70.      ITK_CALL(ITK_set_journalling(TRUE));
    ; V/ k7 Y$ g9 ^

  71. - T; ]/ ~/ ?, ?& i$ ?# \5 t
  72.                 do_it();8 i1 z& Z& r3 S+ S3 ~8 e$ n
  73. 0 Y- f) g8 I7 I9 s% u
  74.      ITK_CALL(ITK_exit_module(FALSE));  m- F4 t4 h  I3 N( ?7 ^% h

  75. : _; J6 H( _  \  o; Z
  76.     return ITK_ok;
    * `! n+ q2 T: s9 s
  77. }
    / J, D5 p/ @3 ~7 d* e8 m
复制代码
* P' k2 Q) X/ j7 I8 E

1 {3 C8 o) c) {5 l, E+ ]% i" \
上海点团信息科技有限公司,承接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

模版下载地址:) T% z! @4 E, _5 C

8 h% U$ t' P. W: K1 y6 V7 Hhttp://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二次开发专题模块培训报名开始啦

    我知道了