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

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

[复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82170
QQ
发表于 2019-9-15 08:32:35 | 显示全部楼层 |阅读模式

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

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

x
8 i* v% j2 _! c* H
NX二次开发源码分享:报告装配加载状态,设置装配加载
! T4 p" F, l0 R  q* |6 w
. Z+ Y6 y1 ^, Q0 g, C  r获取Load Options 并进行处理!' z; g" p2 G. T, {
  O" W; P' S3 b" P) D5 e' m
[mw_shl_code=c,true]#include <stdio.h>
4 T2 \0 j6 z: i. g; V#include <string.h>4 t2 h+ y5 L6 l& `* ^7 R
#include <uf.h>
" M. V- ]" N) [4 G#include <uf_ui.h>" h9 S; G! X' ~$ {# m
#include <uf_assem.h>
1 X+ g2 f( d6 `" M, q2 ^
, u2 V3 s4 L/ u, k, S& V! @/ ?, x#include <stdarg.h>4 @0 W$ c) y6 K( o
$ _% o0 [) x: h- p% U& ^0 ]
static void ECHO(char *format, ...)
9 c* x: L+ E; q9 m" ^{& y& S( C  y9 Q( n6 }
    char msg[UF_UI_MAX_STRING_LEN+1];. f" B3 l. x/ g
    va_list args;
7 i1 j' ?3 W( J8 ^( `' r    va_start(args, format);
2 }, W* }& u2 e- J* I2 @  R% V2 v% i    vsprintf(msg, format, args);
5 e: H+ y, S" I! _    va_end(args);
) a/ k4 f2 ~7 }: F    UF_UI_open_listing_window();' y* b+ b( l5 j4 V4 @4 V$ A
    UF_UI_write_listing_window(msg);- f1 s! `+ G3 K  Z" k& d9 @* ~
    UF_print_syslog(msg, FALSE);/ a# a8 x! ]1 G& i0 A. a3 j
}1 `, c) T4 ~# z' m& h- `
0 o' |+ n2 A) v; F# t% q1 |* J, p
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))3 t- d' Y# }+ m* _4 i

6 Y5 `! q4 L& e# N* n8 Qstatic int report_error( char *file, int line, char *call, int irc)
' @% T9 D& D" {7 z3 T4 l; N{/ Z* v* ~; A* H0 [, W2 A
    if (irc)
+ O  D0 Z- P, y- t* P    {
5 u  O, S0 R: h) J        char err[133];! [3 C' D) }, `1 k+ c
* _. O9 @1 I# @8 h4 C
        UF_get_fail_message(irc, err);
