PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

[VIP求助] 库缺少需要的入口点,功能名:ufusr

[复制链接]

2017-2-14 11:29:07 6513 0

lzhyi 发表于 2017-2-14 11:29:07 |阅读模式

lzhyi 楼主

2017-2-14 11:29:07

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

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

x
本帖最后由 lzhyi 于 2017-2-14 11:32 编辑
/ |7 d( }6 T8 i2 u  ~' ]) o( `+ I" m& a0 T3 Z1 X- e1 ]. W
请问出现如下问题,是什么原因:库缺少需要的入口点,功能名:ufusr- m% P( E) |% h
代码如下:
  \! Q% R3 h" h- e#include "Shrinkage.hpp"% I: g/ @0 M6 {4 s# g
using namespace NXOpen;
$ D/ n  W, B) P6 i4 husing namespace NXOpen::BlockStyler;4 a1 Q  t) r- d) H6 l* Z; \

' d0 i! ]6 M: M7 U# `: r; dSession *(Shrinkage::theSession) = NULL;
2 o1 d+ U. F5 x3 {UI *(Shrinkage::theUI) = NULL;
2 f9 \4 R$ @( z5 S4 C) \
1 O& M0 Q% e" ], }4 H# p6 X6 R8 PShrinkage *theShrinkage;
$ B3 }4 \7 {3 z4 P9 C% b  ~' y/ T4 c
Shrinkage::Shrinkage()! N& {$ O. k6 x* X; H
{
. t: s9 ]8 J9 y" k. X    try
! R$ T% _( R" S6 {    {
: l5 I3 E& Q( N' I1 r7 E        // Initialize the NX Open C++ API environment9 K/ @. b8 j$ `
        Shrinkage::theSession = NXOpen::Session::GetSession();. n8 E+ L# q: e$ e; i. m
        Shrinkage::theUI = UI::GetUI();
3 C' I  X+ O+ @  j6 P1 e* N        theDialogName = "Shrinkage.dlx";# i7 N5 m; I* E, R0 t9 g& |
        theDialog = Shrinkage::theUI->CreateDialog(theDialogName.c_str());
& t+ d2 N& c5 q. i        // Registration of callback functions$ K; z; a) h) D" o! F/ C
        theDialog->AddApplyHandler(make_callback(this, &Shrinkage::apply_cb));
; u" d8 i( @7 g! V        theDialog->AddOkHandler(make_callback(this, &Shrinkage:k_cb));
# b+ z4 R1 w7 P7 F' B* b" J        theDialog->AddUpdateHandler(make_callback(this, &Shrinkage::update_cb));
4 i! x- @! A! ^6 z        theDialog->AddFilterHandler(make_callback(this, &Shrinkage::filter_cb));+ {% e8 _" e/ `% M' P
        theDialog->AddInitializeHandler(make_callback(this, &Shrinkage::initialize_cb));& _  h! A" S1 _
        theDialog->AddFocusNotifyHandler(make_callback(this, &Shrinkage::focusNotify_cb));
# ]: E9 ?, A7 l( [, [+ f        theDialog->AddKeyboardFocusNotifyHandler(make_callback(this, &Shrinkage::keyboardFocusNotify_cb));- ^! j) ]; V# F$ F+ c- d
        theDialog->AddDialogShownHandler(make_callback(this, &Shrinkage::dialogShown_cb));
* l3 b! p5 T  O, n  W2 h    }
$ C" Q- k. k0 b% p7 r    caTCh(exception& ex)
2 F  P+ K, r7 X9 S    {
6 h! W) O, V+ c) ~   
) |, m+ o! C  W: ~' A        throw;
& O" p6 f# n; x6 C' I    }
5 ]8 C9 b, U* |+ |; N" L, n}
/ H0 F1 A0 z4 s7 n2 }. c+ Z! Z
: o5 k& N# l/ f7 @1 n6 h( XShrinkage::~Shrinkage()
  L8 v5 D; x, {6 ]{
0 ]! N  X. B, P1 z* g& C$ `; ~    if (theDialog != NULL)4 v* y- L0 p# c$ @% C% C' p8 U
    {
: X" j" e* n' s8 g* R7 z1 E( {& G; `        delete theDialog;% q: T& ~2 Z4 n! [( _
        theDialog = NULL;' K0 X" e9 ?; b! i
    }
0 ?$ ?9 c% P8 L8 k; }8 [}
2 I# m- ]( _0 d3 x( d% \  m/ }; [; ^0 c0 b( e
#if USER_EXIT_OR_MENU% O2 n+ n+ y7 |& \  z; K, s
    extern "C" DllExport void  ufusr(char *param, int *retcod, int param_len)
