PLM之家PLMHome-国产软件践行者

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

[复制链接]

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

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

admin 楼主

2019-9-15 08:32:35

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

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

x
! k' A$ u3 t6 w& S; E3 m9 A4 d
NX二次开发源码分享:报告装配加载状态,设置装配加载- V' P  W3 ?( \6 F2 {' N1 \/ r0 {( ?

$ G" T8 a8 `6 O2 E6 J: f) O获取Load Options 并进行处理!8 w! W" r3 }1 w* M, H  r

5 Q$ ~' h9 |% V8 O3 s[mw_shl_code=c,true]#include <stdio.h>
, ?! ?$ s' p  o% e( O  D7 k#include <string.h>
* |+ `- M+ t; E#include <uf.h>
5 F# k# g1 }4 k# b#include <uf_ui.h>
9 N" b4 f9 M+ ~6 `, |#include <uf_assem.h>
$ V% H* n( W* {/ O! i1 W5 t. V* u
7 n0 t" s+ {) V* ^! J#include <stdarg.h>1 c2 W/ y9 V/ ^8 A1 @
/ |( t  b, Z  [6 x- s  G
static void ECHO(char *format, ...), I+ J% g' D) D( n
{
, i3 t% k$ e. W7 @% j$ \* u    char msg[UF_UI_MAX_STRING_LEN+1];% k/ I( |" U! ^! \. `% s
    va_list args;
. J7 k0 j9 X& G& ^7 \5 C$ P    va_start(args, format);
6 l* N! R" R. Q8 h& p    vsprintf(msg, format, args);3 s9 i+ T6 P3 q/ g6 |
    va_end(args);. E0 S3 f' P, T- [' b( l2 e
    UF_UI_open_listing_window();
9 R3 j) m$ K3 e3 e    UF_UI_write_listing_window(msg);( b$ G7 q) W4 e& c& E' P
    UF_print_syslog(msg, FALSE);4 ?6 x3 q' I. p. X2 L* C
}% ]: d( A8 j- h) [

7 I! L4 l/ k% ?4 a/ x! y#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
) e7 f, L1 N# _& A  e( L: I2 B
0 ~& o$ e* d8 W3 t# Y/ c0 |9 u7 Vstatic int report_error( char *file, int line, char *call, int irc)
, W# a! y5 X1 J& [$ _$ t. k{
1 a3 C$ L5 i* t3 t1 Z& l    if (irc)
2 X+ T5 f' I5 W% a    {
8 v  I+ {: m& j        char err[133];
& W- }: r1 j& k9 N6 b1 F. \; e1 J2 L8 @
        UF_get_fail_message(irc, err);3 @% {- y( x; G; c" G
        ECHO("*** ERROR code %d at line %d in %s:\n",
! V% ]7 D( z, t  R2 d            irc, line, file);
% h% K9 f: y6 [; U# i3 d' `5 k! W        ECHO("+++ %s\n", err);
+ L0 \3 a( l5 I1 Y7 u' ]" R7 K        ECHO("%s;\n", call);* _9 V" V, R; J. |8 A6 ~+ X$ x
    }
. D  {; o& ~1 E/ R7 e
' ^$ P% V( [5 b; p    return(irc);6 r; w, D& _# J+ y) B+ ]
}! w% j* Q' g* Y9 I; u: x' {

2 d, @$ w- P4 n) A+ I9 Nstatic void report_assem_search_directories(void)" [- d2 i& E% O6 n( l
{* U! ^! }9 f0 G6 |6 p4 T2 k
    char
0 i# K& ?* k) |3 y3 d0 W        **dir_list;6 Y' L0 R: Z% }! M1 U3 \2 b
    int/ ?* b/ t% O+ m" V  Q3 y: h$ |
        ii,
: F. W- W2 R* P: E        num_dir = 0;
; v! l3 I4 p. [" n    logical+ @0 E) w$ V. U
        *subs;, A' |  A4 a/ t

/ e3 \5 f( V8 Z  X' Z5 G2 I+ c    UF_CALL(UF_ASSEM_ask_search_directories(&num_dir, &dir_list, &subs));$ S' e* E* f2 B9 q0 A5 I+ A& u
    for (ii = 0; ii < num_dir; ii++)$ e% a% B7 h, k1 Z0 [
    {
  O# R! u2 r2 T8 f1 v+ U! Q# h        ECHO("%s", dir_list[ii]);4 U2 W  [, K3 f) c! i% U
        if (subs[ii]) ECHO("...");
6 [' Y3 L+ I7 N. Z. W        ECHO("\n");
- }' d" g' [0 ^    }
4 e9 j+ x) r+ _+ M1 T3 o    UF_free_string_array(num_dir, dir_list);
9 i  `+ b2 Z1 @- E8 s1 z    UF_free(subs);2 Y' C5 s) J! R/ f# N* R
}
% A6 ~/ `+ }  n8 P/ h+ h+ K& ]$ X
static void report_assem_options(void)
9 ?8 I- w5 G; ^; o% r, |{
8 @7 ?0 L8 X1 h2 Y1 D    UF_ASSEM_options_t" f8 f; K7 W; f' W2 U
        assem_opts;
/ h; O6 T' k2 {' _; G, C
% ]$ z6 V7 M: Z- s2 i    UF_CALL(UF_ASSEM_ask_assem_options(&assem_opts));. U+ D) ?9 G0 ?6 o" L; H
% i- t# h7 @  B* V$ H
    ECHO("Part Versions\n");- H* U8 I1 }6 p* Z' P
    swiTCh (assem_opts.load_options)
% w  @8 o$ M5 ]' ]. n4 u( u) E    {
- @2 n8 v* u( o" m1 g; F        case UF_ASSEM_load_from_directory:
+ s# `# D% ?; A            ECHO(" Load = From Folder\n");
6 m2 S. J4 I( a+ O6 \0 B& S            break;1 |8 r3 ~$ \+ R( }! f, ^
        case UF_ASSEM_load_from_search_dirs:: x' a+ z2 s) J# u- W& D
            ECHO(" Load = From Search Folders\n");
: v  Y7 Q' n" a) ^            break;
5 O/ I6 ~% B2 d/ L& b        case UF_ASSEM_load_as_saved:( [/ b. g4 ]  s2 a$ h) {
            ECHO(" Load = As Saved\n");
1 G3 \* U# J5 {8 _% F- V            break;
' X  D# p' N6 U/ n4 B0 s+ X        default:
/ o& r& M$ Q$ z            ECHO(" assem_opts.load_options = unknown value (%d)",
! {& i0 J( X- z6 r8 ?3 I                assem_opts.load_options);
$ S) P6 G5 M& ~% T            break;
8 ?  |" n! ^% F  P7 s) y    }
/ v! X' r0 Z6 `) w) L$ B. P5 P
7 {1 a0 N- r+ U+ ?1 e  @    switch (assem_opts.load_latest); O; U9 B& j+ g' B+ t+ f/ d- [
    {( Z4 i  s! m( C& h* D" S) }3 u# D
        case UF_ASSEM_load_exact_version:
- q4 B3 q/ \& t& B            ECHO(" Load Latest = Off\n");0 C# V4 }% m3 V1 {( }0 @; `2 ?- c
            break;6 \/ u, O0 k. `7 F$ f8 r- l* h
        case UF_ASSEM_load_latest_version:
2 n: k, D: G3 \. \4 ]            ECHO(" Load Latest = On\n");0 L4 _( R' J2 D* Y
            break;% G. g5 V6 v8 K; j/ K6 N/ g5 z' L
        default:# R; h) n$ K8 \# ]8 F6 b# L) O
            ECHO(" assem_opts.load_latest = unknown value (%d)",
/ q" u* f- R% f0 k                assem_opts.load_latest);
/ p# t$ q! {8 @            break;
; ?" N# K( O) c0 |" d' ^    }
2 g- p4 }6 r8 d: G0 ^9 G
0 ?$ j, s0 ~% h) Q    if (assem_opts.load_options == UF_ASSEM_load_from_search_dirs)5 n  S$ v* z8 q* A" h$ z
        report_assem_search_directories();
" v5 f( D3 i# i) D4 d! _  T. Z
) A/ ~, A4 o+ U8 s: l+ i) ?/ D8 N  E    ECHO("Scope\n");
, k! J; q4 b0 C    switch(assem_opts.load_components)
; J3 [, Y8 C6 R/ y: l% o' _( v    {6 {3 S$ @3 k" u- b7 {' Y) `
        case UF_ASSEM_dont_load_components:
8 _& S" i2 ?# Q+ r" `            ECHO(" Load = Structure Only\n");
2 }0 Z: i0 W+ F, O0 l* N            break;- e( ~& U0 o8 r. o3 w. A1 [& O2 f& t
        case UF_ASSEM_do_load_components:
2 C/ I) k! }/ K" e( Z" [4 n" s            ECHO(" Load = All Components\n");9 J0 [  c( J9 R& m) y$ ]: \1 N
            break;
4 _1 O; K. p' Y        case UF_ASSEM_use_last_component_set:
5 K7 ]# n5 W0 X1 K/ X            ECHO(" Load = As Saved\n");
# q2 \4 C: h( X) [( l            break;
1 z% q0 B* E0 I, e2 u        case UF_ASSEM_use_last_filter:
8 U1 T$ j1 K; P! E            ECHO(" Load = Re-evaluate Last Component Group\n");5 g6 q! o! d: N) f- I" X
            break;7 H+ E5 s0 v) L
        case UF_ASSEM_specify_filter:2 b4 {# ^% R3 J# w% {3 n6 `4 ]& M
            ECHO(" Load = Specify Component Group\n");* T9 m! v; }8 U* W6 _4 K0 l
            break;
% U3 a$ Y( o8 D; P  i        default:
/ u4 I1 M: K* O" e9 h            ECHO(" assem_opts.load_components = unknown value (%d)",
% M3 o: `2 v" B/ F4 E                assem_opts.load_components);. ?, V  z: a. F) c
            break;
" d2 a* |" r: J- R; g7 _8 {0 T    }9 r/ p) t% D% |& ^
+ E9 {: d/ n3 z# n; u
    switch(assem_opts.load_fully)
2 W! P! j/ t# X6 L8 s3 N' q9 ~! u    {& C- }; v' ]3 K* |. F# e
        case UF_ASSEM_load_components_partially:9 i! l/ M7 o6 x; D
            ECHO(" Use Partial Loading = On\n");
4 s0 P/ Z: t3 P" R3 Z, a            break;
' a# \! ^6 x8 `% i" ]' G  O+ |        case UF_ASSEM_load_components_fully:9 @; o7 D# P! G$ i, r, z* ^
            ECHO(" Use Partial Loading = Off\n");
; G) k: |/ S4 }6 R+ U. r            break;
. z% V$ |/ N- q        default:) ~; \' Z& o# W3 k4 z; A
            ECHO(" assem_opts.load_fully = unknown value (%d)",
% F5 ?: i* ?/ g: \; F                assem_opts.load_fully);
3 R% I+ O  R! B  ^' e            break;: e& [2 {6 r! }4 z# e
    }# u- d0 Z+ P# P) H# A. V8 [  g9 F- T

5 K% F) x' t" R3 b9 U' }) {    switch (assem_opts.load_wave_data); Y4 ~3 }# G; Z
    {$ n) z- f  _7 n( p8 h6 W7 U
        case UF_ASSEM_load_wave_data:
% d1 D/ t) `& `& D            ECHO(" Load Interpart Data = On\n");
) s4 \) A' m# [, V. @            break;
( h6 C+ b  X8 [3 j        case UF_ASSEM_default_load_behaviour:/ \% k% i. o2 d4 G5 t6 S
            ECHO(" Load Interpart Data = Off\n");) t2 _  ~4 R) h; e1 s+ q
            break;
% c' j, \' \$ t7 |! F! c% Y7 y% B        default:
, k1 z. G  Y8 p' M- k            ECHO(" assem_opts.load_wave_data = unknown value (%d)",% L: T5 g5 H6 K# l- N
                assem_opts.load_wave_data);' ~5 ~5 T+ c' q
            break;# [: w1 Q6 t8 Z! k( W  O
    }4 v# O: [3 V# c" V
/ X8 }8 t" r. m) z; R& r
    switch (assem_opts.load_wave_parents)8 ^+ ?. p: e( f
    {
! h6 O9 m) G; g: y) \5 {        case UF_ASSEM_none:; `! N5 s9 V+ E# M& s- E4 Z/ C
            ECHO(" Load Parents = None\n");
) c0 N3 H1 H( f8 s4 C            break;
4 o+ R% q9 g0 B! D  p        case UF_ASSEM_immediate:( K6 h6 e9 b8 Q. C' ]) G  l7 R% E% `
            ECHO(" Load Parents = Immediate Level Only\n");! M  C# D$ J2 N' J+ f2 t4 T. A
            break;
, a8 R4 w$ U8 G5 f9 N7 K% i8 R        case UF_ASSEM_all:
: R. q7 W0 ^4 I5 u% M! U            ECHO(" Load Parents = All Levels\n");: c8 P$ E- w' D3 y: A
            break;1 \7 q$ p7 W6 A& r/ U, U3 ?
        default:
6 w7 q7 B% h7 Q( K            ECHO(" assem_opts.load_wave_parents = unknown value (%d)",
* D5 V  I! d5 j                assem_opts.load_wave_parents);1 \) s6 y2 o  ~1 D, O( t; r
            break;  o- [7 ~, a( _. P) \
    }+ f. w8 U) j! l+ H2 u. w, v  _

) O- e% C. E4 X! v    ECHO("Load Behavior\n");. ]+ T" b1 t% e& G/ Z
    switch (assem_opts.load_substitution)- j( U" _! f9 R- @8 S* j& C9 B( Y
    {
. H( z- D/ E- t4 v( A, q, F        case UF_ASSEM_do_allow_substitution:+ g4 G9 ?: f* h6 l2 Q$ T
            ECHO(" Allow Replacement = On\n");
( r2 Y. N' W1 U8 e- E5 C1 Q% V            break;
* |$ ~! G/ {. Y+ G* N4 Y  u        case UF_ASSEM_dont_allow_substitution:' j* R" G$ u$ m" `; e$ F3 t% x( M+ Q
            ECHO(" Allow Replacement = Off\n");
2 X; Z/ q# |4 {% p/ n0 w            break;- N, _- Y* }1 w4 M
        default:
& ^- u2 z" p( i) S+ |% f            ECHO(" assem_opts.load_substitution = unknown value (%d)",; y& \$ m# r8 k4 X7 D; k' T6 e' V
                assem_opts.load_substitution);
7 B5 I9 c% x  y* |% e/ G$ `5 g            break;
# t; u4 f; ?6 }( E1 N( C, x    }- O% r6 L) D3 }9 p0 ?
  l$ s1 d/ }- ?( W% Z! s
    switch (assem_opts.auto_regen_pfm_option)
" G% z! D  q8 }  c4 V) M! q    {
% q( O3 C6 e# r8 z8 Z( j5 N+ [8 ]        case UF_ASSEM_auto_generate_pfm:  w1 @( c/ }# M5 n% b. w
            ECHO(" Generate Missing Part Family Members = On\n");- F* i, T* E. X) A( L0 E
            break;% N( \1 o; k* M" a. i
        case UF_ASSEM_dont_auto_generate_pfm:
2 s/ y5 z, b: n( a$ d1 d" N: @            ECHO(" Generate Missing Part Family Members = Off\n");
6 h' O0 G$ y2 z, T            break;
, a  ]! D, I2 t! @$ h1 Y3 S        default:
3 r6 r3 k. l! G+ S9 p7 _4 d            ECHO(" assem_opts.auto_regen_pfm_option = unknown value (%d)",# P$ j/ r4 V0 h) K: ]
                assem_opts.auto_regen_pfm_option);' r/ _% k6 I' e& G, J2 Q
            break;
" w4 p+ M! q! S) t# g9 U    }: g% @/ ^" n: L: d+ w7 Z. ?

6 a& `. a$ o8 ]; m# ^- i: u6 d6 G    switch (assem_opts.failure_action)
3 m1 x) j4 x. @& _3 J8 \    {. K9 j3 E+ ?/ n/ N- V
        case UF_ASSEM_do_abort_on_failure:
4 h, v. P) R' P' q" k% Q            ECHO(" Cancel Load on Failure = On\n");/ d' x7 z+ }8 ]' m/ G
            break;
4 i0 G( ~# a9 J) H* @% f( G8 T        case UF_ASSEM_dont_abort_on_failure:
; B* d5 W2 X) c: Y8 r( C) b: }            ECHO(" Cancel Load on Failure = Off\n");
' t5 ^- n. N8 {7 e9 W* H9 y4 t5 k            break;
' l- W; |# D7 V        default:
% _" L& N# ~6 O2 f+ \            ECHO(" assem_opts.failure_action = unknown value (%d)",
4 n$ K8 u/ \% P9 [; i- l                assem_opts.failure_action);( k$ {( J) D% Z. {9 M2 O9 y
            break;) p! k+ Z) B2 h# h% j+ }
    }
& l6 M, l& T+ M$ j
! B3 Z( c3 v& k2 Z' q' p! w3 j; M    ECHO("Reference Sets\n");
) z- G# g$ d' J  d" P    switch (assem_opts.apply_to_all_levels)
/ {( a! o( Q, @7 X) |    {
+ N. u3 p6 R0 H- f. p        case UF_ASSEM_do_apply_to_all_levels:1 |5 @7 O' U  h$ |2 J# d) i
            ECHO(" Apply to All Assembly Levels = On\n");% T' \# m2 ~; T0 U
            break;
, ]6 u5 v8 X# }" y" g. Z8 o) Y        case UF_ASSEM_dont_apply_to_all_levels:
% e5 ^3 L9 A* A$ }7 y7 N2 ~            ECHO(" Apply to All Assembly Levels = Off\n");
1 I* d; ]; I9 W% d& S, r' w! o            break;
; T3 Z0 U& M& {) k- n" O, Q        default:
' z" a7 V3 ?$ [! c" d1 @9 v* |            ECHO(" assem_opts.apply_to_all_levels = unknown value (%d)",) g% [0 K0 ~/ W! E8 I0 I: Q
                assem_opts.apply_to_all_levels);; ?% j! V1 j/ N( _
            break;& J4 K! t# K; X0 b) n. X
    }
9 y4 s" x9 c9 I( E! L% H. z2 }
6 Z8 W2 U# ^. ~* z    ECHO("Preferences-> Assembly (misc)\n");0 h( ~/ ~% u" y0 d  k
    switch(assem_opts.emphasize)
% k  q/ x, O1 B+ |7 A/ X+ I    {8 Y+ m: a$ U7 I3 l: S
        case UF_ASSEM_do_not_emphasize_wp:$ S& I9 }* h1 M2 c, K; ]: C
            ECHO(" Work Part-> Emphasize = Off\n");7 q; Z" s# O! c4 o
            break;! T& g) Q0 Q3 d, s/ {, N5 F3 U6 D
        case UF_ASSEM_emphasize_wp:( w0 y: F8 |7 _
            ECHO(" Work Part-> Emphasize = On\n");
7 M8 {8 w& o- F: S            break;
# z; g+ o9 X9 R; R0 x7 V! K        default:
! u2 r9 r* w# o- Q            ECHO(" assem_opts.emphasize = unknown value (%d)",
9 E5 s3 @& T/ l" \0 j                assem_opts.emphasize);, [& z: I  }% G1 F
            break;2 _5 H- W6 d, D# Q" ~4 ^7 D- W- g
    }
6 A0 P# P+ |6 m( Z( m6 Z
4 c5 O* r/ s+ ?( o0 h# T* p, n    switch(assem_opts.maintain_work_part)
) g) a3 F0 a/ T0 N& {1 m8 Q) \    {2 T2 J) D8 R  Q; _+ V5 M
        case UF_ASSEM_do_maintain_work_part:
6 R7 s  o, A. |, D" [            ECHO(" Work Part-> Maintain = On\n");2 y# g1 h' ], d" _, E/ [6 V
            break;
( E+ E$ r- J5 e+ {9 Y9 v% ?% j, i        case UF_ASSEM_dont_maintain_work_part:8 l  R* |0 Z8 ~+ ]4 g& R9 l
            ECHO(" Work Part-> Maintain = Off\n");
4 z4 W2 F& \1 u4 @2 h. c            break;& z( W$ a* O" l4 v: V
        default:
2 c4 ^0 ]6 a( R0 i            ECHO("assem_opts.maintain_work_part = unknown value (%d)",
9 f) F7 V! ~8 p( h                assem_opts.maintain_work_part);/ k4 j1 S0 w( y/ j. F' }* v2 T: V
            break;5 F& a* U3 X" n: z) j; I( F. U
    }4 t* P8 d- p% O# W. o) x& v4 P
    switch(assem_opts.update)
- C9 B$ l' {) i% k1 g" i! Q0 h    {
" {3 g% A9 T, L5 z) l/ a; o        case UF_ASSEM_no_update_report:
9 q) _; o8 w, f- x! |# Q4 J# }            ECHO(" Display Update Report = Off\n");) Q. a* U7 A0 v) Z
            break;
9 H, p* J4 C& |9 G0 Y2 Q        case UF_ASSEM_update_report:& k( O2 x: K4 T% j
            ECHO(" Do Not Display Update Report = On\n");
$ n1 L; f' c" X* @) ?            break;3 e6 P) c6 c9 U; d! v
        default:- y( r6 a' |7 o& E1 a. c
            ECHO(" assem_opts.update = unknown value (%d)",8 l- k! b& s+ t
                assem_opts.update);$ b; o/ U3 e2 C
            break;: l& x* x7 p# P: l( U+ G
    }
. u9 I% k! e8 P3 d' c1 ?, {}' }2 }. M9 N2 y

9 P$ h% X1 T7 C/ ?( Q* Fstatic void load_specified_load_options_def_file(void)
$ d7 A, j( q& n! D/ [' L4 ]{& ^& u8 \; d4 i! h
    int
% \( @' G' H( ^        resp;
! G7 E1 z8 S1 F    char
  X$ a% V- l. `6 l  {* V# a. T) v        filter[MAX_FSPEC_SIZE+1] = { "*.def" },
+ t; ^7 q4 m/ B6 b4 m; [4 C        fspec[MAX_FSPEC_SIZE+1] = { "" };
5 X% m7 `5 S+ C" ~9 T0 {
$ o) w2 D/ S/ p1 E2 O    if (!UF_CALL(UF_UI_create_filebox("Enter load options file to restore",
; ~7 u8 U% {! U  M        "Restore Load Options File", filter, "", fspec, &resp)) &&
% p% V1 V; i4 v/ x& J        (resp == UF_UI_OK))
) ?" M% X' q. `! R$ r  `4 f3 Q        UF_CALL(UF_ASSEM_restore_load_options(fspec));
4 H2 R& v1 [8 A}
; j, }4 Q* Z- ]7 Y% |% G8 F" k9 K% A* c0 H9 s! v8 D0 p- U
static void do_it(void): @4 Y& S( B* J
{
8 E* A  ~/ K7 f3 i; Z# Z    ECHO("Current load options:\n");
1 Z5 q  G% m+ y" W- @/ P: H    report_assem_options();$ G2 y( h+ B/ N/ e# M3 b. i6 y; j. @
& p7 n8 H: W/ h( e  G5 O- v4 C
    load_specified_load_options_def_file();
6 n: }  c- I; k2 ]
7 E  D* ]' g; s! D; y3 b- w    ECHO("\nNewly restored load options:\n");6 N* q- L. u2 g  ~
    report_assem_options();
: |3 W0 z. p/ F$ q! E9 C* q0 C}
+ h2 T- v# z9 ?4 P* e+ D
! r. R0 j$ x. X3 l; G1 t* o0 ?1 [% Q/*ARGSUSED*/
5 r, H( _9 ]! c3 B! C1 ]void ufusr(char *param, int *retcode, int paramLen)/ a+ O& h( p- I
{
8 {5 Z+ m* z% D9 ^1 s    if (UF_CALL(UF_initialize())) return;
! b0 N5 A) y& @* X3 T    do_it();1 @7 H  O" \; Q2 r1 D. h+ g
    UF_terminate();  r' Q9 Q- j( L! v9 w# Y
}
6 ]: w! a2 W4 w) J
" ^2 r& `1 P2 w. R& O/ `3 Z( S0 R0 hint ufusr_ask_unload(void)
- C  E' D2 }: _+ R{
" b1 [0 L3 P2 d    return (UF_UNLOAD_IMMEDIATELY);& H2 h/ s! }8 C& m
}[/mw_shl_code]
5 G: I: [( N2 m, i" t/ U
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了