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 6543 0

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

lzhyi 楼主

2017-2-14 11:29:07

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

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

x
本帖最后由 lzhyi 于 2017-2-14 11:32 编辑 % ?: y: W7 }( z! j
0 ]1 M% t5 p: N
请问出现如下问题,是什么原因:库缺少需要的入口点,功能名:ufusr
2 u; u4 `' a+ Y& K: @; J代码如下:
; s0 f0 n* x( t2 T6 y: ^#include "Shrinkage.hpp"# Z+ f0 Y" }, ]
using namespace NXOpen;; f4 i, x' }. i! m7 t2 N
using namespace NXOpen::BlockStyler;! G& c! h  [- p/ Y( _
7 V. V3 c5 F+ a4 y# e
Session *(Shrinkage::theSession) = NULL;
5 A+ W/ q' k* V, a( Z4 eUI *(Shrinkage::theUI) = NULL;
) p% d$ h$ W- m+ W9 F2 [
1 C4 e3 o0 o1 O. @6 h! L* D% {Shrinkage *theShrinkage;
: T1 d1 S, \: w) n) U
$ v* i$ S% ]; m7 FShrinkage::Shrinkage()# f' x  y7 T4 N  f
{% `/ B/ V2 _+ ^
    try
  k) S( N$ U. p" `9 }$ ]. s    {
9 N1 x) A% M5 M8 @9 H: I6 m8 Y        // Initialize the NX Open C++ API environment& g+ E* C& X" G! |, I* n# l+ U. v
        Shrinkage::theSession = NXOpen::Session::GetSession();
9 B, V- R& j# @8 l  y        Shrinkage::theUI = UI::GetUI();
+ w4 ^( l' J/ G) \* @0 \        theDialogName = "Shrinkage.dlx";" H/ `6 z$ m& s6 H
        theDialog = Shrinkage::theUI->CreateDialog(theDialogName.c_str());' R5 L8 W+ ]% o9 `+ C3 x9 G" k3 M
        // Registration of callback functions  {; [  n' i, c9 p. y% x
        theDialog->AddApplyHandler(make_callback(this, &Shrinkage::apply_cb));' g. J/ Z: n0 C- ^
        theDialog->AddOkHandler(make_callback(this, &Shrinkage:k_cb));) C1 G" N; W/ a
        theDialog->AddUpdateHandler(make_callback(this, &Shrinkage::update_cb));
