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

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

[复制链接]

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

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

admin 楼主

2019-9-15 08:32:35

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

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

x

. u6 R' z, V( wNX二次开发源码分享:报告装配加载状态,设置装配加载
7 a" }) x5 d9 C+ J! z9 S& D* b
6 a6 G  s. q. H5 s获取Load Options 并进行处理!# m  q  z  {6 K- W- O
: _8 K( Q! ^0 M0 m2 V1 D
[mw_shl_code=c,true]#include <stdio.h>
9 w* [4 E0 t) H; S7 P#include <string.h>8 i5 o+ ]' V/ x+ C3 I
#include <uf.h>
/ W& B, o0 S, _+ {! I( c5 ?#include <uf_ui.h>9 l' W$ T, w$ Z8 s3 I1 V/ \0 \( V
#include <uf_assem.h>
$ N9 J  y+ e  N2 C' U8 k8 R2 x( D
#include <stdarg.h>
" D  d9 O5 s( e" C
* w0 I/ y; X( k% p6 g4 p# ostatic void ECHO(char *format, ...)+ M8 R/ _  e# e4 B
{0 j- y" x; m$ J5 t( s9 l) \
    char msg[UF_UI_MAX_STRING_LEN+1];
8 Q0 p' j# P) ?6 C  P( K! s    va_list args;* n6 @2 k& @8 N! s5 H$ u
    va_start(args, format);
$ N, Q: r! f# B6 S3 [    vsprintf(msg, format, args);6 \& ]; M: y- [, @2 w3 T3 G' p6 Y: m
    va_end(args);
& U% y1 H0 V# E( I/ f8 |( ^    UF_UI_open_listing_window();% e* P4 [5 A4 m! N; A
    UF_UI_write_listing_window(msg);0 C4 l  g4 }" n5 i0 |: J
    UF_print_syslog(msg, FALSE);0 {5 G$ }: e8 ^/ A4 y, U
}2 H# P4 |0 r3 C* t5 \& f4 Y

$ b0 G+ Y# {9 O$ S5 {9 S# O! N( J#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
3 K! ^, Y( W8 r, |9 G/ j6 \; F. J/ T& [
static int report_error( char *file, int line, char *call, int irc)
+ f* K' I1 ^- J7 }" C{1 S2 B3 g3 V# s/ C4 V: B9 A. D" m$ C' O
    if (irc)6 x) t. |' B5 U9 O  g7 O& Q
    {
6 o1 j3 W2 z6 |; j5 i        char err[133];
0 E7 F5 ~% m1 T, Z4 a" [2 _
1 Y8 R# \" R, p        UF_get_fail_message(irc, err);
; F5 _  G; D  Y/ ?  A8 g  d        ECHO("*** ERROR code %d at line %d in %s:\n",6 q1 a7 k8 A1 J! _: _& B2 `
            irc, line, file);5 j& E8 o1 {8 Z) R& O# v. ^% @. J8 ]
        ECHO("+++ %s\n", err);
% G$ s" l5 ^! ^! h' S2 u        ECHO("%s;\n", call);
: }/ x, n- T0 p5 |" K+ y5 d. A    }
6 f; o$ W: G* g! Z8 j
1 E# U7 v& M! H. h1 D    return(irc);9 k8 P2 V2 @9 b
}
6 M+ ~7 P9 q3 R1 ^- O- y" r: F
2 t1 [+ m! R. S7 B' Z+ v$ rstatic void report_assem_search_directories(void)
+ _3 S! ?  a& J4 a{6 a( q* m8 Q5 j  ]- W4 z
    char
- _5 E, E5 h( }7 d( i        **dir_list;7 g7 T" v% n2 ~% V' r2 N. ?
    int& f6 h! i5 o% j5 D, c. A
        ii,+ a8 ~7 t* i( d2 P: C
        num_dir = 0;
8 P4 k/ Y. s3 F7 x1 ?9 E/ [* {, V    logical$ r! K8 S' T4 R
        *subs;
' A6 E! z0 o* k1 m! i, A4 ~( M0 j) A3 P; ]! ~# j" W% \
    UF_CALL(UF_ASSEM_ask_search_directories(&num_dir, &dir_list, &subs));, S6 w; |/ V3 w% _8 `% B
    for (ii = 0; ii < num_dir; ii++)
) t# Q+ O7 r! F    {
0 j) n  ]6 O! G        ECHO("%s", dir_list[ii]);9 V+ E* u) ]) x- B
        if (subs[ii]) ECHO("...");2 f* y4 I+ a; k6 q' Y
        ECHO("\n");
