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

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

[复制链接]

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

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

admin 楼主

2019-9-15 08:32:35

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

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

x
0 u) k# m4 L' L
NX二次开发源码分享:报告装配加载状态,设置装配加载, x7 v" L/ F- k3 O! D) Z
0 _1 Z) O. s' l9 K3 ?
获取Load Options 并进行处理!# B+ N7 j. n. |5 s) h
& }; P1 K! e, z' P
[mw_shl_code=c,true]#include <stdio.h>
, Z* i  M4 G3 v! p; `( F1 ^#include <string.h>
4 }0 R9 R3 U9 y( O#include <uf.h>! X' p  }; @% q1 x% C0 `( L
#include <uf_ui.h>9 y, R  b; Z0 W5 X
#include <uf_assem.h>% c: Y1 p: ?' U# c. I; j6 \

) Z! W, p  I( g/ W4 l( Z& q#include <stdarg.h>* u3 M, K9 A. `/ A' M; Y1 V

9 Q* A; [+ W4 h0 [5 o' U9 |* ostatic void ECHO(char *format, ...)
$ B2 m' }8 |$ L: t' O{7 f" s6 _* \5 I4 i4 ~7 c
    char msg[UF_UI_MAX_STRING_LEN+1];
* ^# H6 f/ {  O( Z    va_list args;  o6 d" \# M7 b( w; H3 z+ v
    va_start(args, format);
0 p: n% F7 Y+ ]+ q) C4 l, `    vsprintf(msg, format, args);
3 E% v2 l3 u# q- n    va_end(args);  @* t& b4 n$ s4 Y/ ^# M
    UF_UI_open_listing_window();
, ]* U" o* ]. V9 S: S    UF_UI_write_listing_window(msg);5 j0 J# E2 x+ @* p& @. k2 Z
    UF_print_syslog(msg, FALSE);
5 m. l3 i5 S! y% S( u3 B1 E' O}) A+ q, S* D; l* A( W
7 I; W' L% C$ C, H# L5 o8 N5 A" z
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
5 w3 E9 s  V/ V# _( q. ?; x9 Z+ [
static int report_error( char *file, int line, char *call, int irc)! y( w0 ~; P1 J8 ~; W& H* a
{
% B2 o8 p: C4 r1 |& [    if (irc)
% z2 @  u& G5 m    {
6 T. a' U( `% t; w) x0 Z5 u        char err[133];8 V/ J8 K: t4 {+ w  m( T
1 M& b2 j/ c6 P2 z) y
        UF_get_fail_message(irc, err);7 c  Z7 u, X, {& {2 Q3 H( r
        ECHO("*** ERROR code %d at line %d in %s:\n",: c) m( q" k4 Q" `
            irc, line, file);
9 s# w) W  n9 H        ECHO("+++ %s\n", err);
7 C( Q! }/ d7 ~5 I" N8 \        ECHO("%s;\n", call);
+ P9 a' j& }4 @4 ^+ O9 }  F    }
8 Q' D& {( I" z0 X+ |) D2 s, j' z# b8 h9 F9 m3 I6 _, i8 i, ]
    return(irc);4 x7 q1 Z; x( _. F/ \( b
}& d6 ~, w/ P/ P6 y* w1 k( {. S

3 p! y2 o& q- Z: ~- f) _static void report_assem_search_directories(void)
# w2 t/ v; t; k; E{
3 |8 r/ R/ E6 L0 L9 q    char
  \6 z) b/ |7 F4 P0 K, W        **dir_list;/ P6 z; [4 i  @
    int  ]4 K7 B% [, v1 d
        ii,
3 Z! q9 T, U' i) y' v        num_dir = 0;
) F5 z% g5 b! Y- ^7 D    logical
+ I" z# e% H& p: f* X        *subs;
# l. \  Y: r8 t# m& b% ~
6 u& S* F. `, H8 C6 M( ~    UF_CALL(UF_ASSEM_ask_search_directories(&num_dir, &dir_list, &subs));
0 C/ z: z; O5 ]& ^! L9 ^7 I    for (ii = 0; ii < num_dir; ii++)
0 l3 K  X6 v5 \3 [" L, I" j    {
; d, j) |5 f( T" A1 I( U) Q        ECHO("%s", dir_list[ii]);
0 n0 Y2 `" Y" i3 o8 M7 E$ h        if (subs[ii]) ECHO("...");; y2 s. \# N2 T) \6 m& [4 ^6 x
        ECHO("\n");
3 u" ], Y4 P. C' W    }
. f: `! m( B; N9 W( l    UF_free_string_array(num_dir, dir_list);
8 N6 }: w$ o$ p    UF_free(subs);
/ U+ Q3 k9 r' L8 T1 ]2 x: D1 G. s}0 _( v( {% ~8 P7 M% C
0 m( t) ]% q0 H1 X
static void report_assem_options(void)& s* o3 b* D) p4 r5 ~# ^& n$ K
{
9 U, g- I; e7 z    UF_ASSEM_options_t
: ?  b: f/ b3 f5 O& y( l- ^) C. d        assem_opts;
4 K; K' {/ C* t( K; D% w7 N, A5 K! o# M3 l/ B3 K
    UF_CALL(UF_ASSEM_ask_assem_options(&assem_opts));0 _: t$ q& A: e0 Y" s. H7 t$ Y

2 i' w1 f+ w/ P' I5 a    ECHO("Part Versions\n");
( o7 I& c8 P1 G  U' Y7 q    swiTCh (assem_opts.load_options)* a& y' Q' [8 i: i6 J* X/ H( L
    {+ p' G$ S- Q9 V- s# {7 p
        case UF_ASSEM_load_from_directory:" X! |' q+ x. M: h0 B- x
            ECHO(" Load = From Folder\n");0 Q% a; j& C2 x* Y
            break;
( |8 M1 J! {! \' @9 H- ]; y6 T        case UF_ASSEM_load_from_search_dirs:$ v4 T+ T9 s* W6 N) n7 k- O
            ECHO(" Load = From Search Folders\n");
6 {& b/ e( S& b            break;
7 Z2 |& n! q8 \# u4 S: d9 m3 C' A6 I        case UF_ASSEM_load_as_saved:. Y! v) P* g, v/ s
            ECHO(" Load = As Saved\n");
7 B0 s' ?7 u( @- \% y* W8 m8 ?3 f            break;% W) ^2 Y* w! e" [/ @
        default:
9 v# y) u% R( ?( B* ?# x            ECHO(" assem_opts.load_options = unknown value (%d)",! d, o5 q* ~* y7 u/ h, V1 ]
                assem_opts.load_options);
4 z' q/ c" r  j; l9 z( C. d            break;: |9 b/ H6 Q# z& b" C0 @8 D1 [
    }
4 W$ r# G( }8 j2 o3 j- K" c. K% H$ L% K3 ]: H: _/ I
    switch (assem_opts.load_latest)
8 {4 N  D6 T# v; v( a5 M0 Q    {
  {& L' I$ l8 u0 y        case UF_ASSEM_load_exact_version:5 b2 q, x# i  ^- K  z
            ECHO(" Load Latest = Off\n");
& N2 U' A2 h6 s: ?. {* R: K* x! g            break;$ {5 ~' x. h5 y  |1 F
        case UF_ASSEM_load_latest_version:  h* o8 q4 R! j, X! L3 G% G
            ECHO(" Load Latest = On\n");: X0 ]3 w$ m5 Y' O- k3 R! \
            break;
% l' S" A/ d0 P/ N        default:6 q( Y7 t$ J3 X' }  y9 h
            ECHO(" assem_opts.load_latest = unknown value (%d)",$ X! H6 g% q3 N# h& Y
                assem_opts.load_latest);' A4 \7 H/ p6 }# N& S( G
            break;* Y/ m. e! m9 U- v" v' l
    }
, m) k4 L+ G6 d2 R" g: E3 P4 c; j
. u' b7 v3 T3 o) \    if (assem_opts.load_options == UF_ASSEM_load_from_search_dirs)
# _: `; l! H- ]4 F        report_assem_search_directories();
+ [. o, I1 h5 y' {% \9 n, _8 q
  Z) F% h( p3 W4 \3 {1 k7 ?  Y/ I5 L; T    ECHO("Scope\n");
& M) W" d( r0 S# C    switch(assem_opts.load_components)% }8 V+ Z$ c' `% k/ [/ p
    {
: |5 ]; W: N# }% j% U2 ~: y+ d        case UF_ASSEM_dont_load_components:
4 \. x" F4 H; ^" `, n            ECHO(" Load = Structure Only\n");
- B: _, q  B; J/ i) c            break;" t9 t8 @. g2 T9 j0 d( K7 U
        case UF_ASSEM_do_load_components:1 E4 E+ D3 ^' ?: Z, ?0 o) P5 R
            ECHO(" Load = All Components\n");6 L0 E; M% b5 i: i) \
            break;
6 d8 P1 w2 Y3 S2 X0 H7 }! C        case UF_ASSEM_use_last_component_set:8 d7 C$ K- m/ Q7 v5 O& i  {
            ECHO(" Load = As Saved\n");  g9 s5 o( J  c6 c) s
            break;
* T; M( w0 X  W        case UF_ASSEM_use_last_filter:8 T8 T" _* l6 i" z
            ECHO(" Load = Re-evaluate Last Component Group\n");8 B4 |- I5 R4 ]* k# q
            break;# \, D- c) {4 b; k
        case UF_ASSEM_specify_filter:5 z2 Y( }  A  l  i
            ECHO(" Load = Specify Component Group\n");
7 I  H. \: q5 j: q  O            break;
; v1 h# d( f2 ^( A4 \        default:% T0 k& n1 G- t8 Z
            ECHO(" assem_opts.load_components = unknown value (%d)",) [/ a% Q' G) I2 X4 K+ j# W
                assem_opts.load_components);' [% K4 j% E& j0 P# {$ T9 G7 X
            break;7 V/ c: _5 G& |4 C+ e# `/ a& t* b+ R
    }
4 p, D$ t' l6 t( x
- d& i8 w! Z! f  r: q2 h6 \    switch(assem_opts.load_fully)
2 }& M4 k7 {4 N! H% t- w$ T    {
! ~+ G6 F' E$ Y* @0 Z        case UF_ASSEM_load_components_partially:
# c: @- ~) l8 n* M# n            ECHO(" Use Partial Loading = On\n");4 h. [/ q/ r. o# ^; X
            break;. }9 A: |( i; _8 b7 K2 w& ^" f) E8 a5 U
        case UF_ASSEM_load_components_fully:# b5 g6 Q- w3 y% x
            ECHO(" Use Partial Loading = Off\n");1 L2 R) w/ @1 B" F' t
            break;1 J5 o  L; e5 l
        default:
+ ]" l2 N, d' }8 a5 y" D2 e            ECHO(" assem_opts.load_fully = unknown value (%d)",
% a1 ]4 Q  q" G. A                assem_opts.load_fully);
" H8 q# _, s& @' H/ F, y, j            break;) `$ z+ }8 S  s3 k2 W3 n: C% a
    }
. r- q1 F# {% ]( e$ m3 Z( i+ N2 m1 m8 x+ j( C: F0 n
    switch (assem_opts.load_wave_data)5 S6 J# p- x, O& ^. S
    {
1 y- \# S, |  [+ L; M        case UF_ASSEM_load_wave_data:" D2 s. I1 J; V. J$ i/ V1 ]: ~" X
            ECHO(" Load Interpart Data = On\n");. ]* r, M5 h, [& C& Z
            break;
. @- C' N" E7 T8 Y- U0 A        case UF_ASSEM_default_load_behaviour:
1 B7 I. x: X; l8 J; F( H. j            ECHO(" Load Interpart Data = Off\n");! g$ t$ A2 E/ n& _' L: L6 K
            break;# E% F, G5 L+ t- y2 S. ?
        default:/ D( g0 q+ @0 _8 J+ k# Y
            ECHO(" assem_opts.load_wave_data = unknown value (%d)",( e0 `; b" Z% S
                assem_opts.load_wave_data);
0 y  }  R+ V( K3 H            break;) Q$ `! o/ u0 T& M4 V
    }
% A+ g' d  L  B9 N/ Z& w1 b, Z$ |8 A; l/ D* E7 w
    switch (assem_opts.load_wave_parents)' x- I% s/ s$ ^
    {
2 j* J( L5 |2 t# `& _% \5 X        case UF_ASSEM_none:  U+ G) i2 J2 a8 i
            ECHO(" Load Parents = None\n");& t! _/ L: @4 O, Z7 A
            break;
# _" Y1 d& D; X: w, ?6 I        case UF_ASSEM_immediate:$ F& i( h9 a  e+ D0 @
            ECHO(" Load Parents = Immediate Level Only\n");
) S$ q- p6 O8 i5 @            break;( o* s+ Z" ]+ k* V* B; X: |- O
        case UF_ASSEM_all:$ q3 i, a" s# I4 t- V- Q3 k& b
            ECHO(" Load Parents = All Levels\n");
* n( q$ F9 j1 K9 `5 l            break;
/ c4 H) v" E3 f) b8 g/ j        default:) E2 O; x+ m9 [
            ECHO(" assem_opts.load_wave_parents = unknown value (%d)",
" ?% B5 g& ~) e. \: ^" ^8 _                assem_opts.load_wave_parents);
  R: I$ a1 G2 a9 N) n            break;" d6 q8 z" j. f+ S, ^
    }
2 D6 m  Q5 s, c1 \$ ^, N9 F& r6 F
6 g, Q- O% q1 s1 |3 P    ECHO("Load Behavior\n");
6 ]$ ~5 T1 Q9 E$ y  N    switch (assem_opts.load_substitution)
' Z% K3 S2 v. c; P    {8 P8 r5 m" ~  n' K, [6 q
        case UF_ASSEM_do_allow_substitution:% p" n( f& q3 `3 o/ j2 |
            ECHO(" Allow Replacement = On\n");6 x& L9 X7 R4 Z" V& j8 j  u
            break;
  [, d0 @! J  q& z" z5 B0 i. M5 B        case UF_ASSEM_dont_allow_substitution:
8 X9 x; @6 j' i( _. p9 J            ECHO(" Allow Replacement = Off\n");
( A. v" s. l% o# x% F+ ?4 W& ~9 v            break;' N" d1 Y* Y5 Y
        default:0 K! `. s1 u: d
            ECHO(" assem_opts.load_substitution = unknown value (%d)",3 ]6 l/ V7 S4 z2 }- N: k3 C
                assem_opts.load_substitution);
6 x2 }7 o7 _4 j- c) v9 j            break;
7 f, p9 _& {* \4 D/ ]6 w% d# d# e. R    }
4 [# f0 t1 s& |8 h. h# _" c. W# P& _! Y, r9 m  d# m2 y( r
    switch (assem_opts.auto_regen_pfm_option)" X  |  V5 _0 i# v1 {3 b
    {0 y+ y4 d1 h& Z4 z4 V1 E; f  V6 f8 P
        case UF_ASSEM_auto_generate_pfm:
7 [4 [- {" s) N& B- O9 X            ECHO(" Generate Missing Part Family Members = On\n");
0 k+ B' T' O9 @8 p" b8 j            break;
) t$ u6 u- {" |% H; D9 c7 Z4 `        case UF_ASSEM_dont_auto_generate_pfm:* t+ {7 J6 o. ~( h- `
            ECHO(" Generate Missing Part Family Members = Off\n");
. j1 X6 {. j7 ^4 d/ q4 t            break;
$ a' o9 w4 e8 e$ `: r        default:) G* K7 B* |/ m, u5 T5 c% g
            ECHO(" assem_opts.auto_regen_pfm_option = unknown value (%d)",. p- H- I4 v% G* g! K
                assem_opts.auto_regen_pfm_option);4 s: ?) V6 A% A1 j  X2 T& g
            break;
& t: p! Z3 r& ^    }
* Z1 T  \" e' d- f/ w# ?: z
' K" X1 ^  z% `+ ]- V* U    switch (assem_opts.failure_action)
/ J. h/ ?4 C6 m" F& W  x    {! h' j5 ~& p' O7 ?$ l' k' p: A0 f
        case UF_ASSEM_do_abort_on_failure:1 _, f, K; r2 n) i) ^& R4 N
            ECHO(" Cancel Load on Failure = On\n");
  N4 A, u1 @) G: o# r( c, P            break;; j: Z* S5 o( ]. c; t8 A
        case UF_ASSEM_dont_abort_on_failure:6 m- r" |9 h. T9 w; Q
            ECHO(" Cancel Load on Failure = Off\n");6 n6 }9 j6 t$ n5 }- R0 T; D% Q# R
            break;
" b7 b3 K+ G4 |/ \# X3 b        default:0 W/ y. w* ?, x5 B* x. T$ Q6 F$ J
            ECHO(" assem_opts.failure_action = unknown value (%d)",9 t$ P. g/ U4 I. P" S* @
                assem_opts.failure_action);/ J6 N4 }2 T! u5 j7 r
            break;
* }8 Y( u& j+ o+ Q    }1 `; u, P$ x) h; V) B7 t3 V

' V/ H# k+ v& ?# g5 h$ L% l    ECHO("Reference Sets\n");
; o: \( i: F+ }6 w: V. I& F7 }    switch (assem_opts.apply_to_all_levels)
2 I8 P/ g0 L! J* r# V) b0 ?    {! X5 E3 m+ ]; w8 l0 }" u, D
        case UF_ASSEM_do_apply_to_all_levels:( R  c; \6 t$ T' P0 Z
            ECHO(" Apply to All Assembly Levels = On\n");
0 d% A- v5 D0 X0 ], W            break;
; C" c+ p) \& `( ^        case UF_ASSEM_dont_apply_to_all_levels:0 A/ ~" x  p% ^( Q4 V+ t5 O
            ECHO(" Apply to All Assembly Levels = Off\n");
% Y  a) ]2 r0 G& t/ O8 [            break;
6 y! u/ m7 {+ q5 P        default:' V& U; k, r" \8 \9 T
            ECHO(" assem_opts.apply_to_all_levels = unknown value (%d)",) O8 a5 A+ `/ r1 B% P6 V
                assem_opts.apply_to_all_levels);3 Z% x% g% c% [% C" [( b) w
            break;! Z) J& i# t6 l
    }
4 O' F; P3 @: U3 c3 A& \$ u' `( S
! N. |% [( j, j) m$ J- [    ECHO("Preferences-> Assembly (misc)\n");2 v* ~  V5 h5 \9 A9 E* ]- _
    switch(assem_opts.emphasize); I  g/ o( T. Y0 v! @* [4 \5 M
    {0 O2 d- r) T  D" B3 U' q3 `
        case UF_ASSEM_do_not_emphasize_wp:  Q& _( k% g5 Q
            ECHO(" Work Part-> Emphasize = Off\n");: d6 L! n' O# }& h! S9 s
            break;2 k1 j0 b  b  L( Q* z- U! w
        case UF_ASSEM_emphasize_wp:: U: Y; O# f; m
            ECHO(" Work Part-> Emphasize = On\n");4 P/ \% ?6 v( W" _. ^
            break;+ b  K2 X% ]" p1 z% H4 L- E
        default:
% ?! V3 a3 `+ T' l/ R5 E: D; u! c$ p            ECHO(" assem_opts.emphasize = unknown value (%d)",; h8 d, j, A8 r; U- ?1 P
                assem_opts.emphasize);
! \7 l1 r: R8 ~4 Z7 @5 e            break;
7 ]3 a% w3 Q) P; ^. g: h    }6 G& Y2 m# k' @7 e" h$ g

  C% W7 O3 b4 e, R: u    switch(assem_opts.maintain_work_part)( b; y6 l& g% i- v& I
    {
! ~0 K) D0 f; O  s) `* x2 Z) m        case UF_ASSEM_do_maintain_work_part:
0 K* A2 N, n  |1 ]: g8 _. D- o& y            ECHO(" Work Part-> Maintain = On\n");
; v" _3 v8 z# [, _            break;
! e5 J% ^/ V1 S& C1 w3 O        case UF_ASSEM_dont_maintain_work_part:
( Y) h( E  l! z2 `            ECHO(" Work Part-> Maintain = Off\n");( \0 z) g( ^4 j$ Z1 V
            break;
2 g4 N9 Q( C; k- G        default:, T* y( O, ~! T6 ~- _8 D$ R
            ECHO("assem_opts.maintain_work_part = unknown value (%d)",
7 v8 |) E  B9 o0 {  I                assem_opts.maintain_work_part);
3 ^8 ~; T6 _/ b* w; W4 U! h% V            break;
/ E; O$ k$ ^9 W- b' I    }
. q  d0 P' j6 V/ r5 `5 _" L% N  Q    switch(assem_opts.update)
* w" E2 J7 w) `    {
$ m% d/ D% H: P4 ^( X5 V" J        case UF_ASSEM_no_update_report:
" F% N, u; K; M8 l% R6 r, j& I* h            ECHO(" Display Update Report = Off\n");
. b0 W1 S, T3 ]; ?- M0 v) z            break;
( N- [  h6 r6 K2 q7 s  x" J        case UF_ASSEM_update_report:
9 \: j9 z3 p( Z/ I            ECHO(" Do Not Display Update Report = On\n");
" ]' u; |, a/ U7 V5 Q5 N% A            break;
& Q( s8 p7 p( ^! g) K4 |        default:! w' N5 R% W$ i* l. e0 ]
            ECHO(" assem_opts.update = unknown value (%d)",
" N+ S+ e3 U4 r# w                assem_opts.update);; i& @0 Y' M* [" E/ K5 r5 g
            break;
2 n% |/ t" U5 d    }+ h! }! |4 C. G9 ^! E* L
}. L" H# y8 l: \3 d4 p

* a' v7 S6 X: P& g! _3 J5 f( cstatic void load_specified_load_options_def_file(void)+ `' w8 l% U" D3 P( ^# ~
{
- Z0 a8 T1 c# b8 ?5 A" S% @    int1 v# ~  u! ~8 Z* z# J+ Q
        resp;& W3 }4 b9 E& D- X
    char
. X6 p, A4 E  |" u0 z        filter[MAX_FSPEC_SIZE+1] = { "*.def" },
2 f; [1 _0 w+ n2 Z! X: @        fspec[MAX_FSPEC_SIZE+1] = { "" };: S( O. _' a# e! K4 s

4 N. \  y" ?) x, d+ v/ B6 i    if (!UF_CALL(UF_UI_create_filebox("Enter load options file to restore",
2 _% l( {- r/ E; s        "Restore Load Options File", filter, "", fspec, &resp)) &&
+ m3 M# S  @' w8 M        (resp == UF_UI_OK))- m# d2 K; d3 ~7 |" l8 q
        UF_CALL(UF_ASSEM_restore_load_options(fspec));. F8 h2 A$ I6 k& e. ?8 f* v
}  C. p: g8 o% }* ^5 R$ u# z( T
% J3 [" e. Z- E- K9 x" v" a2 K
static void do_it(void)
2 ]3 J- }' I4 R  J- `: e, b% q{% y+ {  @/ a& Y% U
    ECHO("Current load options:\n");
- x, J0 E+ V, M: P" c& L. P2 C" r    report_assem_options();
- i" ?/ l9 T  L8 w' m  T' g9 o; E% I5 e9 O2 f0 r% o  p
    load_specified_load_options_def_file();
: T5 I% q& b, |  V! M( I$ O& f
: p5 G1 L* k+ Z& `, H& _: j    ECHO("\nNewly restored load options:\n");( \0 t# O+ Y8 j7 y
    report_assem_options();) E* k! ~7 r/ s4 H
}
  u1 ^2 {% b5 z( o; Q" N- y
1 u# }; i% P# X  V* X/*ARGSUSED*/
& G0 K$ V6 u$ o! z' gvoid ufusr(char *param, int *retcode, int paramLen)
, @0 e7 I* a9 U- _1 Y' f{7 o, w2 {7 N6 r9 u
    if (UF_CALL(UF_initialize())) return;; T2 [2 ?$ K2 D0 X( E8 I: D
    do_it();
! t$ t% l& h/ z6 S+ z& l8 F    UF_terminate();2 w3 ^  O( p1 u) Z; _. l: B1 ]& S
}
# t# z* _8 j. {7 h6 {4 }/ ?! B
" V& S$ C7 z  v8 C' B- S" zint ufusr_ask_unload(void)3 W, Q  `  t; v+ `* i
{  k4 @: T7 r; e* W; b3 n, X3 r
    return (UF_UNLOAD_IMMEDIATELY);
8 E7 A! Z# b" \}[/mw_shl_code]
- p& ~) N( V2 @: x
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了