PLM之家PLMHome-工业软件践行者

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

[复制链接]

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

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

admin 楼主

2015-1-21 14:42:57

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

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

x
NX二次开发中,默认的开发模版,使得开发NX非常方便,实际上主要是在Visual Studio 的环境下,加入了库的路径,以及一些预处理相关的设置。; M/ Q) P- n( D, J" I8 r- \
关于ITK开发中的模版,我制作了一个,大家可以在这里下载
6 l: c0 d) U& f; X  S# p6 x
2 u& M( e. t# @: L7 f7 p" W此处是给一个报告ITK函数执行错误的函数,方便使用,大家可以替换上面下载的模版template.c里面的代码,直接使用这个。当每次返回的status进行错误获取的时候,直接可以ITK_CALL去捕获错误。这点和我们在ufun中使用 UF_CALL类似!
+ q! m& a% p  Z$ H2 T# K9 Q) @
8 U. H4 [' h8 b/ B这种方法省去了大量的调用EMH_ask_errors(&n_errors, &severities, &statuses, &messages)的重复代码!!
4 [) |0 E9 |) z  R& k5 {& ]1 g: b& o: v7 n$ a+ k

, M0 ?0 ~6 T* S/ H8 k
  1. #include <TCcore/aom.h>* h, O. I" _7 w: E! i
  2. #include <sa/user.h>* N; F, p$ t4 q9 h+ [+ s( p4 C# `
  3. #include <sa/person.h>
    2 m1 L- C# g6 `  b! a# q
  4. #include <tc/emh.h>
    , r# w  Z0 S8 `5 A& t! Y- H
  5. #include <tc/tc.h>& C9 e4 C: q* J
  6. #include <stdarg.h>9 J/ K& ]' m8 @
  7. . g! S7 u( s" X) b) D! y! K! g. s
  8. static void ECHO(char *format, ...)- ]1 J/ M! ^4 a6 v* v
  9. {
    8 p" m; e  W7 D0 J! H% H7 Q
  10.     char msg[1000];0 R/ K% P0 f3 _" k3 p
  11.     va_list args;. q7 C( m' r- @9 H+ z6 \: l: X
  12.     va_start(args, format);
    ' m- g4 U( k9 p
  13.     vsprintf(msg, format, args);% {& O, r# w, z3 D
  14.     va_end(args);, J1 @! F2 A5 O4 g% S' m1 u# A
  15.     printf(msg);4 h2 R# p, n* w2 q  J- `2 a
  16.     TC_write_syslog(msg);
    - H- Y* I' ~3 _) q9 B3 S$ r
  17. }
    4 _, m! C3 t. {" S9 E1 p+ _
  18. : x4 E4 V& N/ ^5 i8 A# S0 q. `
  19. #define  ITK_CALL(X) (report_error( __FILE__, __LINE__, #X, X, FALSE))
    3 a0 h9 l1 c6 w8 L0 ]

  20. : |$ Z. L( i! i# _
  21. static int report_error(char *file, int line, char *call, int status,0 m# a: X- s: z; z: ?1 Q# I
  22.     logical exit_on_error)
    ; J  t  w+ [1 {, ?6 [
  23. {# ]7 O- h/ j% V2 w$ m! \+ U0 `+ l
  24.     if (status != ITK_ok)
    6 F6 a+ Z6 x6 V
  25.     {% C- z, Y8 x4 W3 ]. ^6 w; h' \
  26.         int
    6 C5 H' {: T0 m; c
  27.             n_errors = 0,
    " q& b! A5 r  ?' S2 C+ k
  28.             *severities = NULL,
    ; F& D1 {1 W9 I/ y$ w7 Z
  29.             *statuses = NULL;" V& E- b: Z7 m7 L
  30.         char3 X  B$ ]$ e# E0 b
  31.             **messages;# d* h+ v, V1 Z- k
  32.   g1 Q, k: `1 X8 X$ F
  33.         EMH_ask_errors(&n_errors, &severities, &statuses, &messages);" d" u2 s' r% p1 S
  34.         if (n_errors > 0)5 U4 r/ D! R, ?
  35.         {+ P% [, X) }  T- n! z+ @2 Q
  36.             ECHO("\n%s\n", messages[n_errors-1]);9 x3 v8 ~$ J( W& h
  37.             EMH_clear_errors();( [/ `5 s1 }) E; j4 Z/ x
  38.         }# R# t) Y+ w0 Y/ C
  39.         else
    4 r- w; Y6 c: J9 q, o! X
  40.         {
    9 Q& O" @3 i) a
  41.             char *error_message_string;
      u0 l' e* J& ], P$ r5 o! k7 m* X
  42.             EMH_get_error_string (NULLTAG, status, &error_message_string);
    ) e* ?* z' m- I- q8 H( P
  43.             ECHO("\n%s\n", error_message_string);" ]5 a1 W1 i* g0 }# M3 n9 s
  44.         }
    1 P: G$ k+ G% F1 F/ X4 b
  45. 5 l7 W/ I- `5 E% h; y" H
  46.         ECHO("error %d at line %d in %s\n", status, line, file);
    . l2 _5 N' R8 a7 g7 e
  47.         ECHO("%s\n", call);
    4 X4 N% [3 S- T% W) j

  48. ; [% ?+ X% `, |6 m2 [1 i& r8 ]
  49.         if (exit_on_error)9 F6 d, K- Z; B# w6 H
  50.         {
    ! X! r1 v8 T9 f
  51.             ECHO("%s", "Exiting program!\n");
    " `# q# ~3 n  b5 B3 F) B
  52.             exit (status);
    2 _" D& V7 [# |; e
  53.         }
    4 _9 ?/ q# X5 m4 q. `+ Y; j
  54.     }. Q! V3 z$ s6 N( `  h

  55.   v( e$ @* M5 c  Q
  56.     return status;, B% ?& U/ }0 j- A. V/ `; Z& o
  57. }5 A( ^2 \  d- v' \" G
  58. ! h0 l; e* P. w' t; ^* I$ S
  59. % s5 ?+ M) O/ m& U
  60. static void do_it(void)' u6 |( K+ z; b" U3 x! \
  61. {" c4 a7 Q4 `# I+ d+ `
  62.    // write your code here% \* D+ ^) d& G6 {
  63.    - M# e2 k; Q) M6 |
  64. }6 C3 I" s& x, j$ ~+ |* o. z
  65. " c3 @# ^6 p0 i. \$ t8 n
  66. int ITK_user_main(int argc, char* argv[])/ D. b1 v$ m6 [7 X  k$ C
  67. {
      x( X2 L3 M4 e3 A) ?
  68.      ITK_CALL(ITK_initialize_text_services(ITK_BATCH_TEXT_MODE));% M( g* ^" W* G, o; T/ ?
  69.          ITK_CALL(ITK_auto_login());
    0 c1 T  N# M2 \
  70.      ITK_CALL(ITK_set_journalling(TRUE));
    8 J0 w' `' m1 d* v" h8 x

  71. , _& M8 j4 o) c9 B! d& L2 n
  72.                 do_it();: }. k2 I" i: r

  73. 8 O$ p4 Q" q/ y3 F
  74.      ITK_CALL(ITK_exit_module(FALSE));' G, @1 d+ `0 ]8 Z! @6 n7 {' o
  75. + b9 K0 k3 \3 p& c
  76.     return ITK_ok;
    * [+ W; {2 X1 @. g* Q: M
  77. }
    ! w7 Y: `! c& ]9 y& q
复制代码

5 ]# t" c7 g3 {/ T
& Y" X& K2 t3 r3 ^, F/ c" l
上海点团信息科技有限公司,承接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

模版下载地址:% o, `# O1 B6 E4 f% G" O
; Y" {' t" q3 [+ G- N  J  z3 N
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二次开发专题模块培训报名开始啦

    我知道了