PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

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

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

admin 楼主

2019-9-15 08:32:35

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

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

x

6 p  @' B. v; L9 k& ^NX二次开发源码分享:报告装配加载状态,设置装配加载
, j4 N# c3 O; D+ `  a; ^7 x. ]3 W  x' g1 x
获取Load Options 并进行处理!, {# b1 o4 m9 Z

3 ~  R# z& A; M6 E[mw_shl_code=c,true]#include <stdio.h>( D4 c3 j' o: ]. U3 P6 D& x
#include <string.h>
1 r; x9 g# W+ i! \7 L, G#include <uf.h>
/ e1 ]" R( c  }  I( n#include <uf_ui.h>1 a; A& S8 i$ p" H+ v
#include <uf_assem.h>
2 ?/ e6 V$ |. z- Q. |
! t' m! f( p3 C# U3 U( a#include <stdarg.h>
0 S2 W" q0 n8 t+ A& f7 K. d5 i* \& z( e; ]  V
static void ECHO(char *format, ...)7 e4 t- C2 ?1 H
{
8 n  z# t0 U1 |' v    char msg[UF_UI_MAX_STRING_LEN+1];
: r$ c# \, l. H# X, [    va_list args;
9 g4 n0 S: M7 L4 k% r) [& f    va_start(args, format);0 T2 H7 T$ x4 j: `% L4 t1 G$ W
    vsprintf(msg, format, args);7 \2 ]- |) {  q# V
    va_end(args);5 K2 {3 s( s; H9 O7 V& R
    UF_UI_open_listing_window();: K3 R  T3 h  a/ g2 ^
    UF_UI_write_listing_window(msg);
8 T  a: R3 g8 @7 a! g% @3 @! L    UF_print_syslog(msg, FALSE);
- G5 C4 s# D- A5 x}. T( Q. ?. \6 L- ^9 W
- `5 F$ u9 M% o  o- s; C9 q- m
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
$ V; s8 D6 ~$ h- L
/ K8 o7 P9 r3 E* h+ h+ j& {static int report_error( char *file, int line, char *call, int irc)
* O. o$ s  K, V3 F* _{
- ~( b1 J7 L: p    if (irc)3 ?- g+ w; h3 L5 I3 @+ W
    {& z6 K. }1 j2 C+ \0 y' ~
        char err[133];0 Z( B9 D  [' ?1 }+ X% w$ d3 U1 Z

% T& z6 a) R+ e9 a/ M9 x6 m" x- V        UF_get_fail_message(irc, err);! Z: u4 P: q1 S, E4 O: X
        ECHO("*** ERROR code %d at line %d in %s:\n",
" M. B! w) x0 z            irc, line, file);+ O" T, a& l1 Z  h9 L+ H0 K1 J' P
        ECHO("+++ %s\n", err);8 K. b) }& |' K- g3 |/ o
        ECHO("%s;\n", call);
. H9 \, Q% F+ y- N5 [* B  d7 x    }- M) m1 I. H3 Y! M/ Y" A
7 }  n) @' B3 i) r9 v" i
    return(irc);0 [+ [2 i/ [) c" R
}% l" x$ |' \: [( l: l6 p
, L  E) @* `2 k3 ]/ M+ q$ z' n
static void report_assem_search_directories(void)' f  l) ?; q3 N+ G0 s0 b4 L7 x
{2 }* }  h9 I7 ~7 _9 [
    char
; X) s  D1 M, L3 G7 Z        **dir_list;7 ]2 m6 a/ K2 R1 t9 x
    int& Z- l3 [0 `1 o# `: R- {: _2 _
        ii,
" _/ a9 y5 R$ g+ f0 @        num_dir = 0;
6 N- R# J1 I$ J- Z6 x4 \6 W    logical* f/ p! p/ p/ Y/ x6 l5 H' D+ X; z& a9 c
        *subs;8 k8 N1 V1 g: M+ O8 P
6 G2 V$ E$ q+ {. j
    UF_CALL(UF_ASSEM_ask_search_directories(&num_dir, &dir_list, &subs));
' x2 T4 |% V( I# G2 g# C    for (ii = 0; ii < num_dir; ii++)% V( G" A' c2 E" b* b- o: F! }
    {
1 p- H2 Q& l8 r) {        ECHO("%s", dir_list[ii]);& C! |$ _5 ~$ q* X
        if (subs[ii]) ECHO("...");
9 F; ~: ^. J2 \" Z9 L5 f        ECHO("\n");
' m/ K* Z, w6 |    }9 a% i- s/ c% P6 n1 F
    UF_free_string_array(num_dir, dir_list);" _" }& i9 x6 C7 b% h
    UF_free(subs);* i8 y. w8 R; ^, r+ w0 x- B3 a
}
0 z- I8 y. f! e/ Z$ ?& D; K) l. C4 u, L7 h6 |
static void report_assem_options(void)
, q: z2 y+ l) `" ^+ s/ I8 j{
  V3 Y, y9 \5 R3 K+ \    UF_ASSEM_options_t
/ @$ H7 k# q2 q: k- g        assem_opts;0 V# m: L7 k% K& }

5 M+ k: v6 t/ ]% Z$ }: v3 _    UF_CALL(UF_ASSEM_ask_assem_options(&assem_opts));
* K2 p; A9 t1 Y3 V! N0 D& g3 b/ A3 f
    ECHO("Part Versions\n");: j' m1 @  r$ f6 a% S! \& g5 M: m/ K( n
    swiTCh (assem_opts.load_options)& P; s( f. ]& J# Q2 o
    {  a1 d: y; N) k7 {4 r
        case UF_ASSEM_load_from_directory:1 x+ t8 ~, c/ K0 ]/ Q
            ECHO(" Load = From Folder\n");
$ D- @  i! f7 ?) T$ P# D            break;: M) n3 k# P5 u% d
        case UF_ASSEM_load_from_search_dirs:8 n. m$ ~$ A3 o! A$ x5 P2 {
            ECHO(" Load = From Search Folders\n");
" W- ?0 }2 m1 Q* ]( b9 T            break;0 h9 M3 G  |5 l* k
        case UF_ASSEM_load_as_saved:" ?7 {% z; f$ Y" l/ R2 v
            ECHO(" Load = As Saved\n");
' R- L3 U6 p7 s1 m9 E            break;) h# U( f( f9 @4 R
        default:9 i( x6 v7 v; d6 [8 G
            ECHO(" assem_opts.load_options = unknown value (%d)",
6 W& |) ?5 ~/ H  [+ W5 g& G                assem_opts.load_options);
2 C5 A7 a8 @4 V( |            break;
# f' C2 Q( j5 |, l$ Y* j; x    }' d9 \! M( p2 {$ f# O1 L  S
. u; ]) W* B% r8 p' O% o/ _$ p! q
    switch (assem_opts.load_latest)
* A9 w0 m9 B5 M" D& [6 i    {
+ j# H2 m& T1 ^        case UF_ASSEM_load_exact_version:
8 H9 y- w( b+ O2 U            ECHO(" Load Latest = Off\n");& w; N+ v  B. P; ?/ d% J
            break;
1 q- s- H" y+ E" ?% ?. o1 C/ c        case UF_ASSEM_load_latest_version:* O+ f$ ?! I5 h, Z# r4 R5 N
            ECHO(" Load Latest = On\n");) |  w$ ?- T9 o2 I( r) T
            break;
+ W% z' G0 _  w        default:" `2 Z% L; _0 |3 l& }# e1 q
            ECHO(" assem_opts.load_latest = unknown value (%d)",
4 b* k$ t5 \2 J/ ^5 @6 h  o                assem_opts.load_latest);
7 C6 q$ O8 Y" p' W8 n2 H5 o* C            break;0 ~4 K, P0 o7 P5 \) |# d: U4 g2 k0 z. @7 ]
    }