6 C, [- {$ Z& y        ECHO("*** ERROR code %d at line %d in %s:\n",5 z4 p, w+ ^* W7 k$ `. t7 ]7 a* \
            irc, line, file);# n" {$ Q  B. C
        ECHO("+++ %s\n", err);* b2 V( E+ x; w% a  N9 N
        ECHO("%s;\n", call);0 w; f7 {; h+ N3 J2 N' ~. N( P( h
    }
+ l- f( @% ]9 k6 @# ^
3 Z: j2 J7 P! E0 ~1 m( r    return(irc);$ P) ]: |, n" f! B
}' u2 u9 A4 R7 }( X

. |1 ^) s  [2 p, |4 P# y' Sstatic void report_assem_search_directories(void)" U1 c. \  ?; K# G! w' e& }
{7 B. |. P8 ]5 ^% Z# x. p
    char
0 i3 g, `6 ]$ h7 ^        **dir_list;
/ Y+ T5 C! {$ h5 t- l1 m, y    int
8 F' ?' \! v7 E! f  F" G8 F        ii,
/ D6 Z: O( i- H$ j5 l8 I7 L& P        num_dir = 0;
- `1 N7 P3 }: l* G( r. q    logical7 b, x' ?9 A' k! P% U
        *subs;
9 s4 o# _) d0 O6 W/ \; M9 J
! N# P+ k1 \! q6 l* H7 ~    UF_CALL(UF_ASSEM_ask_search_directories(&num_dir, &dir_list, &subs));. e  A; d/ u# L0 Y3 Y
    for (ii = 0; ii < num_dir; ii++)
9 o8 x/ e7 e9 r4 R7 s+ J5 {$ g. {; P    {( c8 i+ g+ f. a5 n2 g/ s% s
        ECHO("%s", dir_list[ii]);
" n) K5 G' R( g& F5 u, R        if (subs[ii]) ECHO("...");! j( n2 b- e. l
        ECHO("\n");
5 h# \; h4 B3 p* N1 U    }
8 R: [6 S# v& i. k+ r/ \: O7 M# X    UF_free_string_array(num_dir, dir_list);) F4 ~1 P; `$ a% c/ c4 F
    UF_free(subs);
( |3 D+ X$ |. D/ e. k}" I. N1 Z4 s7 c6 H% q$ U$ y' P; |$ Z

" s( R* k  t5 L3 Tstatic void report_assem_options(void)
+ S- o- F* A0 d* ]/ w! V5 B) V{
$ ?" z% k8 e! s% c' l0 S* o! S    UF_ASSEM_options_t
! e$ a+ t$ v1 b! @" a9 b, a) `        assem_opts;
: q$ U! t) Y2 n; S4 _# `+ w. k
0 q" B$ G1 L% w3 T4 G    UF_CALL(UF_ASSEM_ask_assem_options(&assem_opts));
$ J: o& h. D: S  y; m& T( ^! H
/ W6 G, c- E) q    ECHO("Part Versions\n");6 q  W& h4 n7 G- E7 c2 ~2 ^
    swiTCh (assem_opts.load_options)& R* z; y+ ]0 v3 q
    {0 ]1 Z* F* O2 K  |: z  _1 J
        case UF_ASSEM_load_from_directory:
, I' B" A% |  F2 b1 m9 i: ?/ b" ?            ECHO(" Load = From Folder\n");
9 h. }' v3 O: O5 j3 _1 b4 r# E            break;( _( d* ?5 s" k: J# j
        case UF_ASSEM_load_from_search_dirs:+ R: t, v9 O9 e
            ECHO(" Load = From Search Folders\n");
; T# T7 N% A1 L$ F# {+ ~. J( t; k5 P            break;
( t# E. Q: E5 G$ N        case UF_ASSEM_load_as_saved:
% K9 k8 z7 ~% X: j            ECHO(" Load = As Saved\n");
; ^3 w! `$ R8 d$ A" _) G' x2 p            break;$ C6 P3 r9 o4 t. M
        default:% }! d0 }# a( n8 A" J. q
            ECHO(" assem_opts.load_options = unknown value (%d)",
; @1 t* e+ @4 w/ s" f8 T                assem_opts.load_options);; _5 K4 M  {0 P$ V1 g$ ?
            break;
9 N( {8 k5 }- p( m" L    }
: }/ r/ `* f- k( [, M6 M8 G3 ?" A  I7 q0 I$ u  w! D* ^
    switch (assem_opts.load_latest)
! i( q6 r0 ]* s; u    {
8 t9 N* l8 b* q5 }        case UF_ASSEM_load_exact_version:! ~% H' k2 S: X: q/ B
            ECHO(" Load Latest = Off\n");3 m7 S9 D: `+ t; d) P& B' i0 V
            break;
- M( w9 S  d5 G, y0 C3 y# e! N        case UF_ASSEM_load_latest_version:* x0 e9 c$ x0 I) q5 r+ m
            ECHO(" Load Latest = On\n");+ m# y, l- [7 J  f
            break;
, |5 K- c* U2 b" N( [7 E7 ~* v+ h        default:
4 Y5 L4 h- _+ u) h% P" E+ ]& i            ECHO(" assem_opts.load_latest = unknown value (%d)",9 [* ], K; y3 D
                assem_opts.load_latest);) {/ A0 Q2 W4 h9 N) x- w8 W
            break;
9 |& E; @- t& z1 I) c+ p: x    }5 v9 F" s& S: c

6 R. O) y/ B0 |3 Y+ K, p    if (assem_opts.load_options == UF_ASSEM_load_from_search_dirs)
8 M4 Q/ c' T  Z! u/ q8 }9 ]        report_assem_search_directories();
! K1 M" y% j6 J0 [1 k; l$ y) \
8 ]) H4 ]3 d& E2 P3 |  @    ECHO("Scope\n");, Q. O- W$ G) m4 ~- ?$ e# O
    switch(assem_opts.load_components)
" w0 B/ I1 S' D; {8 ~    {
8 p% p% c3 J# |/ d        case UF_ASSEM_dont_load_components:; R8 C$ H  C8 C
            ECHO(" Load = Structure Only\n");
: ?* [$ P2 w+ E) O8 r- N            break;- G6 ^/ S. L" ?7 m" w* i
        case UF_ASSEM_do_load_components:) G* j, G+ L  Q  ]" m6 }
            ECHO(" Load = All Components\n");# G5 b% y3 [! o( r; S
            break;
9 Y) m( H9 A: R# i/ b9 X        case UF_ASSEM_use_last_component_set:
4 ]8 |' x; C) v  A7 F) f5 z            ECHO(" Load = As Saved\n");
; |0 C$ Y; F3 }7 k. W4 W* `% @            break;% I) Y, E3 ^, ^% O
        case UF_ASSEM_use_last_filter:
: H3 Q% q1 q, ]- K            ECHO(" Load = Re-evaluate Last Component Group\n");* o# z9 ?3 S8 M9 n& M8 m
            break;
  e/ ^" I" D. X4 j2 l+ H" @! n        case UF_ASSEM_specify_filter:
& S1 o0 b' [* e8 W# p            ECHO(" Load = Specify Component Group\n");. ]9 C3 M  U+ x0 q8 T
            break;
& h' a( T; C% _" ?5 D* U( W6 q2 |        default:
: V3 F0 L/ q/ Q& _9 U6 t/ k            ECHO(" assem_opts.load_components = unknown value (%d)",
2 e) x8 v7 n" m# s; ?                assem_opts.load_components);
+ J/ R  k% d/ E( ~            break;0 B: U5 j+ D5 Z! X$ b8 w7 Y
    }  ?: I9 c0 V$ N9 t4 j) l, w
