查看: 6377|回复: 1

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

[复制链接]

4

主题

3

回帖

40

积分

管理员

积分
40
发表于 2015-1-21 14:42:57 | 显示全部楼层 |阅读模式

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

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

×
NX二次开发中,默认的开发模版,使得开发NX非常方便,实际上主要是在Visual Studio 的环境下,加入了库的路径,以及一些预处理相关的设置。# t0 e3 o* Y" e7 K; Y# \
关于ITK开发中的模版,我制作了一个,大家可以在这里下载
8 R, `7 z/ X$ Y6 O* s+ Y& P' j9 {; q; R# v, E
此处是给一个报告ITK函数执行错误的函数,方便使用,大家可以替换上面下载的模版template.c里面的代码,直接使用这个。当每次返回的status进行错误获取的时候,直接可以ITK_CALL去捕获错误。这点和我们在ufun中使用 UF_CALL类似!* [  F) b, J) w
# \. L5 ^1 L4 l3 g, e1 a* ~
这种方法省去了大量的调用EMH_ask_errors(&n_errors, &severities, &statuses, &messages)的重复代码!!" S% W3 d& b' V3 A

. b; O9 {' \( J
' B/ ]5 b; P+ T6 [
  1. #include <TCcore/aom.h>0 o+ `& M/ t; G# q) G, P% O& q+ B
  2. #include <sa/user.h>) J# O5 V9 O9 K: V
  3. #include <sa/person.h>
    5 I- Y% b+ |6 G
  4. #include <tc/emh.h>
    , H) ~3 i3 ~" A4 ?
  5. #include <tc/tc.h>! m! k$ G/ @" V% p0 ^
  6. #include <stdarg.h>* r0 x! r$ Y0 n* x3 c/ [" V* [" I; U* Q

  7. 7 @; |" w/ M% c4 i( ~/ n2 ^
  8. static void ECHO(char *format, ...)
    - @# X* N& j; B7 J
  9. {& O7 G# s/ F% I/ w0 p- u
  10.     char msg[1000];2 d& t. k8 v6 e) G* l
  11.     va_list args;+ u0 h; R! z) b- v* C- X
  12.     va_start(args, format);, P" Y; l& l( P& V* w7 U9 S
  13.     vsprintf(msg, format, args);' ^- D0 L! [7 A- M
  14.     va_end(args);
    4 Q# O7 R  |, K2 o- c' [8 K
  15.     printf(msg);$ A! R: n3 v% a+ l; A2 c
  16.     TC_write_syslog(msg);
    6 `3 |4 z* v$ o
  17. }
      Q0 V, P9 F  |! h0 g* E" l
  18. ! S" R8 W, w1 L; _0 A# _; E; J) Y
  19. #define  ITK_CALL(X) (report_error( __FILE__, __LINE__, #X, X, FALSE))
    4 ^/ S. t6 z) ~
  20. ' {7 N6 j1 D0 X5 \  c
  21. static int report_error(char *file, int line, char *call, int status,
    - j4 g# p7 k% A3 C& F8 i4 g
  22.     logical exit_on_error)  p! o' r& C5 X! x2 m# |$ C8 K
  23. {
    5 K# ^$ C( S/ q0 x
  24.     if (status != ITK_ok); _0 u/ Q/ F/ n5 |; T# L
  25.     {* _  i; y! i9 O/ e5 z
  26.         int
    8 x8 K. q) N( _( z
  27.             n_errors = 0,1 S5 c) ~, d1 R; ^& J/ [$ c
  28.             *severities = NULL,
    1 L* C; m; o- N
  29.             *statuses = NULL;
    3 Z; _9 W' \% k* Y- M1 ~* |
  30.         char7 p1 H+ v0 Y5 q2 s- }* _# t1 ?4 s
  31.             **messages;
    8 D8 R# a1 N( O  z( f9 \+ {

  32. ! [- V; H8 o5 j( ~; b0 s: V
  33.         EMH_ask_errors(&n_errors, &severities, &statuses, &messages);
    ( A; I" w, C0 H# \! @0 p
  34.         if (n_errors > 0)0 X9 P% c) D+ ?! F( R* t
  35.         {
    ' g0 Q& K) X& ~' @
  36.             ECHO("\n%s\n", messages[n_errors-1]);7 H1 a8 ~( m. j0 W1 H, O9 W8 i
  37.             EMH_clear_errors();) ~/ }2 R4 k8 O- r4 x1 l
  38.         }2 y: G' `6 t+ T0 ^- g
  39.         else4 `7 s" M# K( n
  40.         {
    2 |2 T5 A$ [9 w
  41.             char *error_message_string;
    6 ^7 M, r7 F8 C6 o* v5 X4 K9 [
  42.             EMH_get_error_string (NULLTAG, status, &error_message_string);
    $ m% C0 e7 v# {. ~& b  |, h+ `
  43.             ECHO("\n%s\n", error_message_string);
    , E1 P9 `9 ~) ]; v2 z: l) f8 [
  44.         }% S; }. M' P# X

  45. 7 A6 t; E' }$ Q$ }2 v
  46.         ECHO("error %d at line %d in %s\n", status, line, file);
    . Q. f5 b. m5 D2 i
  47.         ECHO("%s\n", call);9 P4 C$ _; e7 C# B2 n

  48. 7 B8 }* j# p7 ^7 c" d  X* s
  49.         if (exit_on_error)
    ) q/ }' o  k! @; @' J
  50.         {
    + {! Z$ G' Y' }1 C0 K$ Z
  51.             ECHO("%s", "Exiting program!\n");
    + w8 @/ z) q! W+ i8 t8 D6 o
  52.             exit (status);" t  F4 q' Z  y) A
  53.         }
    : c+ m  |4 z" ]
  54.     }
    " Y, ^' f" h; P( Y5 j& s
  55. 4 U* _1 b: T5 k* t& G
  56.     return status;
    ' T+ l1 m6 M! U5 ?: e9 j
  57. }9 A& E4 V  C* J
  58. . ?& [8 B7 F0 t; W
  59. $ I2 x4 A0 E9 b3 @* d
  60. static void do_it(void)
    3 {  J( ?8 P% s1 t
  61. {2 ]6 r& F& c2 m7 V$ e0 D* a
  62.    // write your code here
    3 a# v% k& \: _/ a
  63.    0 o* W5 @4 s! R
  64. }3 v/ x& ^6 g9 R, |- ?  k
  65. " {) \/ d6 O& [' N
  66. int ITK_user_main(int argc, char* argv[])8 d- O: U. H5 H
  67. {
    5 M: O7 T& E" r8 i( u/ k6 Z& ~
  68.      ITK_CALL(ITK_initialize_text_services(ITK_BATCH_TEXT_MODE));' P' f0 A+ B& n, ]; ?5 @
  69.          ITK_CALL(ITK_auto_login());3 ?/ j5 X* ?. x' H! i( n3 I
  70.      ITK_CALL(ITK_set_journalling(TRUE));
    : `* ]% m+ f3 r* @3 @+ s9 z

  71. : `1 x8 D7 B5 s$ q" n
  72.                 do_it();) Y; D: W3 q: l$ F' I
  73. 8 t* t0 C4 c* A
  74.      ITK_CALL(ITK_exit_module(FALSE));
    $ Q! m+ C! [- k0 u
  75. & Y% h: ?* I, q* G5 I$ ?, ~+ D
  76.     return ITK_ok;" H) @$ E6 k! F: X, h
  77. }
    9 s0 F9 f$ C0 w) r3 {
复制代码
! f! V  S. c, j4 H3 ]

8 a: p; |, t( g/ f0 X% q
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

4

主题

3

回帖

40

积分

管理员

积分
40
 楼主| 发表于 2015-1-21 14:46:15 | 显示全部楼层
模版下载地址:$ j; j3 W1 H! M0 I

4 }) m" C4 S) 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 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部