0 F4 M& n' \& W1 a* ]' L% I! C    {
( h9 l& O! ]" M8 M: z- o        try2 }* k0 z: {2 p+ }6 Z7 B2 P
        {
. R2 G$ w& W. K5 j  @5 g! L            theShrinkage = new Shrinkage();
) ?/ z6 W3 `! k/ |' t            // The following method shows the dialog immediately
' \' o0 W9 S0 X" h            theShrinkage->Show();
# Q  z! [) v& r# ^) {        }
5 o) }) K' l+ m        catch(exception& ex)
9 v7 |; F, j) Y& t        {! `9 H9 D% J8 i4 f
            //---- Enter your exception handling code here -----( ?" {9 d5 I! X* w
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
3 u% u9 d: X' M  v7 L7 e        }
  y% g( r& e! i' H+ X7 D, v        delete theShrinkage;0 @' p) o9 {/ f/ C4 t
    }8 R, ?& g# S4 ]/ s) x) P3 s
#endif//USER_EXIT_OR_MENU
) a) r0 L6 {, x& F4 ~#if USER_EXIT; P6 s) T7 v' D$ \, l/ x; O
   
: c5 _: y8 L) P# ~$ T* e    //------------------------------------------------------------------------------
3 _4 s* [3 m. n( X2 ]   % d+ ~# K6 M) q3 s& h
    // MUST NOT use this option since it will UNLOAD your NX Open application image7 N( _& ]7 d5 F+ o! K
    // from the menubar.
2 l: M# _$ ]1 f5 V    //------------------------------------------------------------------------------8 n; y8 e6 w7 M- u
    extern "C" DllExport int ufusr_ask_unload()
" v2 s5 L& v/ f  z+ B% F    {
& K# b5 l) X0 X8 X1 h" A' B: D        //return (int)Session:ibraryUnloadOptionExplicitly;  c, {% A6 S4 |5 \0 c/ h4 H
        return (int)Session:ibraryUnloadOptionImmediately;
2 y2 P* [; U0 i; Y        //return (int)Session:ibraryUnloadOptionAtTermination;
  t0 X% c( s& W' n- r' c    }! Z8 z6 G) ~1 b- L/ P
   
3 P& D0 j5 M" `- T" Y8 B1 V4 w    //------------------------------------------------------------------------------
0 A2 _- k  P* V' f    // This method is automatically called by NX.3 L! D: s& _( t5 d
    //------------------------------------------------------------------------------
- Q; E! j+ K' h+ r    extern "C" DllExport void ufusr_cleanup(void); a6 ^# s# n* L: y
    {
1 I" o3 m- n+ p' Z) Z. F        try
5 h" M- W: y! n. B: J6 K        {  i) w9 p! {5 a5 o  N' r! ~0 ~, w' t
            //---- Enter your callback code here -----
$ o& V2 O8 t, l* Y+ D% D2 Z1 J        }
( ]" V9 d& W* G3 {* x- `  v        catch(exception& ex). {5 o$ K; o- s
        {
+ d2 B  t7 U9 M/ B7 W! J* I            //---- Enter your exception handling code here -----' c% x8 J. z' t$ E
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());8 ?3 W8 F7 [5 d6 a+ n
        }' R) X! _8 z3 U1 C
    }' d' @/ _  U( m, m0 i* P
#endif//USER_EXIT3 [* l# [- A. m1 w. V! ^% n
    - T; L/ ^! J, x( i$ g
    int Shrinkage::Show()/ E% ?+ X1 T# [
    {
, k. k5 s  m! ^5 O, R( @! u        try
7 h* g) j2 g8 a: Z" d+ b        {
4 X5 W9 z9 w. ~3 y, V! h            theDialog->Show();  s) r6 S' q  L) M' a9 O* o
        }
' _' I0 f4 n/ [3 _        catch(exception& ex)
. l9 H+ x. [8 k; ]) C5 E        {
; ?2 a" w3 K, N$ H- [            //---- Enter your exception handling code here -----2 t; Y9 W9 U! j7 f0 j" G. G+ ?
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
: S6 x5 N5 o. w7 g8 o* I: b6 N1 y: K: v        }# ~; C7 ?. ?$ @1 k& V6 k
        return 0;
2 v$ M8 N! O9 Z$ @$ \    }
( n8 s6 u, d( B; ^1 i- O* v$ E   
! J0 k7 i; i/ H" j#if CALLBACK! @; P* L) R) ?3 G
8 t) E6 U0 w% T, p1 \4 h3 ~" m
    void Shrinkage::Show_Shrinkage()% ?! X, q2 F& o2 r
    {% @7 P5 K( I- Z$ N% g- x7 r
        try5 K# ?8 E0 ^1 l) L  s
        {) ]: [* v8 e* l  a9 G; S
            theShrinkage = new Shrinkage();
) P; z- m# c* o  |- t! y9 T
; W8 q/ r! u- E4 h, c+ P: \! V/ c            theShrinkage->Show();
1 L9 W' o0 \3 |4 e/ F        }
. u0 P) \# F! D+ U" l        catch(exception& ex)* @% y) u7 R' d0 y# r, ]' J) w
        {
3 m" m# ~9 f+ M% k
! t+ o: U" u7 s8 g$ [0 z4 a            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());9 p  }# M! Y4 Q) v
        }
. m8 _1 M! [$ `1 R4 _+ }8 a5 ~        delete theShrinkage;
0 J. F9 Q; g" u- B0 [9 B    }
1 T. x% Q6 ?( S" F0 e' Q#endif//CALLBACK+ |! {; n" F! W# G
   
  _+ t. {' \' T    void Shrinkage::initialize_cb()" ?. u* b/ C1 J( S3 b- ^& y* _. ^
    {
7 `5 }# f# c8 w        try
4 z6 a$ j/ k. P* O2 m        {+ u% |/ m' T1 T5 F& z
            group0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("group0"));0 j- j! K& x! J- L' w( m5 G
            face_select0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("face_select0"));7 j, [2 R# I& H6 x1 [" _
            face_select01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("face_select01"));) a/ \- }) d' N2 B
            group01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("group01"));