! `* B+ F- H+ S# y* f: p0 a+ q! Y; l6 P
    if (assem_opts.load_options == UF_ASSEM_load_from_search_dirs). i6 r8 |& W# A# @3 C
        report_assem_search_directories();
: U9 O  M1 B& C8 w$ J3 _- C
$ i* q: e7 F2 B  k' {. Z! e    ECHO("Scope\n");
( f1 ^9 P3 ^8 a1 Y    switch(assem_opts.load_components)
% _4 @9 U7 y* A$ [% i, p1 W    {; G1 `2 r* ^6 J* w# L
        case UF_ASSEM_dont_load_components:
2 o9 e! ?  r8 _, b" m+ b8 p0 Z0 }            ECHO(" Load = Structure Only\n");6 [5 [" u' t, U! @% p# g
            break;1 x5 M1 T5 i6 e3 K4 [9 |
        case UF_ASSEM_do_load_components:
2 a# x9 q% p: g5 Q; x            ECHO(" Load = All Components\n");; W: Q0 X3 \0 N
            break;
' e) V! W- f  r        case UF_ASSEM_use_last_component_set:
' A( q. `. K+ D$ n. v            ECHO(" Load = As Saved\n");8 g7 V6 K: ?1 P0 ^, e7 S
            break;4 D3 ]$ B; @6 V& ^" w
        case UF_ASSEM_use_last_filter:5 ~% h9 o5 ^2 `  s* `
            ECHO(" Load = Re-evaluate Last Component Group\n");- O8 W5 \7 ]0 B
            break;
