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

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

[复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

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

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

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

x
4 V" v- @& h3 D: r, J
NX二次开发源码分享:报告装配加载状态,设置装配加载
' {9 `* L% [* D5 x+ t- ]
$ E& u! L0 G: G/ ]% w; [0 ?. s获取Load Options 并进行处理!: n+ A: z8 s: I

1 D: v' m/ J# }; z[mw_shl_code=c,true]#include <stdio.h>" o, C2 l' o3 M( M3 f
#include <string.h>
8 J. w1 |. Z, E8 [  m#include <uf.h>7 `: G4 r0 u6 l. g/ q3 B- Z  w
#include <uf_ui.h>
# l; \8 e5 B( R/ Q* Y( ~6 l#include <uf_assem.h>0 v1 f/ r0 H7 D3 G) u
. ^$ }3 m9 V/ v0 i" t7 i8 p- Y
#include <stdarg.h>
. {# j. ^6 Y2 g5 a/ B9 B
& K7 D% M' }% e& b" n2 C5 r/ Dstatic void ECHO(char *format, ...), d) ?( C! m; O
{4 J/ I/ l4 m& C- _0 v& r; V$ t
    char msg[UF_UI_MAX_STRING_LEN+1];. l5 r+ h% n/ K" D, {) [
    va_list args;$ T2 \4 A8 Q% {1 S3 ~
    va_start(args, format);. M4 F& `) _5 x9 g: V
    vsprintf(msg, format, args);
" r  x4 q( r2 L5 a    va_end(args);
% T) p$ P" w1 y& J5 i  X' g0 f2 P    UF_UI_open_listing_window();9 y# h3 M0 Z, F  Z2 [0 m
    UF_UI_write_listing_window(msg);
7 l/ g& j' ~* v+ K1 @0 T# h    UF_print_syslog(msg, FALSE);
: h  R. t* `9 m9 h& I0 a1 L$ e}
0 G# F  c* [7 C9 l. m6 ~- A) H* m
0 N0 a4 e- E  |: h$ T#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))" n6 ]9 p* y0 c3 }6 g+ T+ p

( j6 q" C: F/ k+ }0 L' U" {static int report_error( char *file, int line, char *call, int irc)
5 L6 z" W( C& h6 B' Y: A# }; j2 K{9 H1 R. G) A/ s# r* \5 H
    if (irc)
+ v! v& I' v  v1 `1 x$ g    {
& E& |$ `( Z$ F& E  R7 T/ b( b        char err[133];
, u9 I- w" g9 q! M8 J' U9 ?. q+ ?5 z% s! |" u; g
        UF_get_fail_message(irc, err);* l" n$ b% Y8 s% H% r. o
        ECHO("*** ERROR code %d at line %d in %s:\n",
  i- b3 [% M1 c& A, v4 H, f3 r            irc, line, file);
! O$ u0 K% @) C( P! Y        ECHO("+++ %s\n", err);6 T) o/ b$ e: ^0 a8 U( e& Q
        ECHO("%s;\n", call);$ S! d8 `1 d( g/ |5 ?
    }
1 m' V9 Q8 m+ ]" z9 b  j  r% b6 {
& e) `% P/ C# h0 P" a    return(irc);3 t* D+ m0 {. F7 t9 E* p
}
2 ]1 b1 D5 Z$ }' w; S6 ^
* p' q9 |0 ~5 m# J" Y6 Mstatic void report_assem_search_directories(void)! E8 F2 k* e3 Z
{
" @  l7 Z5 F1 g9 @6 C% M& N& [    char
7 N9 e, S# u4 V3 P& R9 _7 U4 f0 o        **dir_list;
% G6 n9 V; m7 [# k  `% q    int
  H  m7 E2 z. I! a( v# ?. Z6 l1 l        ii,0 Y, \! r8 u! i( e# k+ O2 v, b
        num_dir = 0;5 o+ S8 r' I! U
    logical) |0 K( R6 g8 n8 [+ J) v& W
        *subs;8 [0 l* Y! N$ _7 b7 @4 P; [

# P/ W! W$ O; i$ X    UF_CALL(UF_ASSEM_ask_search_directories(&num_dir, &dir_list, &subs));' E* l- u* \, H5 \  Z( u: n9 D
    for (ii = 0; ii < num_dir; ii++)0 ?: t9 l4 i+ K: s
    {
6 B; ], t* S  P& f        ECHO("%s", dir_list[ii]);
+ a/ J. b4 W' q, t        if (subs[ii]) ECHO("...");
' M: f4 Q& D  ]! Y/ a9 b        ECHO("\n");! b( G* m  |0 x
    }
# r) Q) {8 F" x8 j    UF_free_string_array(num_dir, dir_list);7 x) K* z7 u* b2 q% G$ M$ @
    UF_free(subs);
6 s. [5 B/ M; S/ d% }}: v3 Q5 Q' [, M; X1 l( D4 }# h# ^
' N# E$ A8 N" k
static void report_assem_options(void)
$ Q* O( B+ ]; J9 m: \{# s  A( `) I8 L4 y
    UF_ASSEM_options_t
" ?1 D5 c+ x& j  H& o/ [3 }+ a        assem_opts;
8 `9 b: O9 q% a2 J" ~( J/ U- t% h. T2 W
4 b9 |" Z3 ~" h6 s    UF_CALL(UF_ASSEM_ask_assem_options(&assem_opts));. `6 D/ H7 d' N1 C+ n! l6 \" r
4 T% E9 _- L! ]" N6 J
    ECHO("Part Versions\n");3 M; t9 Y6 J+ U+ \8 \# O9 M# x
    swiTCh (assem_opts.load_options). U4 v+ V# e/ s# f) h3 l
    {, ^3 y; }9 J- A+ o2 t0 v
        case UF_ASSEM_load_from_directory:
' }$ S7 g5 [0 D; i9 L6 d8 F& Q            ECHO(" Load = From Folder\n");1 K' S9 J+ B' r7 F* Z7 y8 ?% N
            break;$ v' X# M+ r2 k/ I% L8 P5 `
        case UF_ASSEM_load_from_search_dirs:5 u( B; b0 T7 M1 q! Z" ~4 a) P
            ECHO(" Load = From Search Folders\n");
* v7 [! T) b) h1 b* V# x1 G            break;9 k3 e+ l9 D+ T
        case UF_ASSEM_load_as_saved:0 P+ }) _# ]; p8 v8 ^
            ECHO(" Load = As Saved\n");
* h: L  n7 i. x! ^2 w            break;3 Q0 v0 _7 Y, I. Z
        default:& O8 x6 M5 R) I5 B
            ECHO(" assem_opts.load_options = unknown value (%d)",
; z6 v7 Q$ Y. C1 b. \8 {                assem_opts.load_options);$ B( U. C- S. m7 b' H5 S% j& ^$ v- i
            break;
" N4 d" n2 C( k; ^    }
0 }' a* U' ]( t/ [( f% H3 W: s% s9 w3 B  u5 m
    switch (assem_opts.load_latest)2 }- f! G: f  c$ P/ y, t) B- H
    {
6 y2 b/ l' j" V        case UF_ASSEM_load_exact_version:: f, k7 ^/ w( g# |0 g
            ECHO(" Load Latest = Off\n");
2 Q: g  f8 r! T$ s0 P) q            break;0 k# V/ T; {- z
        case UF_ASSEM_load_latest_version:
$ G/ _& Z- Q5 Z( C            ECHO(" Load Latest = On\n");3 I8 g$ ^8 {' }& C" k9 u
            break;
* `- s0 H9 N. o" m/ c1 e: m: n        default:
0 k+ {0 z% T! ^, o( D' a            ECHO(" assem_opts.load_latest = unknown value (%d)",& v+ Y" P7 G0 g& H! }
                assem_opts.load_latest);2 |# f" N$ Q1 @1 p1 W
            break;( o& c$ [/ m/ t1 B2 j" o
    }4 i% K  n1 t1 `( [

% j( {% v' K5 X* h7 k9 L0 F    if (assem_opts.load_options == UF_ASSEM_load_from_search_dirs)  K' M. r. a6 @  S0 [' r
        report_assem_search_directories();
9 B# F6 B7 ~) ~3 ]; B4 Z0 }5 C
& B& P) D7 \5 A) a' [) u; C    ECHO("Scope\n");: b1 k  B, L0 h4 ]& i3 N4 ]
    switch(assem_opts.load_components)
. Z- L6 f  |1 B    {
" ^* f/ k3 K- @        case UF_ASSEM_dont_load_components:' k: @: `& }- T1 _( t% K
            ECHO(" Load = Structure Only\n");
2 i4 ^. g4 i6 y+ |! j* Y. F# G" N            break;
0 Q3 r- Y1 P6 j: s3 \6 A        case UF_ASSEM_do_load_components:3 i3 M/ Z3 ]* L4 ]5 e
            ECHO(" Load = All Components\n");
! X& q; |" E+ N& {: Q1 [" G; j% W/ \            break;
2 [* d7 D+ o! S4 s8 M0 t" a: Y        case UF_ASSEM_use_last_component_set:6 G+ m' e5 {$ n+ ]
            ECHO(" Load = As Saved\n");+ N& G8 |) h# y, Z5 h9 v! ?
            break;5 i6 j$ \0 j# Q3 ]5 j
        case UF_ASSEM_use_last_filter:
& \; y$ S* l8 ?- ~6 c3 l# c3 m% r  k8 a            ECHO(" Load = Re-evaluate Last Component Group\n");# a( E3 E. @& E8 Q, _
            break;6 ^0 w2 D3 g' o. l
        case UF_ASSEM_specify_filter:: h; d5 S% r. r7 Y
            ECHO(" Load = Specify Component Group\n");  q( O9 F- _. J/ r7 W0 w0 N- ?' a
            break;0 M: A# r! t1 v$ L9 q6 y$ F
        default:* \, j, V3 h, t9 C6 X( Y
            ECHO(" assem_opts.load_components = unknown value (%d)",% p. x* v- Q8 g$ R+ t( \( H
                assem_opts.load_components);
# F7 F% N: f2 n# C0 ^            break;2 H+ c! ?" R# r3 s
    }
, i0 X2 r( ~/ s
- R  x( I; z  b; b2 J    switch(assem_opts.load_fully). r) J+ ]# i' ~
    {8 t7 w7 l/ v, T5 k
        case UF_ASSEM_load_components_partially:
/ y; `' y* q: A5 ~            ECHO(" Use Partial Loading = On\n");
% b/ P- v8 t+ ]4 Y' v8 n: |            break;6 ], J' x" W- N, L; h, d6 r
        case UF_ASSEM_load_components_fully:& `+ S6 E" |( h* m, j
            ECHO(" Use Partial Loading = Off\n");6 o& ^6 r0 \! }
            break;& N2 O6 |; R" v$ T
        default:6 a3 I& }7 a, I# q
            ECHO(" assem_opts.load_fully = unknown value (%d)",
0 a" O- T" I- \" F9 D# m7 C5 f                assem_opts.load_fully);1 ^, S& Y0 h/ x* j7 m1 x# X
            break;* j! X' |/ z% J8 |) m
    }
# d4 `% \; F' G; ?
; S1 S8 h' U; V8 W# b    switch (assem_opts.load_wave_data)# a# x, o) k- n8 W3 F; Q
    {7 l, O8 Y( w' V5 x, B
        case UF_ASSEM_load_wave_data:
' B$ a% U# E% P4 x8 n! z+ m            ECHO(" Load Interpart Data = On\n");
9 q2 L0 A3 V4 J2 j            break;
, y# R* p4 U4 h& S' u+ S3 S# _        case UF_ASSEM_default_load_behaviour:& `# Z! W% M! z* F
            ECHO(" Load Interpart Data = Off\n");
/ d& d" k# c' E& p4 q            break;
: F4 Y+ r3 a* U" O        default:% c3 W& r& L& _$ N& L" |
            ECHO(" assem_opts.load_wave_data = unknown value (%d)",
2 @0 P! w$ k' P' A: n; z                assem_opts.load_wave_data);
( u4 P1 `9 V, ]8 ]            break;2 ]6 O* o9 v( x7 x
    }
3 d# o1 V3 P/ Q. ?* K, A' l
2 [" y8 d  a1 z1 M  _8 R0 V    switch (assem_opts.load_wave_parents)5 [* p/ M" L0 i6 P* p1 Y
    {& W4 W6 b7 B4 P
        case UF_ASSEM_none:$ k6 ]. L8 ~9 k
            ECHO(" Load Parents = None\n");9 S  n3 G0 X$ S* c
            break;
# U6 H: ]. |! J; d2 |8 L        case UF_ASSEM_immediate:
) |( r% t/ q/ u7 _- M; ^            ECHO(" Load Parents = Immediate Level Only\n");
$ o" A/ d% [$ ?+ T            break;
1 L) t! @4 Q4 _7 _  g3 V4 a+ a6 t        case UF_ASSEM_all:0 z1 a, K! u! V) ]4 i8 ~
            ECHO(" Load Parents = All Levels\n");
" R% t$ B1 S. ^: x            break;0 S. Y% K* {) ?4 s: l2 ^
        default:# [; a# l& q* v/ {3 H+ {5 U
            ECHO(" assem_opts.load_wave_parents = unknown value (%d)",: G6 P3 I$ v' S
                assem_opts.load_wave_parents);7 z% k+ u0 ?# k4 l
            break;
+ B' |4 H4 Q# z    }
1 M: U& |; r7 g$ M* A/ r
2 z- ?4 B  E( m3 ?  t! J0 ~    ECHO("Load Behavior\n");/ S1 e% W  c7 c1 {$ Z) h
    switch (assem_opts.load_substitution)/ C- t4 I% H. }' g( ?
    {
4 R+ o  ~- Y( P' n        case UF_ASSEM_do_allow_substitution:" b1 n# K3 `% c; Y: S2 f0 N0 J
            ECHO(" Allow Replacement = On\n");, u- \6 l% k3 s- u
            break;
$ v: H" B; y0 F5 z        case UF_ASSEM_dont_allow_substitution:* D2 V! m% a8 X6 F
            ECHO(" Allow Replacement = Off\n");
2 J; I6 M5 v" [! h& p            break;
& A( z0 i" ^& j$ v- n        default:8 n7 W4 A: s- C4 i! r
            ECHO(" assem_opts.load_substitution = unknown value (%d)",8 Z% c# L/ y" q; \  U9 n% t/ x
                assem_opts.load_substitution);
7 i, `, e# A- a+ q! D            break;
( H1 Q9 z3 @9 j4 @0 R& m8 V# s    }7 Y" u5 d3 ~' t7 G* ?
! C2 ^+ }+ w$ |, w$ W) R  A# W6 G
    switch (assem_opts.auto_regen_pfm_option)
; F; c; k2 C  z1 \    {
0 i. o, H$ V; l* ^+ Z        case UF_ASSEM_auto_generate_pfm:
! R) K& k% v0 E            ECHO(" Generate Missing Part Family Members = On\n");7 T' s+ u5 S4 l& T% y+ T
            break;+ e  |1 ^% m/ I' Q' a$ c) V' a
        case UF_ASSEM_dont_auto_generate_pfm:
7 V3 w% Y- f! w4 N            ECHO(" Generate Missing Part Family Members = Off\n");( e" a  {# N5 s) U( W# c' ~
            break;; ]+ x$ ]+ ], S
        default:- C8 _" b3 Q. y+ h+ p7 H( B
            ECHO(" assem_opts.auto_regen_pfm_option = unknown value (%d)",% l5 q2 Q, F  d! U3 u# \
                assem_opts.auto_regen_pfm_option);  Q& C# d6 B/ S" z' z& b% p* C
            break;" e1 S7 C7 v: d$ Y: B/ y
    }
4 ?! C, F) z& R1 i/ X' j/ d4 w* X$ q* g/ }, A$ C! v
    switch (assem_opts.failure_action)1 |& b1 e4 k7 T: @  ]* }+ Y6 ]
    {
& A" m1 H: ~: w; A; i4 k/ E' n        case UF_ASSEM_do_abort_on_failure:
. R4 M& I( Z7 W9 u            ECHO(" Cancel Load on Failure = On\n");
( Y7 ^8 d2 M, f) V            break;) Q# G) }! V; t
        case UF_ASSEM_dont_abort_on_failure:9 \; O( `' {$ x$ F8 i2 W# H
            ECHO(" Cancel Load on Failure = Off\n");
1 Y% [, k1 _. m! y( k8 Q            break;) w* L* W( Y# T/ O9 s
        default:; s3 Y1 R" R. f; J
            ECHO(" assem_opts.failure_action = unknown value (%d)",
2 |2 {) P3 K7 O* h, S                assem_opts.failure_action);
  w# L1 h! B7 J9 y            break;- O2 i: @" H3 J. D# ~; L/ x' j
    }8 [+ S! p3 R3 r2 M
) f6 E- S" h0 h: a' f: y) {0 [
    ECHO("Reference Sets\n");
0 F0 C. B- l1 L( r; v8 B    switch (assem_opts.apply_to_all_levels)$ i1 _" m# y2 p+ l& E
    {
+ O5 s3 h0 x7 }  T; ^0 h+ ?        case UF_ASSEM_do_apply_to_all_levels:: w! [( L4 P5 `# X' r. ~7 T$ i
            ECHO(" Apply to All Assembly Levels = On\n");
* m1 m# \) U: R$ c6 `            break;
% Z5 T3 O0 U& L- N        case UF_ASSEM_dont_apply_to_all_levels:
* |2 l# `! N8 `& g9 ^            ECHO(" Apply to All Assembly Levels = Off\n");
5 ?' B9 e* k, U/ l0 `* w            break;
% e8 o' [) q0 D/ X- G5 i        default:
  n2 x) D# r9 @& Q            ECHO(" assem_opts.apply_to_all_levels = unknown value (%d)",
, @: t0 d- V! g* a0 @  x                assem_opts.apply_to_all_levels);1 l: U6 O9 {! V6 ^+ ?/ U
            break;% S; \, s4 _1 L7 N- P9 L
    }
& r: v  o, F' }( P0 m5 @
0 P; l1 f: M4 [) l0 J2 e& j& z    ECHO("Preferences-> Assembly (misc)\n");
+ H9 ^& {; [9 M+ z" ~7 l- }    switch(assem_opts.emphasize)
2 g# b3 J$ j! @) X    {) }7 w( @+ |& W0 R
        case UF_ASSEM_do_not_emphasize_wp:, |" {1 B& ?9 {
            ECHO(" Work Part-> Emphasize = Off\n");
+ a3 d+ R0 b& l+ e3 e2 `9 f            break;+ r: a1 g6 Z. j8 H9 b$ F
        case UF_ASSEM_emphasize_wp:9 ~, l( s! u; S* c1 v) T' b2 A
            ECHO(" Work Part-> Emphasize = On\n");" x. h) W0 n" Z- j3 @! r/ P+ o
            break;4 V( g7 S& d/ l4 W; j- ~) C( E
        default:1 a2 i) S* z) @) P, M$ b
            ECHO(" assem_opts.emphasize = unknown value (%d)",
' u* Q! z1 I! K! l' g/ L                assem_opts.emphasize);" ~! ~3 W, q$ K* F( U
            break;' ]0 A4 e! ~4 p" O
    }
0 s  t2 B! |  g7 n3 ~1 P  J, X- M$ G
    switch(assem_opts.maintain_work_part)8 I+ `" }  g1 o5 B
    {% h; s) M* E, L$ ~# p# M
        case UF_ASSEM_do_maintain_work_part:
2 H2 ^  r$ N. p$ z            ECHO(" Work Part-> Maintain = On\n");+ j0 a$ d& i& ~  c6 k
            break;
# _! c& Z" l' r5 h7 g4 W/ [# P        case UF_ASSEM_dont_maintain_work_part:
% u- I) i, p7 d9 \( Q            ECHO(" Work Part-> Maintain = Off\n");: s9 b/ i1 L( o2 o0 r' |
            break;
$ A# a7 ~; ~) o/ n" r( A% M        default:+ G" w4 x/ m5 }# r' ~' P8 L; ~
            ECHO("assem_opts.maintain_work_part = unknown value (%d)",
$ ]$ {$ s. |8 o  A" w2 g( B                assem_opts.maintain_work_part);. i; I( T& U" J" k0 z% F
            break;1 i/ u* t4 ^1 e: Q
    }1 Y, O* P* @  F  e( i/ H1 n
    switch(assem_opts.update)
, |$ v! Z" v) W( O! R    {
! {9 l' D5 R9 ?% K0 k$ A        case UF_ASSEM_no_update_report:/ X6 K. b. [2 V7 k% A( Q
            ECHO(" Display Update Report = Off\n");
  `' k: a, u8 O: e# \5 H            break;
4 h6 ]: b& |( C/ [( |        case UF_ASSEM_update_report:( _! m: K2 i+ B3 S4 z
            ECHO(" Do Not Display Update Report = On\n");
" S; Q9 G9 p- M- Q* P0 `            break;8 l9 Z: D# R5 Y' b7 o" w) Z
        default:" ~) l* o# w- `3 r) o# Q5 F& G$ n
            ECHO(" assem_opts.update = unknown value (%d)",
# e% ?# D1 z7 A9 O                assem_opts.update);
; q/ k6 R0 T4 m  N" P) S            break;
5 f$ P* c0 f- ~    }; Q9 h" i+ K( D: B
}: A8 E4 A+ I; C& v  B! T/ R
2 W- l3 C, e, p6 w/ L
static void load_specified_load_options_def_file(void)
; }: }  j" Q' h) m- ], U4 W% Z0 A{# `2 Q  {! F$ \: Z
    int
, ]+ ]& w# S: T$ K( Z8 M, _        resp;9 E0 J- c/ h) p& R: J( q
    char
! ]! k4 @! _: y; ~1 O( \) W        filter[MAX_FSPEC_SIZE+1] = { "*.def" },
; k: a- `4 f# H- S        fspec[MAX_FSPEC_SIZE+1] = { "" };
8 i4 B5 x( h) ~0 A; Y, n% r2 N3 I" v2 f0 N' Y# g
    if (!UF_CALL(UF_UI_create_filebox("Enter load options file to restore",3 G/ q' u( `6 H: f2 V8 C$ O! {1 C
        "Restore Load Options File", filter, "", fspec, &resp)) &&% a: c+ t5 Q$ o  e
        (resp == UF_UI_OK))
7 z9 \0 Q3 c4 A' `* l# s# V        UF_CALL(UF_ASSEM_restore_load_options(fspec));9 v& V: U7 d: R, y! b% _
}
2 V% k: F3 L' V, u' e+ ]6 c" U6 v; D5 f$ w4 S9 z! _
static void do_it(void); D8 x+ B5 l; e5 c& H
{$ F, }' b" M* f, d) Z7 W3 W, d
    ECHO("Current load options:\n");. L' R6 q1 F& n* r4 t
    report_assem_options();
+ k; U2 C; M% H: q$ k5 m; {; }0 w/ a
    load_specified_load_options_def_file();
( Q6 G3 y: p. u5 \( V5 U- I" [( Z; ?, V3 a
    ECHO("\nNewly restored load options:\n");
) E" ?% }7 y; \) U5 ~4 {( Q    report_assem_options();
) m. ^) u( o  P% E}
1 {/ \( c( E0 M% e. S: S8 u
2 S, J& ^' Y9 {/*ARGSUSED*/
. h& B& T! L9 L2 Fvoid ufusr(char *param, int *retcode, int paramLen)
8 {6 H# U- s; i{
: |; u4 _* l6 P  t0 b6 E0 i    if (UF_CALL(UF_initialize())) return;+ ]' ]2 X7 D7 p$ H
    do_it();5 x* L) a# O1 S
    UF_terminate();
: W1 w) [, V8 y. ~% [}; I9 i5 J2 F7 U' f5 H* \! }/ e

# d+ f$ H' m& ]int ufusr_ask_unload(void)
  c6 X, B& I* g4 x- N9 e{. m  a- b" w6 e. K9 o( L: d
    return (UF_UNLOAD_IMMEDIATELY);  w& P1 A9 Y8 [( J4 }
}[/mw_shl_code]
0 J$ C4 G* ]% `, a
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了