# X1 ~5 h$ {0 j; O% u        theDialog->AddFilterHandler(make_callback(this, &Shrinkage::filter_cb));$ b" C+ u6 W0 X6 Q1 H
        theDialog->AddInitializeHandler(make_callback(this, &Shrinkage::initialize_cb));8 `$ z( ]* v) }& L/ a
        theDialog->AddFocusNotifyHandler(make_callback(this, &Shrinkage::focusNotify_cb));* K( s" H9 \$ T6 ^& ]1 v& q% t
        theDialog->AddKeyboardFocusNotifyHandler(make_callback(this, &Shrinkage::keyboardFocusNotify_cb));+ q9 M& c0 d5 T1 J2 j6 g- U; ]
        theDialog->AddDialogShownHandler(make_callback(this, &Shrinkage::dialogShown_cb));
% W: Z6 e* B, X' M- E  g    }
, B" R& E  Q" `    caTCh(exception& ex)! u9 @8 X1 o, s! t6 m8 J
    {( ^( X$ `7 p  }8 G" m9 j
   5 I1 p* N* u. G4 v2 H
        throw;
; N: v) g9 n5 r& m- d    }9 i/ m; R1 ]; h. z
}
' }/ g3 w" B+ S9 B; J; a/ C/ v. ]
# K5 a, Z& ^5 L0 ~: ?- ~4 mShrinkage::~Shrinkage()# K1 Y1 s6 M. {6 n. ]
{" }, H, b5 L. D
    if (theDialog != NULL)
  S; ~7 N. H9 X0 y# E- m( V7 k9 _    {% x3 k$ [" M; L; u% y
        delete theDialog;
9 z. r1 h+ N, T& @) C        theDialog = NULL;$ x1 @% R  o* ~; h
    }% Y3 K4 d  K+ @0 n$ b- `' H
}  }/ a; m" d# C0 b8 z9 K

; O  J" p% K% p6 W' C8 j8 O8 R#if USER_EXIT_OR_MENU
* o% X% Z, @; o$ m8 [    extern "C" DllExport void  ufusr(char *param, int *retcod, int param_len)! H9 ?- T0 S8 p1 t8 d+ X3 b' M
    {
. p4 I: U; j0 j( v8 S! O6 M6 o        try! [/ {7 ]- v1 d- x
        {4 W, ?; i( ~! R' K  ^( p
            theShrinkage = new Shrinkage();/ l$ [9 b1 t+ F6 t7 B: E
            // The following method shows the dialog immediately
1 y; t- y" Y3 c/ A. U: y            theShrinkage->Show();0 c" a( [& O: A$ y$ h% X
        }
; X9 B) p2 @! P, \        catch(exception& ex)
2 s8 P" J) r. @" Z9 d, b9 O        {% g9 `) d, t% }9 Y4 G
            //---- Enter your exception handling code here -----
% J" L$ _. `- [            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());2 Z4 Y6 C9 y3 u  L6 n6 X
        }
& N8 X& u0 Z# W! L2 J. F7 l) d% l        delete theShrinkage;& j  m/ O8 W1 I$ o6 H  S& h* B
    }
, M/ ?4 Q# F  Y#endif//USER_EXIT_OR_MENU
" X& Q# G* _1 ^- a  p( a#if USER_EXIT
& d7 b& A0 p) H0 P4 B. `: R7 Y    / U0 [5 W& \9 l
    //------------------------------------------------------------------------------+ }6 e+ j: L8 I( A3 {  N
   
- W; P9 o% L: y' _# |/ k    // MUST NOT use this option since it will UNLOAD your NX Open application image2 [0 V6 B( |! g% T7 A* P8 s
    // from the menubar.+ k  t/ a, ]  M+ N" J
    //------------------------------------------------------------------------------& f1 l. j; u( [, ^
    extern "C" DllExport int ufusr_ask_unload()$ T/ b. F9 }2 e
    {2 T/ ^2 L" ?9 p1 L# w3 U: v& y
        //return (int)Session:ibraryUnloadOptionExplicitly;
7 f8 N+ N: q4 j$ R        return (int)Session:ibraryUnloadOptionImmediately;
" V' R6 b/ F7 r        //return (int)Session:ibraryUnloadOptionAtTermination;
' k- ]8 {% |" O2 M3 R& s    }+ K7 q9 j5 y0 I, t9 o. X9 [
   
- }" p  d  l; {    //------------------------------------------------------------------------------5 F5 d6 |, s) k! Q
    // This method is automatically called by NX.
8 I- o" J  A; S& Q    //------------------------------------------------------------------------------( n$ H! q0 t5 z, {9 w7 n
    extern "C" DllExport void ufusr_cleanup(void): \; A( F9 L. u+ K7 }  W
    {1 \& s7 s0 A* f2 n7 u; @3 r
        try* v( a1 u7 S  n# O( w
        {  @+ t( ]9 z7 u4 e
            //---- Enter your callback code here -----( K  w3 O% `4 D  ^8 k/ e+ G
        }) n7 ?  d( \6 N# C+ ~* ]3 Z+ A
        catch(exception& ex)% n4 N/ R( T% W9 x& M1 a
        {3 c; O( f! N7 m  s  D" Z
            //---- Enter your exception handling code here -----7 b) ?2 d, X: f9 j
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
4 r4 \. x1 u7 ?$ _! [, q        }% ]$ Y9 \* a8 j4 T& V* s
    }# [) _& P5 A! w9 X
#endif//USER_EXIT
, b3 B3 o9 l# }. U/ ]    + N$ M7 T7 r! K/ Z$ @) ]
    int Shrinkage::Show()
: d$ _& L5 I/ m0 U; Q    {+ U5 j: R2 H: N' _' L4 }6 y3 A  C
        try' S3 \! m6 o* J- |' _* B
        {
. w8 _6 w% X6 k2 q            theDialog->Show();
3 C, H% a' \' B' i# \8 w! j        }
. j/ e; B  a* R' S+ O        catch(exception& ex)
. r  m3 B% u( \, h' S        {
$ s2 O8 q, o: t( n: B' `3 Q" {            //---- Enter your exception handling code here -----' Z$ J0 u4 g7 _3 P. ^
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());$ b1 I4 p' n6 z* ~
        }8 p: ]2 V4 N2 Y
        return 0;" ]% ^, u" S2 F* y# B
    }4 K# z$ O- e6 Q" D4 W. N! e) E) k1 T
   
8 q; A3 E7 R9 J9 Y6 D( t#if CALLBACK* G# i( a% ~! f8 ]& s0 w
# T3 j& ?3 H5 ?! X1 b) t
    void Shrinkage::Show_Shrinkage()
  I$ a9 [, v- E& M" B    {
; I0 F/ y7 v0 \7 \5 {        try
+ t' _0 X7 ~( g' {6 k$ _        {
# x! T5 k2 `  l1 l# d. j5 z( W( H            theShrinkage = new Shrinkage();
7 m6 O( T. u! L) t6 \0 F+ ~  n) B* u
            theShrinkage->Show();
, I- }9 C" S. }        }
+ G* ~; A% W( _6 ]        catch(exception& ex)2 Q9 J# H/ V$ M
        {
' p( |5 v! Z  s- G( B3 N+ e
! L* P4 ^. [3 [" E. \" c7 \" E! }            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
/ w) P5 H4 ?& `/ q        }
) {) j7 j1 G$ X2 q1 v$ b4 y! W        delete theShrinkage;
7 l; s/ q& d# a& e! @" w  b    }
, ^$ A+ u7 o9 K$ s% g; e1 L#endif//CALLBACK3 F4 p; d" e1 F6 X/ Q; g' U( f
    + M' e4 W8 L0 }% |, U9 T- _; d
    void Shrinkage::initialize_cb(), E5 N& x% I+ l  g! v) x
    {& i2 F6 `7 v+ Y. ~
        try7 l+ p# p& N: X3 l4 O
        {. m0 Y4 Q7 C" Z  @
            group0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("group0"));+ _' M! h( B6 s" d. j. _# n
            face_select0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("face_select0"));
9 {) \( q  `+ w2 w: L            face_select01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("face_select01"));
: E3 Z6 _2 R: h) Z$ I+ i0 N            group01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("group01"));
$ _: t6 l9 `& Z. m" b4 t# I            bodySelect0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("bodySelect0"));1 c6 Q; |/ O- Q. b% Z' \7 H) B- y4 p
            bodySelect01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("bodySelect01"));
& ^& C6 W) H: T0 v2 X7 d            group = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("group"));
, [! r7 w" h% s1 A            string0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("string0"));& c4 M  \. H7 M  J! ?4 X# L
            label0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("label0"));7 @* {" V; ^& Q; _/ p
            string01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("string01"));
/ }' H! N" {0 c            label01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("label01"));0 n' C, ]9 o+ S: w2 s" `. g
            label02 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("label02"));( l4 P. J2 @- Y1 s# ?9 P0 }6 d
        }' X# f3 B( n7 {, T: F
        catch(exception& ex)
5 N, P! _( @9 ~& A, v: |: P% s        {
1 T& o( R- |. n6 k2 a6 c           1 E! w) M4 x+ \& I! R
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());3 r1 U) d3 c+ G8 C2 M
        }
2 e+ k, f: @* s5 t' @( |    }% I! @: N# l, p2 _+ O
    //------------------------------------------------------------------------------
6 `, F  _  U; [" r& c1 n! U    void Shrinkage::dialogShown_cb()5 E6 H) @9 |( `9 T! M% T
    {. J) X# q+ [* k6 j* B+ @
        try
2 O, K+ w( r, U& M% p) T8 j        {
5 \' I" c% K! y            //---- Enter your callback code here -----
' k$ G# ^5 L# G( x' t, }& E* C/ v        }
' k% o# M: j* V6 d8 Y        catch(exception& ex)$ h0 v$ F% r# ^' |% G- ~9 d
        {
5 I# P$ r/ q) r# L
/ ~% V2 x% r  c  `8 ]1 x            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
- {/ Z3 _9 ?% ?: e        }! F# [1 e) p+ d. c
    }
+ Q8 j; o" b' }4 a! ^   
% h; k% J$ }$ g. ^    int Shrinkage::apply_cb(). C' k- x7 [  c$ A" I. z
    {
% X$ Z. f; r6 L        int errorCode = 0;/ M! L. F8 Z$ d! N- ?  z* C$ i
        try
, x; R/ y2 {2 Q8 h% _5 k7 ?% x        {
* f4 z7 Z: M% |# F) [2 z9 |            //---- Enter your callback code here -----2 |4 x2 x7 Y% D3 V' {
        }
" q# G. c" E/ y. I$ ?        catch(exception& ex)% \5 l! F) c" H6 {1 L
        {( u5 m0 P/ G4 {% Z9 W
            //---- Enter your exception handling code here -----* |- r$ Q% s2 G
            errorCode = 1;
7 g$ z% }8 j4 W  p7 y% K* g% _. O            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
9 h1 B# T/ j& e! @        }
: G( `# X. J3 h4 j* z        return errorCode;
2 T3 u% b! H/ @4 e, s    }
: b( }  P4 E. I2 j; H' `# r1 e6 P" B5 O; H$ |, }$ R0 \
    int Shrinkage::update_cb(NXOpen::BlockStyler::UIBlock* block)
3 u  ]6 ~& Y; x/ `5 R" `    {) K  p- Q5 k5 ]  X6 W: p" x% p
        try1 v# H4 q; M& \& t1 z, N1 y
        {" v9 D+ i5 {  Z. e) x# d9 O) Z
            if(block == face_select0)
- _# x8 z3 l; K3 I9 l4 y( T            {
, C, [- L" f8 {- p9 I            //---------Enter your code here-----------
  t9 i; F8 V; e% y. `2 K6 x2 M            }
; C, g# B, X( T# }8 E. ~; a            else if(block == face_select01)0 d/ u* {; C8 j% j6 r# {  Z
            {
7 ?7 R* s. x7 h0 m3 }            //---------Enter your code here-----------
  y9 E$ o, f8 k! {6 k, H3 @. D            }) _5 D7 F" g) z( i
            else if(block == bodySelect0)0 X6 f+ B, r4 C1 J, M( i
            {
' h- \' ^1 W) i- @& H  y            //---------Enter your code here-----------6 d, ^9 q* q7 `
            }( W( i5 h% {! `& l& U5 L: k
            else if(block == bodySelect01)1 e. i8 l, V( C3 R
            {1 e) K* e. H' J$ ]% ]' e
            //---------Enter your code here-----------/ b1 n$ ?) r- W/ A, @) \
            }) w5 Y; m: x' p% R  I! T
            else if(block == string0). N0 K0 ^( C8 R9 `" g' U
            {+ T7 ]/ ]5 @! g
            //---------Enter your code here-----------$ v0 y- K7 n& a# ^! R& S  [7 t5 M
            }2 B4 W6 H( Z4 R% R% y5 }* H$ U
            else if(block == label0)
% p6 Y: e8 U! J& L. j            {8 @" z% \3 \- |( A% ?
            //---------Enter your code here-----------
% S6 T* v! p& N* x$ E' ?            }! }" u. w1 p! Y# `$ |; Y
            else if(block == string01)& i" i) E6 z7 M; w0 w0 p
            {
* S* B0 p6 B& [            //---------Enter your code here-----------+ Y  Q5 _* j+ Q
            }
1 Q" P  C6 X- a1 s4 a7 x7 W$ C            else if(block == label01)
. S  r2 [0 ~7 K7 L' y" T/ i            {7 g, ?% I7 u8 J! X3 n, H7 M
            //---------Enter your code here-----------. L+ g6 c5 q0 h0 N% H/ n: {! j7 r
            }
: ], N) I/ E& e% @            else if(block == label02)
2 l7 r- c% `5 q- H) N# f4 z! e            {& r3 q0 I+ S; J6 B# g( \9 y
            //---------Enter your code here-----------7 _0 n% [9 V# i
            }& O( v4 z; `$ V1 B/ f9 y
        }0 p7 D$ g) z- C* W
        catch(exception& ex)