! O3 G4 P! u+ Q% I    }
, [8 A/ p" u% K5 D' K2 A    UF_free_string_array(num_dir, dir_list);% ?  q8 q1 d# [3 [
    UF_free(subs);+ W: X/ k/ r- a8 W! t& D, w
}! R, V3 o* v" \2 i* d/ @) A- T' s

" N$ q1 \# K7 {: K9 n: y6 I0 Qstatic void report_assem_options(void)
. a! E) M6 v/ J% e5 z; m) j, X# C  @{
! I3 ]/ i) C+ M  A# l    UF_ASSEM_options_t5 Q% \) m" ?9 a6 c6 \- H
        assem_opts;/ |0 [4 S% R9 o" j- R, J# R
- F9 J2 C& L5 y3 @/ @! r# v, I
    UF_CALL(UF_ASSEM_ask_assem_options(&assem_opts));
, Q$ V8 Y$ c2 T/ I6 }& P9 J& F+ X/ O! ^1 _7 S5 Y% J2 M
    ECHO("Part Versions\n");7 y& f6 {7 I( n, o2 o% I9 O% ?
    swiTCh (assem_opts.load_options)+ {* G3 h$ l/ L, l: H+ j
    {
$ Q3 ^3 l3 F2 A% z! u" O        case UF_ASSEM_load_from_directory:- N& P: @+ {. u6 ?  s: t; n' D
            ECHO(" Load = From Folder\n");( o9 ]- o" x- K4 a$ Q" a3 m4 Q
            break;, [3 w9 i. S6 G! d" L* R' Q) ]) l3 m
        case UF_ASSEM_load_from_search_dirs:
$ ~0 Y, [+ i* c2 @& }- U1 n0 {            ECHO(" Load = From Search Folders\n");
) X$ m+ ]8 T$ }& x8 j            break;
& `! T% a( R, `9 ]+ M        case UF_ASSEM_load_as_saved:* y+ G' u4 F5 U) M5 A
            ECHO(" Load = As Saved\n");
0 I) g" T" l; A* ~. L$ V  e            break;
: E$ n- ?, k+ E9 U+ K. M5 e        default:
. W( {- W  w% H  i& J            ECHO(" assem_opts.load_options = unknown value (%d)",/ Y9 n# ^0 X+ ^" _( T2 E
                assem_opts.load_options);' `2 f' p/ c6 c! w# q
            break;$ v5 C/ ~9 D/ t# G
    }- G" n7 E0 H2 ~3 e0 J3 P5 F5 {
, r5 T) Y  l! Z$ x
    switch (assem_opts.load_latest)
* @% {# A& e5 K1 P! _5 w  t    {6 b/ z1 Y8 H. ?6 @- E
        case UF_ASSEM_load_exact_version:5 ]) y3 A5 r" e- Y
            ECHO(" Load Latest = Off\n");3 ~" S# i. V) B6 i0 y1 @
            break;+ N& V( b8 f4 ~2 P3 e
        case UF_ASSEM_load_latest_version:
: p6 b* \  f+ h) ~/ ~3 u) m            ECHO(" Load Latest = On\n");9 M# R3 g3 ^& Z1 y5 H
            break;  a; \) ~4 @6 S/ h# Q$ Y
        default:
  c1 f) I, R- w6 m$ Z: m            ECHO(" assem_opts.load_latest = unknown value (%d)",
8 p4 f: P' c3 ]: B6 p                assem_opts.load_latest);" i+ p2 a# W( y3 p1 Y3 B0 L6 C
            break;
! F+ Y9 U+ ~& X2 J    }" x% _7 C+ W! o+ j9 s

6 o/ {7 E. ]2 l( P. Y    if (assem_opts.load_options == UF_ASSEM_load_from_search_dirs)
- S* J) ^9 R6 T        report_assem_search_directories();
) C# j. ]0 x" }/ r6 q& u  t: _' t6 \
    ECHO("Scope\n");