* a7 J9 ?/ j! T9 H* c
    switch(assem_opts.load_fully)
3 Z+ Q$ i9 F* s& M( [9 A* L    {2 P; L: o7 c# P7 u+ }
        case UF_ASSEM_load_components_partially:/ G: s2 h! f1 X8 w
            ECHO(" Use Partial Loading = On\n");" N5 \* L+ d! E, G9 t9 N0 q
            break;
) L" X4 V& I; W3 E7 |, n9 y# k        case UF_ASSEM_load_components_fully:
" C+ I& p$ f- M0 P            ECHO(" Use Partial Loading = Off\n");" L% x( K, D# |& H/ K% i2 f) D( l
            break;& M* p0 J9 \6 k2 P5 r6 M3 I
        default:$ r, _* i' H% ]: w4 H0 R! ]3 \( B* C
            ECHO(" assem_opts.load_fully = unknown value (%d)",
/ M, B+ D4 O0 R( i1 O0 b( [                assem_opts.load_fully);
5 M: k: z" T; t3 u            break;! @$ v, A7 E3 D( L; {, y
    }. w: I1 d: r- F" T9 T5 K
# C" v* y* s3 l+ U7 s
    switch (assem_opts.load_wave_data)- k6 [$ |/ P4 i7 r2 k( g4 E& X; H
    {, Y, q4 \4 R: b/ M/ d- o' |7 b. s- _
        case UF_ASSEM_load_wave_data:* p4 S9 B, ]3 c8 d3 [
            ECHO(" Load Interpart Data = On\n");
, \1 `; W4 U* C) W1 k% Y* J            break;
' J" O: E# D8 Y. S% G        case UF_ASSEM_default_load_behaviour:
; X; y: I1 O3 I- d  S9 n            ECHO(" Load Interpart Data = Off\n");
" Y6 ]( b+ B3 ?7 O" x  }9 t) B6 K            break;
7 p; r( {: N/ o! L+ {: U        default:
# ]4 ]' _% S1 I( h            ECHO(" assem_opts.load_wave_data = unknown value (%d)",
, \$ p: z. v, R8 q0 J9 V                assem_opts.load_wave_data);
6 r: y+ U- J. p6 Q- Z            break;  }3 S. Q/ B: L- f
    }
+ `. \' Y  d/ `* _
' a& r: _: O' W; ^1 w, l    switch (assem_opts.load_wave_parents)
: E5 N8 S: x+ P) B$ L    {5 E  ?- @' l# \, X# D  D7 c
        case UF_ASSEM_none:
  J. r2 s2 [2 b6 |            ECHO(" Load Parents = None\n");% s/ E% O2 E& l6 H
            break;
3 i9 z# R6 c# @        case UF_ASSEM_immediate:
! J( b+ M. h; }; P, I& m: g            ECHO(" Load Parents = Immediate Level Only\n");% }5 a' V) {/ w1 B7 l- A6 X
            break;
! M+ c4 P$ J" i- \: D: i* ~        case UF_ASSEM_all:, B( H% n  Y# y! m1 ~. F2 K( f
            ECHO(" Load Parents = All Levels\n");, ?2 l1 b4 D) {# W% i# l
            break;& I4 r; E/ X% e1 Y) K$ f
        default:
% P+ b2 |+ i5 m, z9 H2 d; \  V            ECHO(" assem_opts.load_wave_parents = unknown value (%d)",
/ }5 i' Z8 t- B( w$ [3 a                assem_opts.load_wave_parents);8 ~3 v' k! i  G% `7 g4 V. _4 o
            break;
7 @. R: O  r5 i    }
7 {  M0 I1 a# Z6 f
1 a+ ~, N5 [2 M    ECHO("Load Behavior\n");
! h* r" u; I! p5 C/ b    switch (assem_opts.load_substitution)
0 A; `3 R* G2 w( Z4 C8 [0 O, t    {
  L2 f; C  T( f; |% E4 J2 U. [        case UF_ASSEM_do_allow_substitution:
3 }, @# H: D* A6 p$ }) ^4 o            ECHO(" Allow Replacement = On\n");1 O" ~% X$ G6 A. k
            break;
0 B+ F& `7 k) n- m7 h        case UF_ASSEM_dont_allow_substitution:
& N7 T  T# k& ~, b$ B, x( k& w( s2 j            ECHO(" Allow Replacement = Off\n");
" j9 i, z. B$ m  u            break;
/ ~2 p) ~% K8 H) w$ Y        default:% s; G& m4 J! U- j' O; H5 Y
            ECHO(" assem_opts.load_substitution = unknown value (%d)",2 f+ u  o+ g* T8 K) R8 R9 u7 j
                assem_opts.load_substitution);8 ?6 ^, F  _. l- E1 u  l9 K0 o
            break;
, G6 I6 R- r! G( h8 I$ S9 I& `    }3 u) S7 [. k* X" T
4 W) Q6 {$ W) c2 J
    switch (assem_opts.auto_regen_pfm_option)  f# d- n3 Q: C
    {2 ]+ G( L, @6 B, K8 b
        case UF_ASSEM_auto_generate_pfm:4 u6 @5 Y, w" j5 i! h8 |6 f, Z1 n
            ECHO(" Generate Missing Part Family Members = On\n");  a# a+ ^0 C, B( A1 d4 T
            break;
7 c/ i$ f0 B8 H: F( a        case UF_ASSEM_dont_auto_generate_pfm:% p$ I8 k6 z5 n1 M+ ?
            ECHO(" Generate Missing Part Family Members = Off\n");
' {* r6 b- u6 R/ u            break;% m, L" o, A0 \. @0 Z
        default:
2 Y6 y6 @# E1 x            ECHO(" assem_opts.auto_regen_pfm_option = unknown value (%d)",
* X% U# n& k& l3 W) E                assem_opts.auto_regen_pfm_option);" E9 P% D6 f# d. A# b9 N
            break;
. `9 S9 P- J* \8 j/ k, z4 Y2 u/ ~: M    }
& s  F! p; m, Z" l% Z2 T
/ H4 o: G* @' h    switch (assem_opts.failure_action)) E: P: u" X) c/ o/ H
    {" ~+ \* T; R) e8 x5 z; v
        case UF_ASSEM_do_abort_on_failure:8 ^+ u+ g- l* o; x) t' }0 I* y
            ECHO(" Cancel Load on Failure = On\n");
. L$ n' U6 k. x1 `. Y            break;5 u+ A: Z& Z# Y- m0 d
        case UF_ASSEM_dont_abort_on_failure:9 c- r1 Q9 z7 W, a& N1 ~+ @
            ECHO(" Cancel Load on Failure = Off\n");, L/ n- ]! M7 a/ _6 Q$ g
            break;3 {0 R) F9 V: }2 ]. y
        default:
4 Y& X- S7 N# t2 [3 E            ECHO(" assem_opts.failure_action = unknown value (%d)",2 {+ F  }' u/ O1 L4 I- c4 z
                assem_opts.failure_action);2 T  L* k' \0 T6 A8 R
            break;: v6 v9 |( n# H  D
    }
5 d" R' Y" K5 f- J. @0 ^
7 Y8 y) M7 E2 M" O% u( c. E    ECHO("Reference Sets\n");9 I4 V- E) R+ u8 T5 l! {1 Y0 [: o
    switch (assem_opts.apply_to_all_levels)1 G: K5 A; e) ]$ ^3 k& g
    {
* \$ [7 O5 t' P        case UF_ASSEM_do_apply_to_all_levels:. {* F  M4 Z, r& f
            ECHO(" Apply to All Assembly Levels = On\n");
& ^/ k% M% L/ H9 ]            break;3 @8 t! [  N& _/ G9 S
        case UF_ASSEM_dont_apply_to_all_levels:
# ]9 X, t/ y" `) z& x1 _7 T            ECHO(" Apply to All Assembly Levels = Off\n");
: ]4 B: L( d& j/ n$ D7 H* r            break;
4 w4 O; F2 o" [$ M  e6 e, W        default:
) _6 N, H( X% o            ECHO(" assem_opts.apply_to_all_levels = unknown value (%d)",+ K2 |' f9 S* t' F! L
                assem_opts.apply_to_all_levels);
9 X/ v# r9 E, E6 _5 N& j# h            break;
. V" e7 I- J& |1 F$ J  K, l    }
# h, v& ?: q  p! Z1 n. r
9 l, a4 f6 r4 T9 ]- w4 y; H  H    ECHO("Preferences-> Assembly (misc)\n");, V/ v2 ~) |/ y9 q9 r! R" W" {
    switch(assem_opts.emphasize)
' `; B) H' S: @    {% x( i& N4 f3 l9 g
        case UF_ASSEM_do_not_emphasize_wp:0 E! x% v% g/ F1 l% V
            ECHO(" Work Part-> Emphasize = Off\n");! M- a& I8 P, D5 a, B' B, s
            break;) [- A  k' ~: D* n$ U, j- }
        case UF_ASSEM_emphasize_wp:, a; m& j1 @2 ?; b
            ECHO(" Work Part-> Emphasize = On\n");$ z0 H) Z3 ~6 v# j8 h
            break;
5 r- F2 |3 I) U  s7 F        default:
, V- P. ^3 f9 F& ~/ f; u5 L            ECHO(" assem_opts.emphasize = unknown value (%d)",! E; U# c; _( p# ~, I
                assem_opts.emphasize);
  E! H, y* \3 K8 o6 O            break;
! Z7 }# ^9 t7 U/ k1 V5 T# O    }7 o, y' _+ T+ l3 g

" e8 f, ?) E% ~/ n' i1 F    switch(assem_opts.maintain_work_part)' z4 T% U* k$ a3 A. p
    {% m" p8 V3 W1 C, _7 x: U
        case UF_ASSEM_do_maintain_work_part:
9 O8 K* |+ B! K, {, B$ ^            ECHO(" Work Part-> Maintain = On\n");8 v; `) j: k$ U
            break;
) y( b9 e# K& w5 b3 s+ C        case UF_ASSEM_dont_maintain_work_part:5 k0 {- ~) Q1 X/ ~
            ECHO(" Work Part-> Maintain = Off\n");! g2 E3 ]+ Q$ F. d4 W' _5 Y
            break;
" J1 g! ?2 B+ V: r/ E; j        default:/ g/ J7 Y' ]% j/ `. U9 G
            ECHO("assem_opts.maintain_work_part = unknown value (%d)",
' m3 J0 G/ G3 ]                assem_opts.maintain_work_part);: l- Q4 `7 A- Z" c. g
            break;
) z# m- Y1 X; h' B2 ?- n% d    }6 q, J; z/ Q6 E2 ~& U, c: M
    switch(assem_opts.update)- d  r2 _* ]2 n
    {
* N5 p, B6 R! {% k        case UF_ASSEM_no_update_report:
8 k6 E+ L; Y6 E$ }, J            ECHO(" Display Update Report = Off\n");
7 M. d  G9 b' k) `! u( m: `2 A            break;
# c& ^0 f+ Q4 q        case UF_ASSEM_update_report:- H* ^# j6 h; E* b) H4 v4 i. u
            ECHO(" Do Not Display Update Report = On\n");
! S- F8 ]+ M- _% h4 \9 R            break;
' r- j6 |# ]: A& X& I2 \        default:# M8 W( e" [: k5 R0 H
            ECHO(" assem_opts.update = unknown value (%d)",% G7 p" s  u  s( Z" l2 }$ j
                assem_opts.update);
' m, Y0 w9 F, w            break;, T0 H( p9 ]. F* W
    }
: A3 W1 x6 D( ~3 t$ i}
; E1 z0 f( c4 W9 z( _2 i2 f# v) h* A5 d4 S3 \
static void load_specified_load_options_def_file(void)
$ M; @. f3 `1 i9 Z{3 o0 b1 K- q4 C* d/ l
    int1 }4 Z9 g  x: J6 b, J) i" r
        resp;
% l: r/ q/ f# ~2 W( `    char1 P  Z# d; ?& f3 ]4 |1 j8 O( \
        filter[MAX_FSPEC_SIZE+1] = { "*.def" },
; B% ~4 I2 v# h6 T0 |0 X2 G1 U        fspec[MAX_FSPEC_SIZE+1] = { "" };3 g/ f; q! _4 V8 O  \

- d, K6 u% Y) V, G    if (!UF_CALL(UF_UI_create_filebox("Enter load options file to restore",% r7 W0 O. T7 r0 a. ^+ n9 L0 R& H& M
        "Restore Load Options File", filter, "", fspec, &resp)) &&: D5 k& M7 G# b, M: r' c) L
        (resp == UF_UI_OK))
/ Q$ }( O8 @/ G' C  E! r, @8 z        UF_CALL(UF_ASSEM_restore_load_options(fspec));2 U6 o7 R. `- l7 h6 s) v1 v
}
( d$ {3 W0 K* p( t, r% k2 q" L
) y! [! l7 `" o3 H5 xstatic void do_it(void)
" d5 P* O2 B8 d; v{# p6 b3 x1 i- s. g
    ECHO("Current load options:\n");
* l. A. u. B! B    report_assem_options();. o( K! _) R& F' t" D
& t6 w' Z# ^7 e2 |" K( x- ]2 ?
    load_specified_load_options_def_file();4 `1 Y' I) Y0 g+ J8 W- N

9 y! b  d  j( o7 w1 _/ |: m( L) ]    ECHO("\nNewly restored load options:\n");& M( J+ x# _9 F/ ^% i
    report_assem_options();
  D. t1 k. K, u' W% g' a}
! Q1 M/ ~; q7 z
5 M5 v% a; M% y" Q4 {% f" i4 b/*ARGSUSED*/
7 `8 c1 h4 }8 K9 w7 ]# I; Nvoid ufusr(char *param, int *retcode, int paramLen)
( a/ _) T% z, Y) _# z{3 X# D2 }. x0 H& i' f# g
    if (UF_CALL(UF_initialize())) return;
3 {- J' t$ `/ N' A    do_it();- W7 L# m5 B3 Z
    UF_terminate();  O5 \- `% S- z) r$ I
}
  z; a2 V8 `3 n2 I6 b! {' u6 s, G' f2 ~5 F" l
int ufusr_ask_unload(void); X+ s$ X% h" N1 z% B: b" s
{
  i: \+ h6 a! S( ^    return (UF_UNLOAD_IMMEDIATELY);
* {, a6 v% a: m; H}[/mw_shl_code]
9 {( V3 M% D0 h6 s1 @+ N
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了