5 ^4 P( ^! F) V- h3 V! L: P% K        case UF_ASSEM_specify_filter:
3 K( s) d! k1 Y0 b, @* z            ECHO(" Load = Specify Component Group\n");
; z/ l. c3 J9 g            break;
) E1 i6 P4 v+ f& ?, [/ D        default:% `, Q3 f* Z( D. J
            ECHO(" assem_opts.load_components = unknown value (%d)",8 s" X. s! M, x! E* H
                assem_opts.load_components);
6 C7 F6 G" @5 A5 v            break;4 }5 x8 D  o5 _8 G9 H8 ^, |  }$ \
    }
% P6 f) e1 }+ y
3 ?; {1 I! g; B+ E2 q) L    switch(assem_opts.load_fully)
) X; |* _2 u6 B( |! r) Y    {% d. D/ c: n3 ^) Y5 L7 p. ]  k( C' ^' C
        case UF_ASSEM_load_components_partially:; H" r- l0 W5 c( g- M% U
            ECHO(" Use Partial Loading = On\n");/ B7 y, l7 \7 J) ^0 I9 A3 x/ m' W
            break;
0 ~. X1 s$ u( V8 o* R& M        case UF_ASSEM_load_components_fully:
/ O: V0 e8 ^% E# Q" T2 K: p6 n            ECHO(" Use Partial Loading = Off\n");( ~5 R( F5 c8 [2 u
            break;
$ n0 q! w! M1 R) H! N$ ]        default:$ @$ C/ {- O6 a# R
            ECHO(" assem_opts.load_fully = unknown value (%d)",1 H- V- n* e2 \: h5 \( V
                assem_opts.load_fully);
; m8 s7 P5 [- p3 N            break;7 u0 Q8 L' @& `* |: Q4 o7 h; F
    }1 p/ e* a2 D# @" M
# G+ h- ]: {$ G; j% S, w4 w6 v! y7 ?
    switch (assem_opts.load_wave_data)
  b- y& K. O# k6 ?  g  C    {
5 p! k+ ~: K3 Y2 }$ @& U/ ?        case UF_ASSEM_load_wave_data:8 f+ v' \) K: n8 S
            ECHO(" Load Interpart Data = On\n");
' K8 a+ h" T. E4 D( g+ O' S! e; J: T            break;) Y2 q- B9 I0 A% L) R
        case UF_ASSEM_default_load_behaviour:
" a: ^. r/ S2 g! \' ^1 C            ECHO(" Load Interpart Data = Off\n");9 N: v) C, z) n$ K1 _
            break;
6 n8 u5 }/ B7 N" c- Y2 X# @7 ^* g/ [        default:! f1 w1 u* f9 L1 t% q) c
            ECHO(" assem_opts.load_wave_data = unknown value (%d)",0 T1 X6 N: _8 o2 ~  H
                assem_opts.load_wave_data);