% \+ Z. q" |4 T+ p3 Q' _* ?5 O  M    switch(assem_opts.load_components)9 s, Z: Q. ?' \+ x4 x
    {* f( T; w9 `1 l0 F, V3 n
        case UF_ASSEM_dont_load_components:
; V! }+ d6 b6 G9 I0 f            ECHO(" Load = Structure Only\n");
1 T3 X# J# F9 N0 J            break;- \1 X3 d2 g# L% w. f7 u* m! |
        case UF_ASSEM_do_load_components:. C; T" z0 e, b9 n- I- L1 M7 V! ]
            ECHO(" Load = All Components\n");
, o2 d3 d6 i4 m; h9 M# ]5 L            break;
8 v% {4 V2 A$ c9 [6 f9 ^        case UF_ASSEM_use_last_component_set:; ?5 ?" z' v2 _  O! y8 k! w/ d
            ECHO(" Load = As Saved\n");) D' Y# J1 P1 x6 E8 H; b: H
            break;
- B0 }" @7 V: k4 B8 \        case UF_ASSEM_use_last_filter:( G8 i, k. d3 D
            ECHO(" Load = Re-evaluate Last Component Group\n");6 Z* G$ {" D. V/ z9 L
            break;
0 u# u; ^9 O# ?* q5 O- Q        case UF_ASSEM_specify_filter:) b* J/ N& b' S% m
            ECHO(" Load = Specify Component Group\n");
0 D1 G4 d* A! S* T& J- d8 Y8 L            break;/ T- W" ^' y3 C* r3 g, ~+ ^8 L
        default:
* m/ q" ]. k7 {8 s& {% t% d1 p* e            ECHO(" assem_opts.load_components = unknown value (%d)",
$ |. \) |* `0 N/ g9 f" p( I0 G) |                assem_opts.load_components);. z- ~6 V6 q4 a3 m
            break;- G  s+ j' c* y0 ]3 p( D
    }
' U0 p# x+ @5 E2 e7 r
+ \( y* G3 H2 U0 X0 n  o+ Y3 Q    switch(assem_opts.load_fully)8 E9 J  \- a- D, P/ v4 y( e6 k
    {& e0 z+ M  k5 R: x$ _$ g. a
        case UF_ASSEM_load_components_partially:# K* i. y2 x3 m% f/ S
            ECHO(" Use Partial Loading = On\n");
& }' h1 Z/ n- r* g; O            break;% f5 O% J: q! g; m# @* Y) k7 y
        case UF_ASSEM_load_components_fully:
/ p) Z2 V- I; o( v6 a  A& d+ j( _            ECHO(" Use Partial Loading = Off\n");
- r/ ~7 ~9 o0 u' K            break;2 Z  |/ t9 [- [# ~
        default:- V$ H( P7 Q; f3 s. l6 i
            ECHO(" assem_opts.load_fully = unknown value (%d)",2 _2 E3 l8 C* K5 T
                assem_opts.load_fully);
5 Q, F9 C! Q6 v1 h+ B  l            break;
. V  ]: \- P: m# _1 e9 Y    }
7 S0 c; m* Y7 v) l( W- l4 i
. R  F) O  X% c+ r+ _6 M# L    switch (assem_opts.load_wave_data)
+ U" @0 M$ }* F5 R; s- `, U    {$ N8 M0 d7 X6 A0 M6 U1 `
        case UF_ASSEM_load_wave_data:) ~  j7 \8 j4 N5 |2 ^. J; v
            ECHO(" Load Interpart Data = On\n");( A1 f& a9 ?: L/ d6 c3 t7 c
            break;
  h" u+ u3 F+ q" {5 c/ x        case UF_ASSEM_default_load_behaviour:
5 R8 n/ p4 O/ {4 a8 _' j" w+ p            ECHO(" Load Interpart Data = Off\n");- H/ _3 H9 y4 w: Q$ ~& r& k! T( x
            break;
- j2 Z$ O! g, R1 n        default:4 q$ I  }( P6 t  v
            ECHO(" assem_opts.load_wave_data = unknown value (%d)",: |) K- B  f. U4 W( C3 h2 W
                assem_opts.load_wave_data);# Z0 E( L% ^  T$ i
            break;
2 ]3 p. F3 q+ ?1 ]    }9 ]9 F( u8 ?& [
1 `! U: E& p9 d0 n, P* |
    switch (assem_opts.load_wave_parents)
9 ?/ ^8 l% G8 M, y1 G) D    {
0 s: s( D+ k4 W* ]: K        case UF_ASSEM_none:
( C* ^" a3 L' T+ ~            ECHO(" Load Parents = None\n");6 O7 v9 y; o; j
            break;5 [$ z" e) ]& r* J+ N
        case UF_ASSEM_immediate:
2 Z3 [, g) A( X            ECHO(" Load Parents = Immediate Level Only\n");4 }. J3 n) w! @. g1 \& i: l
            break;0 j$ n# o: H6 a# a
        case UF_ASSEM_all:% i, Q4 c$ V: T7 g- X7 F
            ECHO(" Load Parents = All Levels\n");
" Q/ [  {) K( u- A1 b9 i  A6 m0 K            break;
) }" ?9 F  C% T( y, c        default:4 U2 t' p& A9 X; o- p  c
            ECHO(" assem_opts.load_wave_parents = unknown value (%d)",
% r4 D* l: z: E1 G/ w4 d+ Z                assem_opts.load_wave_parents);
1 s6 h5 V- q/ \            break;+ P9 u8 y1 W; r& b) F- ]
    }! B$ h7 P: k' @. O6 z5 ^

! d7 ?8 h* O% K4 U0 ^0 F! C    ECHO("Load Behavior\n");& }! E; Q" b. T% G. g* g; Y
    switch (assem_opts.load_substitution)
; I- Z. N3 ~6 h+ K' _  Y    {
2 T7 t" }3 U; h$ I) z        case UF_ASSEM_do_allow_substitution:
- O( x% ]- N7 A, F$ M4 T: G, \            ECHO(" Allow Replacement = On\n");
; Q  m; u# j. O2 s' _6 Q            break;: E( T4 x, C. X3 m- E+ G& B
        case UF_ASSEM_dont_allow_substitution:0 s1 a) J/ I& s7 u* m) E
            ECHO(" Allow Replacement = Off\n");. F! A6 A0 P2 J9 }( G( F
            break;
* u* ~  P1 t5 ~& `$ C        default:
+ `# J" {7 \( B& G5 Y  M% c            ECHO(" assem_opts.load_substitution = unknown value (%d)",
. V# P9 `  L  `$ {( I: z2 Z                assem_opts.load_substitution);
% F/ O8 E- E2 C, w8 X# ~            break;
" H4 Z$ H" B/ X# G    }
& E! X* ^: m3 I. I- F5 W' x5 q6 S
    switch (assem_opts.auto_regen_pfm_option)& h1 w" e% d, Y. G
    {$ K. K8 a( N/ m$ X% }
        case UF_ASSEM_auto_generate_pfm:
0 b4 a7 s/ [# }            ECHO(" Generate Missing Part Family Members = On\n");" F0 u$ b& k7 |/ i2 h
            break;
4 m9 B3 j1 u3 u# ?        case UF_ASSEM_dont_auto_generate_pfm:
8 R3 q3 L1 |0 }' S# {( m            ECHO(" Generate Missing Part Family Members = Off\n");( b) G# e$ U. u9 Z- A0 m
            break;/ b& }8 ^1 M! C, c, d4 t2 Z
        default:2 W9 K2 ~2 w. i$ h/ Y1 i% X
            ECHO(" assem_opts.auto_regen_pfm_option = unknown value (%d)",; G  S9 H5 U+ e
                assem_opts.auto_regen_pfm_option);" b8 `' B4 e0 M6 ^6 X% x
            break;
& r* `$ [4 R; l- `& j    }
& w- S0 d! J3 R
2 [6 `0 L6 r" n9 V    switch (assem_opts.failure_action)5 i" n4 E# t9 b+ l2 T
    {# o+ ]" d+ E1 w& @
        case UF_ASSEM_do_abort_on_failure:  ^9 \- C1 j/ {' q( z3 _
            ECHO(" Cancel Load on Failure = On\n");1 U- P* ?( }" A5 T
            break;
; z) V( f9 [  J7 ~        case UF_ASSEM_dont_abort_on_failure:# A% f" y% O( F- a0 d
            ECHO(" Cancel Load on Failure = Off\n");
+ {* A8 A! y) k2 H$ ~0 s            break;
* ?8 g" r7 H/ G3 @        default:
5 ]$ f' t1 v% a& e. C! y5 z- Y6 i            ECHO(" assem_opts.failure_action = unknown value (%d)",) D" @) L0 Y& O/ M# a8 m$ l, [
                assem_opts.failure_action);$ ?6 T2 r$ H% N9 t2 N
            break;7 g7 U9 g* t; |+ A6 }5 m" R# ~+ I
    }
( y/ p2 Z  ~6 R0 a  Z) E* s1 X" z9 q, E5 v2 K( B2 x
    ECHO("Reference Sets\n");
+ Y+ V4 ]" S. i1 ^  N    switch (assem_opts.apply_to_all_levels)8 I1 A; M: l3 e2 P7 q* |8 t. c# P
    {8 O( ^+ D# J2 x4 Y6 S
        case UF_ASSEM_do_apply_to_all_levels:% C: d  {9 ?/ G2 D- p
            ECHO(" Apply to All Assembly Levels = On\n");
9 ^/ T' W% U1 `& a( k) n            break;
  T' w! R$ K; G. B2 g        case UF_ASSEM_dont_apply_to_all_levels:" b2 R9 k7 f0 s* S
            ECHO(" Apply to All Assembly Levels = Off\n");
5 Z% E3 c+ X2 z, Q. I            break;
! ?6 x$ w0 j( d2 r* |        default:$ `6 e8 q  t. b, _- Y
            ECHO(" assem_opts.apply_to_all_levels = unknown value (%d)",
( s5 p+ E8 I: E* n' H# m) T5 T' S                assem_opts.apply_to_all_levels);
  J- K- {- p7 {  D/ o' j            break;: u7 w1 U0 }6 h0 `) B
    }
; p- J6 e6 f: U: k+ d% k  E6 k) ]8 V5 x# ~# A
    ECHO("Preferences-> Assembly (misc)\n");