5 y* F* U4 I5 o            bodySelect0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("bodySelect0"));
5 ~. H0 ?7 P3 U6 ^            bodySelect01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("bodySelect01"));6 {4 ^# r" y5 Z8 n. i% E9 ^8 {
            group = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("group"));
% |9 M; F" v% ?9 k4 m- U) K            string0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("string0"));
( i( T- ^4 ?( p1 q            label0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("label0"));
1 Z+ ]$ ]# N& W/ K5 P            string01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("string01"));4 Q+ k4 }6 W+ B0 S
            label01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("label01"));$ Z2 i( D8 E: u6 @2 H) c
            label02 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("label02"));4 x6 D3 e' k$ U  W# V. g' R
        }, I$ l! Y% Q5 K& V$ i4 h: U' k
        catch(exception& ex)
( c$ r0 [. U9 ^# Z) y4 `; Y) b2 D        {
- o1 j* \9 u% Q, p           
* w8 _5 s6 K* q            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());5 ^3 A/ Z# s; m+ {( ^
        }( X; P8 {9 d3 Z: K4 C6 e# ?
    }
( _. `3 i7 a' C2 X    //------------------------------------------------------------------------------% A$ W3 n- E) d
    void Shrinkage::dialogShown_cb()
- z, e+ [7 t% f- c! p* V# u    {
( X* N5 M" w7 b7 J        try
% ~' l* J# h1 y+ o. ^9 }- r" s, }! C        {, ^* P9 V7 f( K9 Y! x7 [# [
            //---- Enter your callback code here -----! T) ]6 M) V: t! v& b1 l/ r
        }
) X/ j5 H; B3 f3 J        catch(exception& ex)$ t2 d+ f6 v% O
        {
; v* a$ C5 m4 u2 a7 E+ v1 a+ e6 N, I; l& S% s' `6 \9 ~
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
* W! Z* Z% X4 m" D: X        }; B/ [+ o; Z! b. _# ~" _6 _
    }
" v) t+ U4 r% o, @% s. _    ' Y. v8 v5 {$ Q) r- |/ B8 e2 a
    int Shrinkage::apply_cb()
/ f6 n# y. k7 s% i    {
: Y2 R- e4 W9 N! Q  Y        int errorCode = 0;& E- T# z% G8 p0 y  R% l) Q
        try+ Z% `/ f7 ]- D: H0 k
        {( h' F5 B4 ~8 h' m
            //---- Enter your callback code here -----, _' K1 ?, i/ f0 _' S& A7 n
        }
+ m" j: F! i$ B5 f; X+ l        catch(exception& ex)
/ Y) V9 V& Z+ R        {  X4 E8 P  D* b" ~9 w: I
            //---- Enter your exception handling code here -----
3 z& s% ]3 G8 H            errorCode = 1;/ h8 ~. _) w9 ]- T) K$ t) f0 i3 Z1 D
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
/ |- ^8 b) a8 Q5 u2 p) b. t+ ^" m        }4 G9 a& r% l: h
        return errorCode;
5 ?. z- ?) A5 e8 o) ^& y    }
5 j6 Z9 m& s0 n$ i% P& @
! m0 u, A6 o3 T5 b8 r    int Shrinkage::update_cb(NXOpen::BlockStyler::UIBlock* block)7 @! N- x, t. z' S8 z
    {
6 q" k& K6 C% ]4 c5 k$ ?1 l        try' e7 s% [: `# w- ]3 O& y' F# J$ [
        {% y8 l3 F# z& Y4 u
            if(block == face_select0)* R, ?/ I$ q  d0 Y
            {) s6 w0 m8 Z' N2 q# p
            //---------Enter your code here-----------
/ y& `4 o7 g( V  M! Z6 f* A2 r            }
) N0 `  f6 B6 N# X5 Y  M4 v& g- E            else if(block == face_select01)" E, e3 R- ^% h/ I' }, Q; K
            {, ]$ H' @5 K) }, R7 W: O( e
            //---------Enter your code here-----------: H$ V- Y5 G- {& \
            }
* p/ t0 N5 x  e. S' A, h            else if(block == bodySelect0)( [' V- {7 G. ]9 ?
            {, P& ?( ^$ N7 y3 e( m
            //---------Enter your code here-----------
7 i4 V) z: F9 W  b% [  l            }! r1 \! U; `2 x2 y& Q2 r5 e9 t
            else if(block == bodySelect01)
$ z/ y  ~0 E0 T" ^$ ~) r            {
  L4 v! b3 h5 i  E# q            //---------Enter your code here-----------
, R$ x- T' ~" j- E0 Q1 r& f8 `, {- E            }( G7 h1 Z& v# C# I$ {
            else if(block == string0)- ?* T# t; C# i, P
            {6 \: ^; m5 \& R% @* c% s6 T" w9 M
            //---------Enter your code here-----------6 T, F8 `. i% F2 _" {
            }
( S( W3 F1 z  ~( |            else if(block == label0)# u8 c2 ^7 `- r4 Q
            {
0 M1 s9 z2 |* v; k: C            //---------Enter your code here-----------+ o3 j& W) s3 P1 S. Y  `3 M6 f
            }9 i# G* Z' V" g* D: q2 y$ `% x- r
            else if(block == string01)
5 b% y) i  l( P/ b            {
+ n1 v4 B( x. v! F& I; s            //---------Enter your code here-----------
0 _  K" O, V" L4 G+ H1 r  L            }8 I) S( q) V* f! |. K2 E2 R$ H& l
            else if(block == label01)0 Q! g/ p5 x- R4 l( U; I
            {& |" d; U8 i3 Z! g9 H, e
            //---------Enter your code here-----------
/ Q. L1 @7 {5 ]( T            }
7 M% ?: h* d* g) [            else if(block == label02). N! u0 B( S) \& ?$ j* H
            {
) Z) v5 k. c' g) n            //---------Enter your code here-----------
2 k6 u* m5 B+ L) ~9 P            }
3 q. J' _1 W8 C        }
1 g, V, U, X) d6 k+ @7 Y        catch(exception& ex)7 a3 M; x6 ?, f6 l
        {
- M' z4 m: j1 Z% T3 C            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
4 c9 ^  D/ c+ t% a        }
5 H8 d/ E& C  o) w        return 0;
. e$ k# R8 u: B' F0 K7 H1 S& k    }6 M' o/ D4 c* \! e/ k; i
    7 }# A2 Q$ D  ]2 R) c) w3 h- \
    int Shrinkage:k_cb()7 s) X! G1 C/ f% x0 j
    {$ K- {3 J9 g8 P& ~. S$ z: ?4 x
        int errorCode = 0;% A, y, J7 ^! @$ x$ |6 S* \) F
        try% E8 e, T; G" L5 Z7 N. `- D) w
        {2 ~$ V' P5 {  c1 u9 q" d
            errorCode = apply_cb();
1 j: \2 T& T/ z; B        }
* u8 V# D% u6 F0 T6 u        catch(exception& ex)
- o) ]. k4 h! S$ c, Z2 F0 W        {- l3 W4 U8 o5 a% \2 _
            //---- Enter your exception handling code here -----& g! u4 L& @+ o5 y
            errorCode = 1;1 O# H" z2 S9 V3 W1 ]2 P
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());1 {) P' R# s( n/ m% E& D
        }