& I' B! Z8 p$ P; z            break;
& V: e- A/ W/ [- ?    }; g6 s; l, h8 ?. j
8 h" {2 g, s- C% e; k
    switch (assem_opts.load_wave_parents)- I* l* m& \$ u
    {
+ N$ U1 I1 J" r6 }9 l) B        case UF_ASSEM_none:
5 m/ X8 Z( U8 N! g& T            ECHO(" Load Parents = None\n");* [7 V5 L' y9 K8 E  k9 C. X
            break;
; F) \: k) ^! k1 T        case UF_ASSEM_immediate:
0 _- J3 Y$ e- g0 K            ECHO(" Load Parents = Immediate Level Only\n");0 c1 R6 y5 X0 z: x' R9 @
            break;
8 a" X! k2 h7 e        case UF_ASSEM_all:  m8 ~/ ]! r$ X$ ^. T# i
            ECHO(" Load Parents = All Levels\n");
9 L# f  z/ m. E  Z            break;2 w8 [9 x- d0 a% \3 D9 j
        default:" H7 ?5 l1 X: Y% L
            ECHO(" assem_opts.load_wave_parents = unknown value (%d)",
8 R2 y/ ~; Q9 H9 x6 O% ]                assem_opts.load_wave_parents);0 }% N' g$ i6 v+ R' x$ ^
            break;# j) W' u) b$ C4 g) y* z
    }
1 ~+ d, k# P! l: e9 H6 G8 Q/ Y
/ z2 R, r" l' W3 P& ~    ECHO("Load Behavior\n");- h: C4 S) z* K2 D0 h- f
    switch (assem_opts.load_substitution): S# S  C" U3 W9 Y. z1 P6 ^
    {- o$ ]. s! r! S6 I% z* Y
        case UF_ASSEM_do_allow_substitution:
! R( }8 y! ~! `, M            ECHO(" Allow Replacement = On\n");7 W) n1 L5 ]1 y/ r; A$ m9 I/ i! a
            break;' x8 D6 e5 j9 I) J
        case UF_ASSEM_dont_allow_substitution:
3 H" y/ }' o( c5 N, y            ECHO(" Allow Replacement = Off\n");
/ a& \, r: Z; Y! |4 ?" k0 e            break;# @# U8 p# s3 j0 G9 J: u/ C
        default:
6 j9 r) j, X' \) {6 v' N: n: h            ECHO(" assem_opts.load_substitution = unknown value (%d)",
! ^' h& h$ o" I5 h% d, `                assem_opts.load_substitution);) ]: A# q% B6 }2 t' p7 l
            break;
! K- r+ G4 ]' e7 Z    }# G" _  B# c5 ^9 z8 W4 W: a& y
1 Z" a! k) M- ?8 T5 x
    switch (assem_opts.auto_regen_pfm_option)
7 o- \6 O& b. b% ?    {) g: |7 T. p' _& S1 ]
        case UF_ASSEM_auto_generate_pfm:0 s6 R& t3 Q0 O  M3 I
            ECHO(" Generate Missing Part Family Members = On\n");
, _! n) {4 w& Z3 D            break;* [4 L7 q* {; L  I8 o5 y
        case UF_ASSEM_dont_auto_generate_pfm:6 i* E+ A, B' Y: N4 Y
            ECHO(" Generate Missing Part Family Members = Off\n");
+ h1 i6 a$ p; X' R5 ?; Q            break;; n: ?# {3 B$ w% R! d( G: _
        default:1 s3 E# j3 I3 J/ P7 R" g9 ^8 V
            ECHO(" assem_opts.auto_regen_pfm_option = unknown value (%d)",0 C- W% T0 g2 C6 a. C) ]
                assem_opts.auto_regen_pfm_option);% E- U8 @8 I- ]+ e& W4 U' T7 g  g
            break;) N$ P* L* _9 P9 o4 U' S  H
    }
