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

[二次开发源码] NX二次开发源码分享:报告装配加载状态,设置装配加载

[复制链接]

2019-9-15 08:32:35 1705 0

admin 发表于 2019-9-15 08:32:35 |阅读模式

admin 楼主

2019-9-15 08:32:35

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

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

x

! i/ J: N5 n; g7 JNX二次开发源码分享:报告装配加载状态,设置装配加载
) @3 Z% B7 Z+ n* N; l. f# L+ p3 i
获取Load Options 并进行处理!% g6 X# F; p0 r  U9 o/ {

5 r; o: V' |6 L5 g[mw_shl_code=c,true]#include <stdio.h>
9 U+ E/ s; k+ W#include <string.h>
. f5 y' H; n% ^" I% V, s#include <uf.h>
' m) B: i/ v& W( {#include <uf_ui.h>
' \. f' w+ ?* E5 s#include <uf_assem.h>
! d2 a( O1 v+ ~+ t6 E2 J2 R
$ r" E5 s0 F8 W6 ^#include <stdarg.h>, i8 ?" l1 E5 X$ E- r. ]/ e( o
# N$ I9 L+ d9 m/ r; y+ E& d
static void ECHO(char *format, ...)) _& D8 R; K3 z: f8 e
{$ n( t$ w  N6 [+ r" I% a
    char msg[UF_UI_MAX_STRING_LEN+1];+ [, h+ t: G$ u7 c, t3 u9 V
    va_list args;* ]3 I$ i( |$ T  f# W5 }
    va_start(args, format);- h4 ?- Q5 k- S  Q, Z
    vsprintf(msg, format, args);
7 G4 \: \5 L& K5 {4 d7 a" B    va_end(args);
  f- _* r$ a0 p- h    UF_UI_open_listing_window();$ H5 c# ~( Q+ @, l5 x) }
    UF_UI_write_listing_window(msg);
. ~+ n- p+ E* j4 F+ B' z+ ~    UF_print_syslog(msg, FALSE);9 b6 p# h! m1 K/ i' h( x- N% x
}
/ k0 J3 c9 P- C& N) Y
7 V# q8 V- Z/ {  q( f#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
) K( @: o2 r& r; L( B
9 l6 Z  H+ f2 d1 Z. h9 Z9 Ystatic int report_error( char *file, int line, char *call, int irc)
6 i) G8 q! S) G2 }* y{5 F4 a3 s$ i: @) ]
    if (irc)
4 y5 c! [% v# X" W# b' J    {
9 a4 r, E6 M( I# O9 u" h4 b        char err[133];3 f0 U2 p3 O1 [& s- H

3 `+ b* K7 E/ N6 }; o8 k: G        UF_get_fail_message(irc, err);& _9 A# b$ C8 l
        ECHO("*** ERROR code %d at line %d in %s:\n",1 _- E& q- O" m1 s
            irc, line, file);9 q0 l1 K, D" }. u  e
        ECHO("+++ %s\n", err);
& C! \4 C1 p1 w1 J1 _- N% i        ECHO("%s;\n", call);0 w1 t% [) O2 @* M4 _  p5 t
    }
' A/ Q  ]2 o0 t( E
+ h- |  c( U/ \+ B0 N4 d    return(irc);
9 T( L5 k8 Z" M9 i' }}* i  w# p2 d. ~) D& d! @
7 t& S% g$ \9 ^0 s# h! D9 v) z2 p
static void report_assem_search_directories(void)3 m  f+ M9 F0 ?/ S
{
9 o1 n- l9 u' M1 h    char
9 \+ }& @  u4 R$ c0 S8 \        **dir_list;
1 h$ V) [% x. p1 N1 L! u* V; U    int
( ?! e1 v4 C* ]; t: I        ii,0 b: O0 w/ `; \  ^' P: C( y4 K; G
        num_dir = 0;; d1 l) T. W( ~4 @$ w& P
    logical
" _" e% `) G) h7 P        *subs;
: ^  h: k1 B$ c; |, u2 J. l2 ^8 n" g9 a% Z7 S3 D
    UF_CALL(UF_ASSEM_ask_search_directories(&num_dir, &dir_list, &subs));* V1 A$ s: z3 S. V6 ?
    for (ii = 0; ii < num_dir; ii++)
" p$ u+ u  s; r2 N- A6 j    {# x5 i& N) ~* i5 V0 G1 X8 V# B
        ECHO("%s", dir_list[ii]);! b. ?4 q/ d3 G1 r/ y: `
        if (subs[ii]) ECHO("...");1 s! _0 n) c9 K: H0 Q$ X/ P" \
        ECHO("\n");
" n8 a" E  E, [( |    }
2 H( ~+ i7 Y6 x& `/ y& n2 P( z    UF_free_string_array(num_dir, dir_list);
( l5 v% {2 A9 l/ P9 r& ?    UF_free(subs);/ e2 q5 r7 S5 m3 L$ T( w+ \7 A
}' C8 j: r+ H1 L# k0 w

  u; j" @" K" G$ C+ s' z1 mstatic void report_assem_options(void)1 e5 K8 R: J# X! N
{: Y7 H- a) \- {! Z3 o' V, a
    UF_ASSEM_options_t
; E" s. x7 q& F3 L4 ]/ V        assem_opts;
$ X1 C2 _" N' c2 A5 ^6 G) {
' v  \+ Z% T# ~' ]" y1 ~    UF_CALL(UF_ASSEM_ask_assem_options(&assem_opts));
/ U9 G: Y) J; V4 @4 q' i0 `& ?# F# ]
    ECHO("Part Versions\n");
4 i2 |+ E+ F/ S4 v& r    swiTCh (assem_opts.load_options)
1 K: ]' q" P* P0 x9 ~9 Q) a! {5 q' V    {
) q9 e% L- V- x9 l, A; n        case UF_ASSEM_load_from_directory:$ M! S% Y. w9 l% b9 _+ R/ X: C
            ECHO(" Load = From Folder\n");
+ M6 n9 F8 o7 L, s# _% A            break;
8 C( s5 r! d) S9 _7 w        case UF_ASSEM_load_from_search_dirs:
5 W! ^5 J- C/ W5 r5 t            ECHO(" Load = From Search Folders\n");
) j4 @7 B* b) N2 s& |) {5 y& L( j            break;- T) C6 Z# n% p% \
        case UF_ASSEM_load_as_saved:
! A* m5 N; t7 i0 U! W            ECHO(" Load = As Saved\n");
5 g; ]$ p/ n# Z$ ?8 H! o            break;, e$ n9 ~9 P+ a
        default:
