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

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

[复制链接]

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

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

admin 楼主

2015-1-21 14:42:57

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

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

x
NX二次开发中,默认的开发模版,使得开发NX非常方便,实际上主要是在Visual Studio 的环境下,加入了库的路径,以及一些预处理相关的设置。' V& b# c6 D) n3 h2 ^: h
关于ITK开发中的模版,我制作了一个,大家可以在这里下载& K6 o' k$ d! L, G- s# \
) t! m: h" \$ Q% S4 t1 y9 c) `
此处是给一个报告ITK函数执行错误的函数,方便使用,大家可以替换上面下载的模版template.c里面的代码,直接使用这个。当每次返回的status进行错误获取的时候,直接可以ITK_CALL去捕获错误。这点和我们在ufun中使用 UF_CALL类似!
3 c+ h% B0 w6 _2 M9 q7 H. v
9 y; j4 e- h' J/ b8 f这种方法省去了大量的调用EMH_ask_errors(&n_errors, &severities, &statuses, &messages)的重复代码!!
0 k9 y# [( [5 Q  @
- V0 F/ d. J, m$ c1 g
. F, O! h# T+ z3 j' l
  1. #include <TCcore/aom.h>1 v& w2 M( U& G8 T- P+ Y. v) @
  2. #include <sa/user.h>, j4 D8 _7 O5 I+ Y  |) @
  3. #include <sa/person.h>
    ) z% }" B4 c; J2 F5 F
  4. #include <tc/emh.h>+ r9 q# s1 Z) I7 W
  5. #include <tc/tc.h>
    & {  m; ~" V! ^
  6. #include <stdarg.h>3 }0 Y- D: t7 x& V) A: M- z$ n
  7. 1 ~: b1 w8 W$ p/ q7 m0 Y" {- i
  8. static void ECHO(char *format, ...)2 g4 E# i6 M, M% ?
  9. {
    * _9 _' A6 P: O$ ~2 Y
  10.     char msg[1000];
    3 }1 h) ]% |: s2 _
  11.     va_list args;
    / Q. t' j% k5 Z9 p2 v. F& F
  12.     va_start(args, format);! n8 V. B. o: k5 J; ~) n3 A
  13.     vsprintf(msg, format, args);* G) n" @3 z, r: J, F) h7 U
  14.     va_end(args);0 C$ S3 Y- |/ }5 l. g3 G
  15.     printf(msg);, v/ T& u" }" e8 [, |0 N
  16.     TC_write_syslog(msg);
    1 U# h1 z6 ?) ~: d4 E
  17. }7 s; D/ C8 e7 L  h2 G: `

  18. $ e' A. K. {( C9 D9 W& R- a/ W
  19. #define  ITK_CALL(X) (report_error( __FILE__, __LINE__, #X, X, FALSE))! _% r8 w  }, F& `
  20. * B2 t% E3 \, x3 Y+ }
  21. static int report_error(char *file, int line, char *call, int status,
    0 ^1 c' _/ e2 ?$ a' K. |
  22.     logical exit_on_error)" Q1 {% J- i. z
  23. {" P5 a# G9 ~- A* ?
  24.     if (status != ITK_ok)
    % f; p- }5 I4 a1 u
  25.     {) H( {: A% A. E
  26.         int' c$ R5 v0 k" W) G1 J
  27.             n_errors = 0,# q" j4 _. U) H+ N7 a3 M
  28.             *severities = NULL,
    6 h9 ?" k8 g5 v& {7 j# Q
  29.             *statuses = NULL;
    * ~' @$ _' n0 w0 l
  30.         char
    4 R, ~; O7 g- m- S  Z% ], a
  31.             **messages;
    * B0 E6 `; o3 M2 Q
  32. 9 R5 X! q. y# Y9 S" G8 X  \
  33.         EMH_ask_errors(&n_errors, &severities, &statuses, &messages);
    * o0 @. {+ L( n" J4 H0 q3 S
  34.         if (n_errors > 0)( f8 f. d) t1 A. W: [1 h
  35.         {
    # f' a3 j9 ~. P; f
  36.             ECHO("\n%s\n", messages[n_errors-1]);( O" X  S" s& y: |" t
  37.             EMH_clear_errors();) \, Q* s* m0 F& _
  38.         }
    2 u( i6 t/ D9 W; ?/ c
  39.         else
    1 e, C" U; b5 `5 M9 W: q( Z
  40.         {% W) \* n4 ?" O! s! l' f9 ]' L
  41.             char *error_message_string;# R5 }. x5 J/ \
  42.             EMH_get_error_string (NULLTAG, status, &error_message_string);
    * z/ w% c" ]8 T
  43.             ECHO("\n%s\n", error_message_string);2 l& ?2 q; [1 c6 ]9 \
  44.         }
    " ?& _4 s1 }) ?2 F5 G
  45. ! W7 H) A! u4 \% J: w
  46.         ECHO("error %d at line %d in %s\n", status, line, file);
    / H6 K' A9 G0 q: _3 A
  47.         ECHO("%s\n", call);1 S* i, I" ~7 J( y+ O( u2 U

  48. # R- G# b& `" q  q8 R
  49.         if (exit_on_error)
      R2 l5 I1 @) R6 w+ ]9 b" Z" [
  50.         {
    & @: P. p6 `2 ^7 t. F
  51.             ECHO("%s", "Exiting program!\n");8 {0 e! J# x1 K) t: M6 g
  52.             exit (status);
    ! n, e( \4 O1 X6 @6 O3 v
  53.         }: P0 w9 b) x# Y. D
  54.     }5 x- p2 E, r' U4 _7 Z) }
  55. " R. W, z3 n; R% U- s5 j
  56.     return status;
    3 J& ?9 J/ c* I
  57. }
    1 B8 i6 h5 S! P" {" f
  58. ) ?( I, H" ~7 p/ K
  59. 3 W* Q$ z' }* V1 c& N/ Z2 g
  60. static void do_it(void)4 s* p) }: @. w) o7 L
  61. {) o) {: T0 A2 L* ^) k, N8 C
  62.    // write your code here
    2 F8 _6 I/ B% L  e! ^
  63.    6 |" ]0 j& e8 Z5 S9 x9 g
  64. }! D) E% D: @! \
  65. " U/ U, f3 x6 U# ~- W) i
  66. int ITK_user_main(int argc, char* argv[])- Q0 R9 g% `& G. ~- l
  67. {
    0 _4 ~1 @9 T' K7 I. Z% h2 ^
  68.      ITK_CALL(ITK_initialize_text_services(ITK_BATCH_TEXT_MODE));( Q% N# j. v8 E. |7 q( b) b
  69.          ITK_CALL(ITK_auto_login());
    & F4 o% Q6 `( S4 _, [
  70.      ITK_CALL(ITK_set_journalling(TRUE));4 ~5 G$ }) _: e/ c, G" m

  71. ; {8 x7 n8 i+ \. c! v
  72.                 do_it();
    6 Y$ {( z' T7 l$ [+ j9 F7 U

  73. 3 T" m4 b# Z& I, D/ s8 `/ s0 d3 B
  74.      ITK_CALL(ITK_exit_module(FALSE));: U* v+ u0 B8 k0 p# a
  75. 9 n$ o, G+ }2 W. g  D
  76.     return ITK_ok;2 z  \! ]2 S8 x6 y6 c: k  o
  77. }
    % R! @* {$ u8 M4 I1 f$ E
复制代码
* z2 t/ f3 G8 A: X  }5 [. V- L" v

- o7 R6 z* B) K+ M7 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

模版下载地址:
  `7 v  `4 o0 @6 H* [* p6 Z* |+ e; N/ m4 T# N( M" J7 p, F
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二次开发专题模块培训报名开始啦

    我知道了