% F  B6 ?$ f) k, q: W2 k* E8 @2 F+ K9 _1 E: X# J
    switch (assem_opts.failure_action)5 l5 {7 C) ?/ Y+ @5 X& v- }
    {
8 A7 Z! R! [1 H( @. V( G. D4 _) J        case UF_ASSEM_do_abort_on_failure:
/ f5 {+ w! g# F& k3 ~: b: M            ECHO(" Cancel Load on Failure = On\n");# p7 H- f& \& p" o
            break;
: Z, Y9 v) h+ I4 a) f8 F        case UF_ASSEM_dont_abort_on_failure:
/ `& K8 z1 w7 d/ m& U" d* M# _1 |            ECHO(" Cancel Load on Failure = Off\n");# v: F' K- h) l8 h1 ?
            break;8 a; H* D. _( `9 D9 a+ a$ T) E
        default:
) Y& ?7 ~( s1 w5 c: a            ECHO(" assem_opts.failure_action = unknown value (%d)",  d$ f$ ~# P" {) `
                assem_opts.failure_action);" a! O& n# _4 c2 v7 @0 b2 ^
            break;/ c+ ?' I0 t% b  C% ]  c" k/ I6 v% Y
    }+ i" V& ^( P- p
  G7 I5 k% D. o3 Z" }
    ECHO("Reference Sets\n");, F8 @* C6 H$ _& Z. _1 j4 d% M6 M4 g
    switch (assem_opts.apply_to_all_levels)6 s+ X3 [7 q2 v  P( K
    {
! B8 V5 {  e* M+ |: V        case UF_ASSEM_do_apply_to_all_levels:
( \0 v) B" a+ B$ Z3 b1 _/ L            ECHO(" Apply to All Assembly Levels = On\n");
/ A$ Q! m  b! ^" V' A            break;  A, a- A5 K/ J# R1 P
        case UF_ASSEM_dont_apply_to_all_levels:
" _0 C+ M2 }' J) j0 s  |, s0 }            ECHO(" Apply to All Assembly Levels = Off\n");
( i$ M; P! j, ~: e: o. R9 a            break;
3 x5 ~3 `3 E# I        default:
. k% Y( F  j( u+ p1 [7 H, Z            ECHO(" assem_opts.apply_to_all_levels = unknown value (%d)",% ~4 v( K- }* F
                assem_opts.apply_to_all_levels);
+ \; w) D$ D( F; E            break;+ N9 P2 L) m; `; c
    }, O8 ~- C7 t, {1 l# N5 {
+ U) O9 s; v7 _' |% J
    ECHO("Preferences-> Assembly (misc)\n");
! H2 O% Q+ U5 B2 a1 L4 C    switch(assem_opts.emphasize)! z* P8 l8 ~5 x# K$ P( b+ H9 b$ _
    {
- \* g$ [! ~, w1 Z) q        case UF_ASSEM_do_not_emphasize_wp:# H7 E0 ^" l: a( U
            ECHO(" Work Part-> Emphasize = Off\n");
$ q5 H4 k1 a! j            break;% A7 p9 i9 e3 x# l
        case UF_ASSEM_emphasize_wp:
/ Z6 v  F6 Q/ T            ECHO(" Work Part-> Emphasize = On\n");
! Y" N/ L& ~. w* V2 o( A) h            break;
7 Q) |1 F) w# o  V$ h! W        default:
. D) ?3 u8 U# T4 S0 S- E$ O) N8 x            ECHO(" assem_opts.emphasize = unknown value (%d)",
6 Z4 x3 [3 Z& a                assem_opts.emphasize);' Q2 t" _* K# v% v8 {& R
            break;  l  _& u7 ]5 W1 [! F4 v
    }- Y7 m% F  Z: i! \$ {% Q( m! W

* }' H- Q% j' b    switch(assem_opts.maintain_work_part)
8 W5 _  T; G' q# G+ ~    {2 L* ]: p) I0 C! S1 n! {' M
        case UF_ASSEM_do_maintain_work_part:# i, O) U" \4 Y& Y
            ECHO(" Work Part-> Maintain = On\n");
6 A  a/ G: E# J/ `6 W$ z            break;
7 i* U4 \/ d/ G- `8 i) c& j        case UF_ASSEM_dont_maintain_work_part:* G: S1 C& K0 `  d: a/ k7 b' W5 ?: b
            ECHO(" Work Part-> Maintain = Off\n");
: W2 k! \- s1 j7 h* g( g            break;4 n  ~/ v9 \- g7 `, k
        default:; ^& Q0 }9 M( U0 e6 g
            ECHO("assem_opts.maintain_work_part = unknown value (%d)",# c* t( B) X- H; \
                assem_opts.maintain_work_part);0 x3 f8 Z' `* d5 T: G# G3 X
            break;
3 l( Z0 ]3 V9 l% c    }1 Y6 o( l2 L3 M8 u  r. {
    switch(assem_opts.update)' O9 {6 k/ f7 ^9 I1 Z
    {
1 k0 e2 ~1 o, T- E        case UF_ASSEM_no_update_report:( J8 ?7 X! V  d5 b3 a
            ECHO(" Display Update Report = Off\n");9 p' x# O: E& R7 k) n
            break;  W( Y3 A# E  k
        case UF_ASSEM_update_report:' H% P6 M7 t1 e& L) |( E
            ECHO(" Do Not Display Update Report = On\n");
$ N- t4 x& M8 T2 u; u6 _% E1 x            break;
( O1 t8 B) ]9 w3 O# A6 W        default:
. t2 }! d- T9 c  D+ i* @2 e7 V            ECHO(" assem_opts.update = unknown value (%d)",& C/ k0 X& b" f
                assem_opts.update);
3 a" P& Y2 k6 d$ N& _; b  h; T            break;( r# }  i) A5 M0 a7 i
    }
) f4 v7 f, `2 [( x2 r}. e! U  {, l$ r" G! z: q$ k: E8 J

8 N& i2 j% t6 ~! v* D6 Estatic void load_specified_load_options_def_file(void)
2 l$ N: d! A. ^. |$ j: |{
& x6 G- g7 K1 H    int$ N1 D! Q" T; X$ X0 u
        resp;: B! q/ B+ H9 Z7 V' F
    char
( N. y8 V" m4 K        filter[MAX_FSPEC_SIZE+1] = { "*.def" },6 I: K$ Q; T8 W8 D) }% G6 n2 _' R
        fspec[MAX_FSPEC_SIZE+1] = { "" };' m2 a- Y5 F6 V0 h" ?: y

# A6 L  P. R; X2 Y5 ?0 v" K" p    if (!UF_CALL(UF_UI_create_filebox("Enter load options file to restore",1 k! q0 b8 A' U8 k' q0 O/ g' D
        "Restore Load Options File", filter, "", fspec, &resp)) &&
7 \( t& h, w( g. D0 Q        (resp == UF_UI_OK))* m0 E' T8 I' D* g
        UF_CALL(UF_ASSEM_restore_load_options(fspec));
0 T+ H* C: m$ @1 X! l( ^7 i1 z  l' |}7 n# C8 C9 m' q6 P
( f' k* |  z6 {& H' w. s! {
static void do_it(void)4 f" _$ ~" i5 g2 P, J
{
  O* m+ ], O. w' s    ECHO("Current load options:\n");
$ C# y2 I4 \' X% l    report_assem_options();) S3 e) u" g0 P1 @6 A

& ?0 P' _- b, Y8 Q3 I    load_specified_load_options_def_file();% C8 @. l( a, M8 m  n6 x
* e& Z) W% \. I
    ECHO("\nNewly restored load options:\n");
* ?* q; l0 n9 q; ^( C, z% q2 w) R    report_assem_options();
% Q4 Z  I0 {& r}
2 n# \/ [2 C; Y) n$ ~/ V( W$ C3 p  I
/*ARGSUSED*/
& a* \5 D9 C3 {1 F4 Vvoid ufusr(char *param, int *retcode, int paramLen): g1 m! L) A# s. T$ b
{0 C2 P& C% J+ |+ E, ]5 F+ a
    if (UF_CALL(UF_initialize())) return;1 H8 s2 r0 X9 g# I
    do_it();5 Y9 E) B# b, c5 t3 R: v- u
    UF_terminate();; W8 O% W/ t4 Y
}0 U. L$ w/ C3 J- i' u

' |4 I5 l0 R0 l( c9 s. Vint ufusr_ask_unload(void)
' [9 ]8 \9 e& P- a, K( Y{
3 E7 d9 K, ~# M, V    return (UF_UNLOAD_IMMEDIATELY);
" ~5 s4 t2 {/ i% `! q! h# Y0 l}[/mw_shl_code], W; C4 U4 V9 ^0 B
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了