( [) X5 f3 j  I; R4 i            ECHO(" assem_opts.load_options = unknown value (%d)",( B4 u; q' k& A3 U% I2 L& V1 T/ W% G# E
                assem_opts.load_options);; M2 n* h; T( ]" C1 D) T2 V
            break;0 {- `' M- J9 j' A- t7 |
    }: ^) O2 k6 F3 z# G* J

6 o% F) o# r, ~    switch (assem_opts.load_latest)
( r9 A8 F) q/ k! P* K! {( W. C    {
8 k! @* q, ~6 C+ ?        case UF_ASSEM_load_exact_version:
: w6 H( {$ L. p! N            ECHO(" Load Latest = Off\n");
2 O1 [: }1 j3 Q4 E, j            break;
3 ~4 f& |2 f& a# ~        case UF_ASSEM_load_latest_version:5 q" e3 x7 X6 b- W8 w! H
            ECHO(" Load Latest = On\n");
# q+ D2 p: S. Z) @2 n            break;1 B( z( [+ D; u1 R- H
        default:
3 t. a* n+ V; S% W            ECHO(" assem_opts.load_latest = unknown value (%d)",
' e$ W/ E# R& r. e% ]                assem_opts.load_latest);$ _! v& ~* e  t5 L
            break;1 P& ^+ X2 T  u0 e5 P" A! |
    }; H! J4 Y, S5 v* r6 N1 K* D& z

+ d! K! V. z' ^: L. [2 S6 Q/ B9 U    if (assem_opts.load_options == UF_ASSEM_load_from_search_dirs)2 I4 a, ~9 w! j8 _
        report_assem_search_directories();5 V1 ?4 F, {# C; b

6 P! j6 V8 P9 s- I    ECHO("Scope\n");9 m0 ~/ r/ z# r5 U" Z
    switch(assem_opts.load_components)
4 R7 d* Q5 [9 B# @( ?! Q    {( \; N8 p; n5 ^9 o# o& G. h
        case UF_ASSEM_dont_load_components:
; e. j, f& w$ z3 L; d( }9 ?            ECHO(" Load = Structure Only\n");6 L2 P7 E8 D- A( Z! N, |% J, j# ]
            break;
* g0 ]$ ^* M8 |# l: G; r        case UF_ASSEM_do_load_components:
. d6 q4 b6 ]/ F' [            ECHO(" Load = All Components\n");' E* M9 S- @  e3 j! \
            break;, f; C: Q2 H+ e% w3 R" i# V% I
        case UF_ASSEM_use_last_component_set:# P( D, c  W" p/ Z: D# T5 m+ v7 C  G
            ECHO(" Load = As Saved\n");0 x, U7 _" G, G/ Z
            break;" \: ?& W: W5 d8 n& |
        case UF_ASSEM_use_last_filter:
" x' a! q1 l7 d4 p1 \! }( r            ECHO(" Load = Re-evaluate Last Component Group\n");7 M9 i& f! T9 M
            break;0 N8 z, J' {5 m, u
        case UF_ASSEM_specify_filter:
) w/ x! C* a3 _: B' Y- L            ECHO(" Load = Specify Component Group\n");9 E1 C; ?9 j4 I. E/ [3 w" ?! f% }& K# G
            break;
$ d- F+ |4 ~  \9 o" t. ^% w( y        default:( K* h- M) ]5 o1 J" w% R9 a
            ECHO(" assem_opts.load_components = unknown value (%d)",7 i5 B% _0 t9 M5 b
                assem_opts.load_components);; ^' G/ d! r( b" h( \( Y
            break;
+ H7 u4 G* k0 t( M4 z    }
8 T  E) i. w; k( }0 [8 _) d: Z  M
  l5 C! x0 j1 v) U5 p5 j, w    switch(assem_opts.load_fully)
2 W* q. A3 H) B# T9 Q6 s+ X    {, ?% r5 a, |" q/ W" m
        case UF_ASSEM_load_components_partially:
7 _/ y0 r& L! y, s" a- M* u! F1 c            ECHO(" Use Partial Loading = On\n");5 H/ u1 T) z3 Z# f
            break;
: h# i0 ]) T6 z6 R        case UF_ASSEM_load_components_fully:1 l0 n8 K: j5 r, b+ Y/ ]
            ECHO(" Use Partial Loading = Off\n");- Z, n; ]  c, j. e, k/ C
            break;
& }7 W- E$ z2 N; ~: g        default:# i- G9 t- ~' g: ?
            ECHO(" assem_opts.load_fully = unknown value (%d)",: k4 A4 ]) v' `: w7 \0 b* ~# R1 x" r
                assem_opts.load_fully);
' ?" t, h& j4 k8 k( G, Q            break;$ o! Q! N: m, Y! N
    }
6 V1 t% y) f* G0 M7 b8 H- H6 {: V* O
8 v& G7 Q0 N; i) q    switch (assem_opts.load_wave_data)
) x) _- E. o: H4 U8 M) Z8 g$ }, Q& w    {
' o, f8 Y0 g4 q1 E        case UF_ASSEM_load_wave_data:
  H% W% m6 j1 [: ~4 R0 [0 @            ECHO(" Load Interpart Data = On\n");
& V: j: f- w- h+ t' ?2 z            break;4 n, j, ~1 g8 g  @; p! k% M
        case UF_ASSEM_default_load_behaviour:
9 K* n" T1 T4 U  O7 `            ECHO(" Load Interpart Data = Off\n");; B* U# Q& X5 N
            break;
* Q  F$ @' n7 z+ k: ~5 c        default:
% f) }, ~6 _( o; U0 ~3 g1 R            ECHO(" assem_opts.load_wave_data = unknown value (%d)",
1 _; {! q, `/ \( U; X                assem_opts.load_wave_data);
' S) v7 n" m, o/ ^1 L            break;
/ h. U" u7 [! W2 I) U( c' K) C! k    }
4 l) B1 f+ S* ^" T- e* u( h
* A( j* D3 \5 k& b% F) S/ l    switch (assem_opts.load_wave_parents)9 w# i! f  x2 s! U( {
    {1 \5 R2 P; |) X% `& A
        case UF_ASSEM_none:6 p5 ]) K! y) o; m! M! o7 O9 n
            ECHO(" Load Parents = None\n");7 O8 E/ C$ `# t6 A
            break;$ Z0 [, z3 [: U1 W: Z
        case UF_ASSEM_immediate:
" X* a5 b# u" m) r- P            ECHO(" Load Parents = Immediate Level Only\n");
9 s2 M6 z: b# Z( d- z$ o2 {            break;( R1 D4 t( f7 c- R4 a; \4 v  y
        case UF_ASSEM_all:7 f" b4 ^. e5 q7 j  g6 w4 a
            ECHO(" Load Parents = All Levels\n");7 |9 i! {& A! k: C5 [3 `7 Z
            break;
- C* z) J: @& Q3 n7 U- J        default:" n: I9 H/ g) Y1 T$ Q- D1 c
            ECHO(" assem_opts.load_wave_parents = unknown value (%d)",( n( e7 E7 C/ J% l) s* [
                assem_opts.load_wave_parents);
6 K% E- p% c( P: e            break;! C: k" P9 n! V
    }
' ~, y' p" v& h& _) ~- W* @  L
0 H3 g! P0 ?' F) O$ u    ECHO("Load Behavior\n");
% ?9 t& f5 Z9 `$ F    switch (assem_opts.load_substitution)
. ^' W+ h* g* ?8 y$ n' y    {' |0 t1 o9 G; m
        case UF_ASSEM_do_allow_substitution:
$ Q' g2 e2 O; \  W            ECHO(" Allow Replacement = On\n");& M( k- E! x! N# b% B) \2 n
            break;- Z0 ~+ S: P4 J) Y5 L* z/ K6 n, h
        case UF_ASSEM_dont_allow_substitution:/ g* O; l# W- D0 [& f9 |" k/ O1 R
            ECHO(" Allow Replacement = Off\n");. o5 w3 c& }; K$ W
            break;7 Z' y  x5 P6 m0 \
        default:
, B( J5 T- d9 U9 j, s$ ^            ECHO(" assem_opts.load_substitution = unknown value (%d)",$ l* y) T. D/ V8 s/ F3 f, O
                assem_opts.load_substitution);- U; I. z' p. c. t% t5 z, Z
            break;0 N  ~- H; M3 ~- A- y& b( w. K# D. V- v
    }# x( }3 f9 e2 f: l0 n

7 o! @; N/ {! s( \- y* L4 U1 v    switch (assem_opts.auto_regen_pfm_option)7 e6 g0 h6 m: n/ x' ^
    {( q1 i9 K4 j5 [$ G% A5 o
        case UF_ASSEM_auto_generate_pfm:
' H6 ]" ]4 T' ^1 I0 [            ECHO(" Generate Missing Part Family Members = On\n");
; u7 p% s- }- I+ g7 _! P* x' c3 ^            break;
" y, v. k: V& z        case UF_ASSEM_dont_auto_generate_pfm:
% x  v$ ?* ^0 a            ECHO(" Generate Missing Part Family Members = Off\n");- Q; u$ u) |2 K$ L2 l0 `
            break;6 W& N+ @& i! E: R+ I( M& O
        default:; n) u0 n1 b: ?' Z
            ECHO(" assem_opts.auto_regen_pfm_option = unknown value (%d)",3 h- E! R8 H- ~
                assem_opts.auto_regen_pfm_option);  f: p' s& @  v
            break;
( Q/ i! V% \1 e$ A$ y    }) E7 n$ \$ b! ?% j( `

. \5 F, i) _1 `: x" R1 m$ m& h    switch (assem_opts.failure_action)
/ F5 c# ^# B! \5 p! j    {: ^1 K8 ]& T7 ^
        case UF_ASSEM_do_abort_on_failure:
" }0 F5 c3 f% r5 \3 E3 v            ECHO(" Cancel Load on Failure = On\n");$ C1 [( j2 k4 F0 b( X0 ?. B# c
            break;. B1 T  c; N/ F- a0 `+ R
        case UF_ASSEM_dont_abort_on_failure:
, k' k& k- u5 I3 u0 y  m            ECHO(" Cancel Load on Failure = Off\n");
2 \0 N; h) A) J% w" A0 i" M3 W            break;( V8 Y8 ^& c; [! B1 V
        default:
9 A3 B$ i- k3 o! K            ECHO(" assem_opts.failure_action = unknown value (%d)",
! |: h. E5 o) B5 L                assem_opts.failure_action);
3 Q9 k$ ~- o) f; N# h            break;4 S" W- A& p( T! t5 s6 e. B5 n
    }4 t' T* @' b0 e. y! ]9 G+ \* i4 N
: Y& E- B4 b) f
    ECHO("Reference Sets\n");
0 ~( ?$ ]* ^  f) j    switch (assem_opts.apply_to_all_levels)
: o4 q. m5 J" L8 n% E7 R7 ]    {
# W$ k, k" q0 p        case UF_ASSEM_do_apply_to_all_levels:* w: |3 ]/ i+ B$ r9 n
            ECHO(" Apply to All Assembly Levels = On\n");. K/ ?( p1 z* A/ Q; {3 t7 _
            break;$ f. }5 G. D* S/ M& ~3 Q
        case UF_ASSEM_dont_apply_to_all_levels:
  p8 a; v9 [+ ?8 g6 h1 q# R' U            ECHO(" Apply to All Assembly Levels = Off\n");3 i! c4 b' f$ d4 M  P* J# e* ]8 J
            break;" C, f8 ~, Y! t
        default:: Z5 b! x. z- r: }) @. h& U
            ECHO(" assem_opts.apply_to_all_levels = unknown value (%d)",
7 u  L9 C1 E. [5 L6 p                assem_opts.apply_to_all_levels);
0 R# ^+ N( i2 A+ _            break;: x4 h6 ?& k8 ~/ Y  w
    }9 S5 U. ~1 g4 l' s, N' o) g

) P( n. ~+ _0 [7 s    ECHO("Preferences-> Assembly (misc)\n");6 F; k8 A3 Q/ O! `/ y
    switch(assem_opts.emphasize)/ p" @$ `) r7 i  j, c" p+ ?1 K$ d4 t
    {
% t# m4 }; `. W/ Y( j. b; l: L  \: f        case UF_ASSEM_do_not_emphasize_wp:
2 K- u" ~, x1 J; `            ECHO(" Work Part-> Emphasize = Off\n");1 L0 E8 N3 N9 P* D
            break;
3 u+ ?4 o' [" `6 W' |+ j        case UF_ASSEM_emphasize_wp:
/ o9 \( D/ S- W( U+ {5 X+ h            ECHO(" Work Part-> Emphasize = On\n");" @0 ]* f, k; h  D# _6 Z, ]
            break;
. _0 ~- Y: v  _0 P/ h2 F        default:6 c/ z! W$ l- d
            ECHO(" assem_opts.emphasize = unknown value (%d)",
, k* s( C& o$ N- W                assem_opts.emphasize);+ Q0 o1 y9 ]7 k% p# J
            break;5 B) Y3 E: d4 Z, J. R0 U- p) F
    }" I3 i5 P) P3 `1 k+ v

6 T9 e5 L3 b/ R    switch(assem_opts.maintain_work_part)/ ^/ E- @2 S  y- c" P/ a  z
    {& S# Y% S' X( L3 ], n9 O
        case UF_ASSEM_do_maintain_work_part:# F$ K2 z5 I! H% l
            ECHO(" Work Part-> Maintain = On\n");
! v- B7 Z, m$ d3 i) M            break;
$ n/ v5 m, Y8 g; D2 ]1 B9 R        case UF_ASSEM_dont_maintain_work_part:
' }9 _3 a) ], C9 n            ECHO(" Work Part-> Maintain = Off\n");2 C% [; P6 n- ~, W
            break;
, i1 L9 [* j5 E        default:
% {6 S/ a2 U4 f            ECHO("assem_opts.maintain_work_part = unknown value (%d)",1 g* N  }, J, w; k/ [. ?) o0 Y
                assem_opts.maintain_work_part);
& y' V- N, ?' \& O9 }: d$ ^            break;7 @9 `6 ^% K7 u7 t8 d6 W
    }8 x4 M9 [+ @+ @' G
    switch(assem_opts.update)
# u5 G# t0 F$ k0 h' x    {
! G" R( z: H9 o# \3 w1 d& E        case UF_ASSEM_no_update_report:: l. _- C* [( ^/ ?3 ]5 h  B
            ECHO(" Display Update Report = Off\n");( G- k  I+ U2 a# U0 Q
            break;9 a& f3 I# o: B# L+ y+ I* N
        case UF_ASSEM_update_report:* B+ u2 G) e: d$ K0 o& A' @0 A, x
            ECHO(" Do Not Display Update Report = On\n");
& k& s( |. L% k7 y2 R            break;7 z# j& x5 K4 h1 \8 Y( D3 |) G* [: q
        default:$ ^' k* p# w; _- @+ i. ]4 t
            ECHO(" assem_opts.update = unknown value (%d)",
) I7 A' ^% g2 Y& h% W2 L9 a                assem_opts.update);
% i  f& A2 \8 `: l9 X2 \, ?  z6 f            break;6 o0 L% Y3 q7 q! `9 K0 s
    }& Q# ]3 L) c- h% E7 S$ [
}
9 I7 ^4 ?6 E+ }! n& f& i0 ~  z' l. _5 z% {0 g' K9 u
static void load_specified_load_options_def_file(void)
1 z  o! o* J2 D4 [+ }8 r1 q{: ]; J1 v8 K' h7 C$ {4 m6 J
    int( h' v6 h+ [( @1 N5 C) I! L; Q
        resp;
, Z3 d* J! b+ k" y    char1 [" D: I, Y: ]1 p9 T: R* q
        filter[MAX_FSPEC_SIZE+1] = { "*.def" },
5 P) p9 s' G' Y0 @- J        fspec[MAX_FSPEC_SIZE+1] = { "" };# b6 O1 v7 g% N  u
8 v3 E. E& @8 i- d8 H
    if (!UF_CALL(UF_UI_create_filebox("Enter load options file to restore",8 |4 ~2 B4 [' U: H
        "Restore Load Options File", filter, "", fspec, &resp)) &&- V5 U' ^# \- v' _1 d. Y' y) \
        (resp == UF_UI_OK))
0 ^" F8 x# Y3 q9 ^, p) o        UF_CALL(UF_ASSEM_restore_load_options(fspec));3 w' ?8 h9 u% b7 ]- n
}
+ ~& T/ V4 ^8 ^* B# w% k! m7 b0 V6 a# h0 C% ^4 a
static void do_it(void)
! f7 F2 i$ x6 n- E0 f{2 b; ?% U3 e4 g1 m, \0 U! v9 ?! K+ C
    ECHO("Current load options:\n");
9 g+ I/ ?6 {( L7 u: O; D    report_assem_options();
* c5 F( K! p( F, S3 H
7 Q) w7 f. ?& D$ [  \    load_specified_load_options_def_file();
2 x3 h0 |. e: y  V) D- t
4 q; h1 ~1 d0 `3 B    ECHO("\nNewly restored load options:\n");
3 v$ F$ c3 u8 Q3 g7 I    report_assem_options();- h; z7 K3 ]/ l4 R2 d$ a3 b* c. I  E6 P* N
}
* [* l( {* I+ |; T4 q7 g1 |! x0 o. M
/*ARGSUSED*/1 L2 @% L" j7 `# t6 B6 d. T
void ufusr(char *param, int *retcode, int paramLen): M3 I( j5 v- p( H8 a( |1 a
{! l& [) _( _) H2 A% Q7 T
    if (UF_CALL(UF_initialize())) return;
3 p2 V$ B" i5 t8 p1 N2 d0 t    do_it();
: Z1 u( p4 x5 W; Q( u7 |+ I    UF_terminate();: b8 l7 w+ `7 x
}
9 R3 x2 \0 \* r4 e
8 G6 ]$ v/ U1 ]- W$ iint ufusr_ask_unload(void)
8 J; {$ e+ g6 n% h{
' i) W6 n" M8 n- a( Z  _( B    return (UF_UNLOAD_IMMEDIATELY);3 P' g" F5 u  _5 F. M1 ~5 M
}[/mw_shl_code]
8 z% R  y) y2 Q, s" H# Y1 U  _8 {
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了