PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

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

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

admin 楼主

2015-1-21 14:42:57

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

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

x
NX二次开发中,默认的开发模版,使得开发NX非常方便,实际上主要是在Visual Studio 的环境下,加入了库的路径,以及一些预处理相关的设置。# ?: i& K( b# J$ [3 p
关于ITK开发中的模版,我制作了一个,大家可以在这里下载$ u0 o( s# {3 a1 [: H

. s2 ?" Y9 [6 E: C此处是给一个报告ITK函数执行错误的函数,方便使用,大家可以替换上面下载的模版template.c里面的代码,直接使用这个。当每次返回的status进行错误获取的时候,直接可以ITK_CALL去捕获错误。这点和我们在ufun中使用 UF_CALL类似!% ^( U: I- {! {* h, R" d

  ~3 L/ o1 V; {这种方法省去了大量的调用EMH_ask_errors(&n_errors, &severities, &statuses, &messages)的重复代码!!
& l+ G, l, Z2 n- e1 U& Z+ g* U$ D- w# Q: B1 Y$ Y6 }! u

5 B  I" b; `) O% K
  1. #include <TCcore/aom.h>4 t, U/ p) p3 V1 p
  2. #include <sa/user.h>) n% S2 e+ ^. \! N; l
  3. #include <sa/person.h>" e& Z, ^; K# P# y
  4. #include <tc/emh.h>
    ' Y4 Y8 F. M6 h( V
  5. #include <tc/tc.h>
    + s) ]% N7 K) M0 e+ b7 r
  6. #include <stdarg.h>- z* n% h, L+ l0 N& a
  7. 5 I9 u$ s0 u' y/ `5 x
  8. static void ECHO(char *format, ...)2 k5 x: I/ M8 z# K0 z
  9. {
    $ K9 L  V- w! t# ]3 G6 B' k
  10.     char msg[1000];
    ( Z/ @9 {9 E' C5 t+ f4 {- n" L
  11.     va_list args;# H) I, M7 O9 K) [. r" b
  12.     va_start(args, format);# _3 ~2 m" r9 |5 G
  13.     vsprintf(msg, format, args);
    ! O1 ^$ c7 y4 u1 X1 L6 R
  14.     va_end(args);$ f  S& `4 q# U% U
  15.     printf(msg);+ ~7 Y: {  Y* M! F9 F! x
  16.     TC_write_syslog(msg);
    ) C1 K$ J- _8 K6 O8 S; u
  17. }8 A: r5 k& a  R, a

  18. ; I# l1 g7 H$ n0 n- v8 p- F) R8 S
  19. #define  ITK_CALL(X) (report_error( __FILE__, __LINE__, #X, X, FALSE))  z4 Z$ y! V+ t% u3 e) s" `
  20. ( |! x8 X- r$ x  e: K
  21. static int report_error(char *file, int line, char *call, int status,! X7 @$ [* E# ^  Q4 ]# j
  22.     logical exit_on_error)* M- A) a4 b+ C  P
  23. {
    ; L" v+ B/ |) X8 ]/ L
  24.     if (status != ITK_ok)+ Z1 d' a* i" w& g, `& \. N, f' ?
  25.     {
    - h+ L& N: x) }9 W1 H
  26.         int
    0 g+ Q- Z2 Z/ C1 V8 o2 T! C3 ~
  27.             n_errors = 0,
    8 i: p5 \' x5 I/ f8 @% j3 M0 {
  28.             *severities = NULL,
    4 \& h0 }0 A2 s
  29.             *statuses = NULL;1 D# _/ n/ N( ^2 y! r
  30.         char5 \7 X6 u: O8 j$ ^9 ?
  31.             **messages;4 T* X* f, K. ^$ S/ C* l1 v3 o
  32. 1 f$ V' c" U, A% _; ]) B- ?& j
  33.         EMH_ask_errors(&n_errors, &severities, &statuses, &messages);
    " B" _, i' k' a9 ^' c
  34.         if (n_errors > 0)
    3 b! @) p1 S# z( R  C, D
  35.         {; b# W" |5 A" ^2 j; H1 d
  36.             ECHO("\n%s\n", messages[n_errors-1]);
    - {" u# q3 D  c' u
  37.             EMH_clear_errors();* c& ]7 j' O( p" Y1 {& W' R
  38.         }6 i7 P# n$ D& A# u/ |2 w" e
  39.         else8 K9 J$ O& A' w: X
  40.         {( ~; [( D7 S+ y. ?" b
  41.             char *error_message_string;* b: x* v/ Z5 j8 \
  42.             EMH_get_error_string (NULLTAG, status, &error_message_string);
    ! y. g4 `3 B# q
  43.             ECHO("\n%s\n", error_message_string);
    2 J- g; ]. N) Q$ K
  44.         }
    4 ?) E) R- N, G+ j
  45. % {' [, o5 o% q5 R. [
  46.         ECHO("error %d at line %d in %s\n", status, line, file);3 D' v% U0 `1 v0 t0 m9 g" K3 C
  47.         ECHO("%s\n", call);
    . E, c+ P5 }% u2 p/ g
  48. 8 B; L  O1 L: m: p& o, L
  49.         if (exit_on_error); E* _6 ~% f0 @: k0 t
  50.         {9 H# f# C8 }$ }# L9 L
  51.             ECHO("%s", "Exiting program!\n");4 V, d, }4 i6 k3 n
  52.             exit (status);5 s+ C: `& x) E7 _9 J
  53.         }- |# v1 {  t+ O
  54.     }- ]7 Y0 C/ f/ ?# u2 l! Y$ T0 N

  55. 0 O2 H+ `6 l, @" L/ p% r
  56.     return status;  z4 H6 U7 {9 K6 T$ S
  57. }; F, ~; i' i9 ~+ P2 A7 a
  58. / @' L, y& e$ M* Q- j
  59. 4 S$ L) n- e  H7 a- }1 |
  60. static void do_it(void)# {6 @6 w- z0 t6 z  s
  61. {
    " D( u% D( F3 ^4 O
  62.    // write your code here
    ( }9 T0 _, _( e0 W# [" ?, Y4 c
  63.    
    . |" n' c$ Q$ v1 ]
  64. }
    % D" t& G+ `/ W' F2 t
  65. . H9 C5 h1 f( ~0 n, [! F* X9 r4 ?
  66. int ITK_user_main(int argc, char* argv[])! U! q9 W6 _& P9 w: {
  67. {# Z# N" m' W) R# N
  68.      ITK_CALL(ITK_initialize_text_services(ITK_BATCH_TEXT_MODE));: j# R6 m/ r, |' [
  69.          ITK_CALL(ITK_auto_login());
    4 h! W! u, x/ G! K+ I' e/ A1 D
  70.      ITK_CALL(ITK_set_journalling(TRUE));4 H: v0 k$ `, j  m! B
  71. * B1 o" b( a: }) U
  72.                 do_it();
    8 o3 e6 ~; c1 r2 V6 D0 i( H

  73. ) j0 d+ m5 F- I/ M& o% d# g
  74.      ITK_CALL(ITK_exit_module(FALSE));
    - @, E9 G5 v) [+ E& V7 W
  75.   q' M5 \- Z1 [1 u4 w
  76.     return ITK_ok;
    7 g# M& \6 H- d9 v
  77. }* h: \# P4 w5 Y& I  q
复制代码
; _0 K/ P3 G/ j# Q" v" o6 O- x

5 F3 I1 F  f' C- v! B/ r+ j
上海点团信息科技有限公司,承接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

模版下载地址:( ^' n# t! c4 a  F7 u
5 W- w& y( G6 l
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二次开发专题模块培训报名开始啦

    我知道了