' s% J! {% u" O- M8 s        {
# e' a% N& \$ C# A, t9 q) F            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
* e0 C9 [  d) l5 x1 l1 s3 W        }
5 e- C$ o+ f# Y% X9 Q6 H0 Q        return 0;: H" j" g; U9 t
    }* I/ f8 w1 L/ i8 J; _
   
5 e4 S; O. `, F    int Shrinkage:k_cb()% S9 {; p: I; D4 g
    {
- d( E# z/ F3 p. I% j" B5 b        int errorCode = 0;
% s0 ~" x! }, h# E+ t% s$ N        try. w" B# ~( f1 ^9 f- a
        {
' c. y2 J. F, N; B            errorCode = apply_cb();! L- q) |, D" L3 U
        }3 H7 i4 t/ e" m4 i; y4 B! s
        catch(exception& ex)# t: Y; R. A5 i7 W
        {
" {  ?. c$ G' i            //---- Enter your exception handling code here -----
- Y- |7 _5 A5 d1 m) w2 d7 K# n' |& i            errorCode = 1;. g9 u7 |- U3 s: e+ t# E7 w
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());& D$ E" S8 n5 J& |
        }/ Q# I" z- J( t3 K. |% Q* b- z
        return errorCode;
" p  B( ~1 D# |  ]0 G+ l    }
/ q4 [  M! R+ P7 l. g    . s. L, @3 s8 J5 {
    //------------------------------------------------------------------------------
% P5 H& D1 l3 {0 o! g- \* N. D6 A    //Callback Name: filter_cb# w) w8 M5 l: |7 v2 E  s
    //------------------------------------------------------------------------------
* N: d/ i/ x7 W5 c% S    int Shrinkage::filter_cb(NXOpen::BlockStyler::UIBlock*  block, NXOpen::TaggedObject* selectObject)# B  o9 {* }. e0 g! V  K# z8 _. Y7 a
    {
$ P: s2 T  L& j        return(UF_UI_SEL_ACCEPT);
- |  l+ d5 \1 v2 x- b    }1 b# n' {" C5 ?& b$ ^8 `9 T
    2 ?- s2 z- x3 C- L  g* Q
    //------------------------------------------------------------------------------6 x! z$ `" T3 u
    void Shrinkage::focusNotify_cb(NXOpen::BlockStyler::UIBlock* block, bool focus)+ t! u, @  t; P6 ~
    {1 S( i: t8 c* A; U% B
        try
4 m# m- U* N, o; X        {
8 K8 |4 H( n* n: x0 _: C            //---- Enter your callback code here -----
' @- P: E4 C( C        }" @+ K$ ?9 w8 V2 D* k2 M
        catch(exception& ex)
) x) h' t8 m$ v5 l        {
" ]7 C' d( c# q! x6 q            //---- Enter your exception handling code here -----/ V, N7 t. ?! Z0 H5 Z' x5 J6 {/ G) o) I
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());& W( s' h8 _/ W) ^
        }# I$ a" ^2 i# s6 I. k0 w
    }
: w8 W2 J1 y( j: x' [" Y    ) _5 P. F8 q1 y' y. }
    //------------------------------------------------------------------------------
! j4 {) M4 ~2 {& j- m! e    void Shrinkage::keyboardFocusNotify_cb(NXOpen::BlockStyler::UIBlock* block, bool focus)
9 ^4 L- {* s7 o& x2 h% G+ Y& r    {' i( |# b8 R9 i2 F& L" `' p# `
        try
; M9 D' y( ?" Q        {
9 [) |9 O6 N+ a' v            //---- Enter your callback code here -----# q/ K7 }5 d5 g) A9 O7 S4 i& \% D
        }& p  F  L3 f1 m5 r
        catch(exception& ex)
. S) n" s$ M& {- k- B& x/ y9 n        {
% Z$ }( ^3 s4 x, G- M7 A  k3 E
! m$ _$ M2 f  {            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
2 S5 I. |" m- H7 }& [& @6 d        }" e) o& G6 B7 w. g
    }  }' ^+ z7 _6 h9 |

3 g, V* v9 g: o/ |) C1 K7 d) P" K% A0 m
, Z- T* W7 o. `4 @) n7 m7 R
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二次开发专题模块培训报名开始啦

    我知道了