0 a5 h# t, q( C/ v7 G1 \! l        return errorCode;6 D6 T+ L4 V8 n3 T) Z
    }
6 K8 n: P1 I- |; x0 B    ! I7 Y2 f3 A5 H* [
    //------------------------------------------------------------------------------
. E( l$ W+ f3 l" W) L* [    //Callback Name: filter_cb7 \" J# i; I& B
    //------------------------------------------------------------------------------
1 h* J/ `! F" S8 g    int Shrinkage::filter_cb(NXOpen::BlockStyler::UIBlock*  block, NXOpen::TaggedObject* selectObject)
+ S, b1 A4 ?- X4 P    {" d* w0 K0 Q& N; I: g
        return(UF_UI_SEL_ACCEPT);
7 M' t# H9 ^9 l; F    }: E- j. g0 w( W
    ) v$ J! x4 X  c! m
    //------------------------------------------------------------------------------
, B9 ?; h; \$ R. ^; _    void Shrinkage::focusNotify_cb(NXOpen::BlockStyler::UIBlock* block, bool focus)
9 v% M0 h# u$ y% T/ R    {
- E, X% ^1 o- w; y  h9 }        try. W% k6 U2 v1 ^
        {
% c6 T& g8 u: s' d, w+ x            //---- Enter your callback code here -----0 v8 x* v# `% l9 y2 s# E
        }  D/ J$ p; E6 b/ h3 U2 O' u3 ^
        catch(exception& ex)' a0 E3 e( o; B( r) B9 |. k6 I
        {; C9 M6 J# _! v
            //---- Enter your exception handling code here -----
$ V- F5 \+ s5 h) l$ u            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());: w: @' O( O1 ~0 `; _; D
        }