. b& P+ N$ o! r, ^, x; ]    switch(assem_opts.emphasize)) d' \3 d4 i2 m1 x
    {4 w& T  Y( c, c; b2 k* O
        case UF_ASSEM_do_not_emphasize_wp:8 s& u$ A- t% c
            ECHO(" Work Part-> Emphasize = Off\n");  u( a" m. k# U
            break;
! e0 E, S7 c( w0 v        case UF_ASSEM_emphasize_wp:
+ K% l; v& ^- j* I. w- @4 }' \            ECHO(" Work Part-> Emphasize = On\n");, S: u' M9 R6 \5 @
            break;# \, z9 L; G0 K$ [% I  q
        default:
6 }" a/ P  z& g            ECHO(" assem_opts.emphasize = unknown value (%d)",
# `6 s0 I, c, ?3 j, n6 M6 S. i& q                assem_opts.emphasize);) ^; b. v2 f9 Z) u6 j0 |7 r
            break;
% V1 @3 j" t+ T, x0 M, A$ H    }
! S/ O3 Q2 V* G1 w8 F  f3 V' h( U6 P
    switch(assem_opts.maintain_work_part)
4 C. t& ?! W1 N& I# f    {
1 S# v  ]* l" X. W- `        case UF_ASSEM_do_maintain_work_part:
1 y- ~- q5 c: C  E7 w            ECHO(" Work Part-> Maintain = On\n");
, k$ r) Q% m+ k# _/ ^* f% G! l" ]            break;4 R" q# J7 n" Q7 n6 W8 R
        case UF_ASSEM_dont_maintain_work_part:
6 x% e; j2 }/ E) d, [            ECHO(" Work Part-> Maintain = Off\n");
4 e+ N4 |! o7 X! k3 u, X& ?            break;
+ Y) q5 L2 U4 n, a' e& h+ Z        default:& Z5 [/ R! s2 ?$ ^: x4 x/ a
            ECHO("assem_opts.maintain_work_part = unknown value (%d)",4 v9 V! {! M7 h$ f% o4 [/ _
                assem_opts.maintain_work_part);1 e9 W0 f: F7 L3 g, B
            break;
" c$ i- Z( K4 z. I% N) F7 y    }
! j& c3 c0 G- X& U; v# k! j& T% I    switch(assem_opts.update)
* b% o  J2 K! `' f% S    {+ g1 S! A- w9 i
        case UF_ASSEM_no_update_report:
0 ]; t& r4 k4 F4 H            ECHO(" Display Update Report = Off\n");
; y4 E$ h- R% R! V            break;
+ `1 S! B7 z: N- y9 a9 U        case UF_ASSEM_update_report:5 M) q3 ^! x- h  Y+ d) [" u) u
            ECHO(" Do Not Display Update Report = On\n");
- n7 k! A' ~2 h8 y, L            break;6 c- S6 `& b& |8 u# d' V
        default:* {0 _" b- q4 T" ^  ^
            ECHO(" assem_opts.update = unknown value (%d)",
9 [7 ]- q% D( c% F9 g                assem_opts.update);
- `9 z* z3 |8 n  U% }0 L            break;
9 w) P+ h6 k" ]    }
! Q5 w% J) z, M) b& k0 X1 r; d}' O+ E, I+ P8 k- ]% R7 o% ]
8 ^, R6 W* _; K6 a- R2 X
static void load_specified_load_options_def_file(void)
+ A9 }5 }3 N4 g4 x% G" @* z6 a{2 P1 z% Z, x% z: g! A$ X0 w
    int
1 d2 o1 \- E0 z/ V7 p' ~        resp;' r6 E, c- l$ r  `. Y" v
    char
& d  r, l3 @& y        filter[MAX_FSPEC_SIZE+1] = { "*.def" },! T2 s" i& Z3 i" Q8 m  O- z4 Z
        fspec[MAX_FSPEC_SIZE+1] = { "" };
2 ~. B1 w$ i3 m* P
+ b6 d+ g) _4 ?- F  K0 H  L    if (!UF_CALL(UF_UI_create_filebox("Enter load options file to restore",
2 F) u- {4 Y' z        "Restore Load Options File", filter, "", fspec, &resp)) &&
9 R3 }) I: b4 k7 u# ~( G" o! r( z        (resp == UF_UI_OK))
9 ~8 g" C: A2 L1 n3 i, R        UF_CALL(UF_ASSEM_restore_load_options(fspec));
) D8 ?" n" Z6 z) u. _2 Y}
/ @5 [# F. K# z! f( l2 _: O
: I% [' }3 q" Ystatic void do_it(void)% p& R# W: m/ q/ R! {
{
& H2 [2 ~7 e: s% ]& v  F3 r6 m- W    ECHO("Current load options:\n");) w* g( d+ Z; j) O( I: f: a
    report_assem_options();  Z) x8 o! o5 K0 L$ E5 D% E% H7 W
# j" b! @% _2 f" b& E) g4 D; R  z
    load_specified_load_options_def_file();
" L* F; Q% Z* _4 q
2 Y: l" b3 f% T1 U    ECHO("\nNewly restored load options:\n");1 `/ S( P' C, ~# i2 K* o
    report_assem_options();
6 s- j# Z. X; {) k' }% O}' Z" p5 K/ T1 d8 H6 O9 ^: b% z; w

! x  y$ W1 p  u/ n( Z/*ARGSUSED*/
9 s' _. Y" Q( xvoid ufusr(char *param, int *retcode, int paramLen)
$ i3 ~: L  Z/ W  `$ e2 z{. u" C! G' e# _( e2 A7 l3 s
    if (UF_CALL(UF_initialize())) return;  |! J+ O6 ?  v! K( m
    do_it();4 u$ W% R' F. U7 O
    UF_terminate();) ^: f+ f" _! c6 J4 W' G: ^- S$ m9 U
}: c7 e$ o+ s* t" f
( v- Q6 O1 `- u9 v
int ufusr_ask_unload(void)
% }# E% B, V4 E- H; f' A- L{9 r( g0 w4 c  r# g' j
    return (UF_UNLOAD_IMMEDIATELY);, X. e+ t9 {1 s' k$ \
}[/mw_shl_code]. \, v- p$ z. W1 L5 v$ Z  `
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了