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

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

[复制链接]

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

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

admin 楼主

2015-1-21 14:42:57

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

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

x
NX二次开发中,默认的开发模版,使得开发NX非常方便,实际上主要是在Visual Studio 的环境下,加入了库的路径,以及一些预处理相关的设置。+ ?& {9 B6 i; o* a9 c, \
关于ITK开发中的模版,我制作了一个,大家可以在这里下载5 L3 S) m6 y; _- w' h
( V7 J" b6 C* V# J
此处是给一个报告ITK函数执行错误的函数,方便使用,大家可以替换上面下载的模版template.c里面的代码,直接使用这个。当每次返回的status进行错误获取的时候,直接可以ITK_CALL去捕获错误。这点和我们在ufun中使用 UF_CALL类似!
9 A9 D7 f5 X6 D: ~
6 s3 t! S8 ~/ A  I' K这种方法省去了大量的调用EMH_ask_errors(&n_errors, &severities, &statuses, &messages)的重复代码!!
. r6 X( Z; \* N6 K; q, L$ {  z1 g; w/ U
2 N6 j  P, z6 ~9 ]* |
  1. #include <TCcore/aom.h>
    5 o6 _* f& x6 |5 K/ B" ?8 ^4 ]
  2. #include <sa/user.h>
    + @2 f4 ^+ X7 L' X7 O) ?
  3. #include <sa/person.h>
    * C$ g6 J5 M: I: `8 T
  4. #include <tc/emh.h>
    - R$ M, r, ]& g
  5. #include <tc/tc.h>" z! x7 P8 L7 S2 d
  6. #include <stdarg.h>
      ]" b5 d7 X8 R9 C% N/ k; u% G

  7. * Y6 k5 L% _( \% b1 ~; s2 B+ ?
  8. static void ECHO(char *format, ...)
    ( [4 s7 D/ w! l# r# n
  9. {
    / H: X9 e& V5 @, |0 }# T
  10.     char msg[1000];8 X" a! r" Y' V. N3 U7 a! k* f
  11.     va_list args;
    # F  l4 N  R. p( x
  12.     va_start(args, format);
    0 g- y) s' e2 z+ h& a1 a
  13.     vsprintf(msg, format, args);
    6 Z6 z$ H6 R: ~7 m* L, q* c
  14.     va_end(args);  n2 a5 H/ R* P0 y
  15.     printf(msg);
    / Y1 E: ~4 M1 c1 D
  16.     TC_write_syslog(msg);
    ' y) w& j1 I6 E# ~% Q
  17. }! ?* G8 V4 L; }
  18. & l# y7 @2 p' w! a+ r1 P
  19. #define  ITK_CALL(X) (report_error( __FILE__, __LINE__, #X, X, FALSE))
    " P; E( Y, J$ S& J( a* p; ?
  20. ! s/ i' B( _1 A$ g; T" ?
  21. static int report_error(char *file, int line, char *call, int status,
    ' y& P; q' c0 e& W: n& K
  22.     logical exit_on_error)
    + V1 T# K8 c3 h- s+ E
  23. {7 F% @! d! @( K- x
  24.     if (status != ITK_ok)
    3 H- H) w" e& k" x$ ^, E
  25.     {
    + F( E4 I8 U9 m; _/ q* D
  26.         int8 W8 ?* r. \8 {; r
  27.             n_errors = 0,
    7 G# C( \* h5 o+ D+ R1 x0 a
  28.             *severities = NULL,: c. U# _4 v% o/ Z6 B
  29.             *statuses = NULL;
    ' ^8 Z! [: w8 i6 F% J
  30.         char
    4 j/ ?  _' K8 J3 H0 Y
  31.             **messages;/ ~/ r5 l# ]8 ]: Q5 n) R
  32. , k3 E) I/ ~& K3 G6 e5 u
  33.         EMH_ask_errors(&n_errors, &severities, &statuses, &messages);
    . V: Z5 g8 H# t) W4 M
  34.         if (n_errors > 0)2 U- r. F$ Q* A/ B
  35.         {6 a4 T" X$ k- k" [# u6 |) ?
  36.             ECHO("\n%s\n", messages[n_errors-1]);
    & T; m( E2 r) m+ m7 J
  37.             EMH_clear_errors();
    5 X  J/ ~, @% x, F: B; j# i5 |
  38.         }% x9 `& i2 g9 f; r8 Z
  39.         else
    5 N) R2 d& ]5 x2 Z
  40.         {
    6 x3 I/ o% L$ x5 i) I, C, a" K
  41.             char *error_message_string;
    ; N7 s3 D8 C, q9 {+ Y# J
  42.             EMH_get_error_string (NULLTAG, status, &error_message_string);
    , R9 x! l& D8 q' w0 i4 i" M
  43.             ECHO("\n%s\n", error_message_string);
    : }+ o3 S' Y$ w+ p0 e0 k
  44.         }, w/ ?- x* m! {! e6 [7 Z, N# }

  45. 8 S3 d. U6 Y5 C0 c: H
  46.         ECHO("error %d at line %d in %s\n", status, line, file);; v' V8 g9 ^0 G6 p/ K
  47.         ECHO("%s\n", call);) \) Q3 ~' `- ^; j( r
  48. 4 [: A1 y8 o( v3 k7 t5 ?/ Y
  49.         if (exit_on_error)
    # C8 w1 H1 z# f1 x7 }
  50.         {
    1 D! s" b& y+ r5 B# {
  51.             ECHO("%s", "Exiting program!\n");
    : F1 j$ y" m. P9 ]
  52.             exit (status);# A7 l# O8 ^+ `0 |
  53.         }3 u6 B! W/ c0 c6 J( h: A
  54.     }% l; H2 Q9 e# W3 C$ E  {7 d6 S

  55. $ S3 q$ O1 N9 b* @! Q
  56.     return status;' |( `# O& q( J! `2 G! A5 B' d- h
  57. }
    # u: j0 n/ I) E  A7 C# U" T
  58. 4 V; t( }% t7 F7 I- d

  59. ' X4 [( E4 u: ?+ V& _
  60. static void do_it(void)' [" i" L" A- Q- R1 H9 ^1 f- `. g* O
  61. {5 R, G: A8 l9 J) V" [' J
  62.    // write your code here4 T# C# |2 u+ g8 y2 {
  63.    
      S4 e; u. ~6 Y4 b: g3 Y$ A, v
  64. }
    & B( y- u# B' Z' \/ d& _
  65. 8 B# {3 n! L  w4 x8 \6 |# X4 M5 H
  66. int ITK_user_main(int argc, char* argv[])
    8 Y+ c; b' X6 s; Z7 t: p# I1 x
  67. {
    - a& T2 J" [4 U* m9 H* B
  68.      ITK_CALL(ITK_initialize_text_services(ITK_BATCH_TEXT_MODE));# F7 @9 O; A  y0 O
  69.          ITK_CALL(ITK_auto_login());4 n* O$ @7 d7 A" r( B
  70.      ITK_CALL(ITK_set_journalling(TRUE));. X: r! ~; b4 E3 M
  71. ; [6 z* z9 @. }1 ^/ s: Z
  72.                 do_it();1 I- ?" l# J5 Z4 b

  73. 7 Q% M9 h7 M( G* Y' ?/ _
  74.      ITK_CALL(ITK_exit_module(FALSE));$ @* e( ~# _6 X* p2 d; X6 a

  75. 4 W. n. K! [7 ^7 G( v$ b' W& J
  76.     return ITK_ok;
    6 q- m9 V2 y" ?( e) |
  77. }5 `, _8 D1 t0 `; D  @
复制代码

4 M' F3 @! }9 F
) a5 p6 R6 B/ D& `* U/ z
上海点团信息科技有限公司,承接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

模版下载地址:
; g8 H' h0 h! [% _
% G0 a# Z# F& C2 t: nhttp://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二次开发专题模块培训报名开始啦

    我知道了