' B' p3 }/ K) x4 P' y! s. r% S9 J- A    }9 p% [" j5 m3 }' M- Y& S, o7 n
    + v  s+ s4 @6 i3 D
    //------------------------------------------------------------------------------; z) L5 d; O* f) M
    void Shrinkage::keyboardFocusNotify_cb(NXOpen::BlockStyler::UIBlock* block, bool focus)# |  Y2 Q4 Z8 l' r0 h$ M
    {
! f9 R) d# |: W: L/ b, F: |  D, ~        try- I0 d+ o8 q+ v8 ~+ j; V, _
        {
- ]. Q1 w/ P; h9 c' o! L; P' [8 p8 a            //---- Enter your callback code here -----, j# O* g9 l5 A* W8 U. w0 h
        }6 ]! s" j9 y' Q
        catch(exception& ex)3 X( Z# Z/ Z) o
        {# y' f+ E0 X; S1 D7 Y0 @( e

5 n6 z/ S; i/ `+ @/ u            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());3 F8 p" O. h) u6 c8 ?/ d
        }
8 k( X) P' \8 g" \/ {/ y; [    }
+ {  R2 l. c( H
4 G& Q1 j, R& c; ^
3 Q8 l0 R" c3 b5 `( I
22.jpg

application.rar

9.79 KB, 下载次数: 3

上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了