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

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

lzhyi 楼主

2017-2-14 11:29:07

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

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

x
本帖最后由 lzhyi 于 2017-2-14 11:32 编辑 ; ~1 z9 C- g3 P' b/ B( }1 j6 ]# L8 [- L( D
2 m/ a: m2 y# i2 E5 W! F6 i
请问出现如下问题,是什么原因:库缺少需要的入口点,功能名:ufusr3 E# @1 C1 D) {' `
代码如下:
/ V& B) |4 W, [#include "Shrinkage.hpp"8 u3 s6 M; y* ~! ~, f1 q: U  e5 q
using namespace NXOpen;/ v( t5 l5 }  W$ E  g- h
using namespace NXOpen::BlockStyler;+ Z$ e" z5 P! E7 ^
8 y7 ~! ]% p+ o2 f4 n
Session *(Shrinkage::theSession) = NULL;5 [  ^) ]  [6 H3 B2 i4 R+ Z
UI *(Shrinkage::theUI) = NULL;/ O& r4 E" U  r
) z! f/ _% h& K/ u2 o
Shrinkage *theShrinkage;1 L" L/ j$ ^3 u4 x) _
% B! ]+ Z& O7 i8 S
Shrinkage::Shrinkage()
, c; q) U; [8 z0 S0 c# Z{! |+ w* @0 L3 |5 t. {& y
    try
0 Q2 J5 K) V; }/ n* F( b  \    {
* A, S  B- z. X  m) E! v        // Initialize the NX Open C++ API environment
8 `  O- [8 L8 l        Shrinkage::theSession = NXOpen::Session::GetSession();+ _  O$ T: y! \$ p/ `. {5 J+ h" p
        Shrinkage::theUI = UI::GetUI();2 |% q+ u8 U: q( H
        theDialogName = "Shrinkage.dlx";! i" b' y* Q8 j  \# ^0 M
        theDialog = Shrinkage::theUI->CreateDialog(theDialogName.c_str());% O9 k( k" S8 J2 x
        // Registration of callback functions* T7 P( D- E1 U: g! R3 s
        theDialog->AddApplyHandler(make_callback(this, &Shrinkage::apply_cb));7 b( F6 \: W; g/ @! k/ E7 F
        theDialog->AddOkHandler(make_callback(this, &Shrinkage:k_cb));
  ?6 Z6 x5 e6 g        theDialog->AddUpdateHandler(make_callback(this, &Shrinkage::update_cb));
' W! Y3 _" A4 p3 y" h        theDialog->AddFilterHandler(make_callback(this, &Shrinkage::filter_cb));
1 _6 V( `0 D3 J; b        theDialog->AddInitializeHandler(make_callback(this, &Shrinkage::initialize_cb));
) ~. ~; o( O1 k$ H4 z        theDialog->AddFocusNotifyHandler(make_callback(this, &Shrinkage::focusNotify_cb));
4 X" @3 L3 d5 m        theDialog->AddKeyboardFocusNotifyHandler(make_callback(this, &Shrinkage::keyboardFocusNotify_cb));: e+ V& f) v; K1 C7 V
        theDialog->AddDialogShownHandler(make_callback(this, &Shrinkage::dialogShown_cb));
1 {1 [. o6 ?* I/ l8 x+ V# h6 v    }
9 @* f4 o2 X# N+ h' O4 m    caTCh(exception& ex)
! P! B' s  L$ }1 h    {' g; B  i* _  l$ p
   8 B& S  [& @# F( N' o5 s2 k
        throw;
: G0 Y* y& c( W0 i3 Z1 H! l1 P4 _    }# r# f9 m7 B* M3 e) l7 G4 I
}$ b  R3 d3 ]4 A; V

1 B1 r, n! p4 UShrinkage::~Shrinkage()' s+ i* e! M0 l# Z
{
3 C" ^; ^3 T+ Y+ Z$ W9 p' Z, U2 I    if (theDialog != NULL), y$ S; {# W* |* e) q; v
    {' P7 q, x0 d/ ^" y2 ]7 d. A5 h1 J
        delete theDialog;# b9 ~: J8 X' n  B$ ^
        theDialog = NULL;
' T. z6 t; K6 h: g    }% l- T6 \/ u, B( _* h/ s# f
}
5 k4 U: J- E% o' P9 W# N: d& @5 C+ ]: v
#if USER_EXIT_OR_MENU
7 p) h# x, }9 \; H$ {    extern "C" DllExport void  ufusr(char *param, int *retcod, int param_len)
" c* W& N7 F1 a8 L8 n( E    {
- H0 D5 E! f. n3 w2 Z        try% W  Q( `  ~& l0 j* J
        {2 ?1 _( q. m* r* @0 b
            theShrinkage = new Shrinkage();
* W  p% z) Y8 L* t            // The following method shows the dialog immediately
: K0 b/ J2 |6 {6 G! i& m            theShrinkage->Show();& |; M$ U- i  a! t% x  k
        }+ }0 T. l' S0 @; o
        catch(exception& ex)/ i' G; H& u. S7 Z5 {
        {
+ |" q6 y& x/ Z1 d            //---- Enter your exception handling code here -----, j6 U: {( r( N/ z4 X2 F. D/ G: k
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
+ @" @9 _7 [7 p' q7 ]        }9 n: m' d5 m2 }$ m1 ~7 N  \+ r
        delete theShrinkage;5 L  H( `4 `( C  q$ |( U- [9 |, q
    }
; I( K# l* ]9 M; \  O#endif//USER_EXIT_OR_MENU
2 p! b1 C! j# `7 t: \/ A# w#if USER_EXIT
$ {) f2 F# w7 G) ]% n2 \5 d   
" E/ j) Q+ i  j6 `" Z! |/ \    //------------------------------------------------------------------------------
1 P) _$ V4 l; B" u$ L3 n4 l) M   8 C  |7 W1 P; I4 d' p7 l
    // MUST NOT use this option since it will UNLOAD your NX Open application image& b( R" s* H# I: O* N# J
    // from the menubar.
1 `7 J$ Y! p0 |$ j4 b$ H& p    //------------------------------------------------------------------------------5 \% ]. ?! y. ]* P
    extern "C" DllExport int ufusr_ask_unload()' e+ l- d/ Y1 w7 H0 p" g, m9 a
    {) |5 }0 q; v& n3 @# Z% ^
        //return (int)Session:ibraryUnloadOptionExplicitly;2 O9 p" b9 m: O- x" g5 j
        return (int)Session:ibraryUnloadOptionImmediately;
! R. ~& I% S* a        //return (int)Session:ibraryUnloadOptionAtTermination;5 l- A4 ?$ t, s* [
    }: R& h  g  P6 N$ M% g
    6 ~0 ?9 h. q7 b* @) J# S
    //------------------------------------------------------------------------------! {9 y) k/ m* D% n1 m* |
    // This method is automatically called by NX./ p! _1 ]- C! Z$ N2 g& W9 ]
    //------------------------------------------------------------------------------: g; N' q7 e# c9 R" }# t3 u" X
    extern "C" DllExport void ufusr_cleanup(void)
  t2 q$ C4 L- Q5 n2 g3 v    {2 Q, V0 N/ V7 g/ d3 E( i
        try
+ V. L, v% m  n+ k2 U- `* i* Q+ l        {: e$ \) i( T' a0 Q" e3 ?
            //---- Enter your callback code here -----  Z+ x" w( R0 C+ U$ H
        }4 x& m2 ?( r& C. g8 _
        catch(exception& ex)/ Z" ]% B- w* B7 _6 h
        {
: x' ^1 a( U: j, A            //---- Enter your exception handling code here -----
: t6 p1 ]' U+ k+ w6 ?$ f            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());8 A/ Z+ T( ^6 r  t
        }$ k- F; C( r6 z9 G0 C, Z  w
    }
; N7 j$ v" g' D6 ^+ C6 H; V#endif//USER_EXIT
) b2 i' @* j" D   
* t$ T$ P* [6 g  }9 E    int Shrinkage::Show()
# {7 L6 ~4 Z3 r( W! {2 {% x    {1 j3 i  [9 q# N; W% T
        try' L. `2 P& U* v- _. t8 g; M& N1 Z
        {
: {+ m  H$ Z* q* M            theDialog->Show();9 d/ x6 l% q) B3 ?
        }
1 E: V$ a+ j4 `& H$ z$ ?        catch(exception& ex)
8 m# J* s4 t1 k& z        {* v6 O- r" q* G3 v7 `* t: X
            //---- Enter your exception handling code here -----$ |/ O1 [6 l( g/ A0 }
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
/ R* ^: L! ~# T8 s        }
0 g5 c% A( Q% j        return 0;
) H' f  P8 l! K8 m( q% L7 R0 y    }
* V; |6 @& Z  z6 x    9 m4 B0 Q% x; A7 \2 n  w( |
#if CALLBACK
- [. ^8 t; l! _
, d: g) x5 R0 \7 W& a8 ~& l9 S5 n    void Shrinkage::Show_Shrinkage()
. C( Q! o% T# Q0 ?% s    {# ]* v6 e) n  t# _2 T  v8 `4 O- y
        try
) V' D9 `4 x4 t        {
4 l9 V) x0 Y, k6 B6 j            theShrinkage = new Shrinkage();, S8 r2 h( F6 [3 ~* U  t% H
/ R6 B- @* b+ m: \# Z
            theShrinkage->Show();0 [" y5 p: i; K  v; }
        }
8 X2 z; ?# L+ T6 c3 C7 J- ~        catch(exception& ex)
" q3 f; \  H* E3 N+ u        {
+ V( N* Z; ^  o5 x0 `/ g2 l9 g) a3 |
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());; v6 _4 g; F0 I9 K$ h; C8 x# }
        }
- R! f  s6 e' Z( b( Y8 z& m        delete theShrinkage;& h" V# [! w1 y, I5 ~+ w
    }/ P+ o/ X0 W% x* t4 l+ [) I
#endif//CALLBACK
3 H5 }1 q6 G3 f* [2 m. {$ u! R2 a   
& L8 ], }( Y* m  }' B$ Z) L- E    void Shrinkage::initialize_cb()
7 _5 p5 k( d- O: G. H  x    {
' c* r) C  j: _4 F        try; V0 `, A( c- _/ ^) E
        {' A1 ~# ?( n4 E4 a8 g
            group0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("group0"));. A( Y1 q( E% ]/ T, c
            face_select0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("face_select0"));. b- B2 Y; L% S+ O$ w- h
            face_select01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("face_select01"));
1 }) X8 u2 d1 ~! M$ l* m            group01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("group01"));
; I$ ~& \% H- }: R" E+ U2 t            bodySelect0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("bodySelect0"));
) b- n$ M, E. t8 Q) }7 @            bodySelect01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("bodySelect01"));: t9 v2 o% n5 R2 |. b! h3 [+ d
            group = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("group"));: l; a! W% I& O3 {6 l. e. W! D5 C
            string0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("string0"));# g4 v) \, k1 v' I
            label0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("label0"));) [1 I1 x: R3 D
            string01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("string01"));
! ~7 L, m+ b2 E& T            label01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("label01"));
1 w% i! ?6 {* E! k" W            label02 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("label02"));6 s, P- [4 l. j/ a/ x% h
        }
  W4 P1 P3 e- B2 I        catch(exception& ex)- j+ Z' h, f5 `# r  e
        {
6 g# E7 C/ q) T6 p           / n% e' P1 E, v4 U, j3 q
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());7 I8 f" F  B# P& K1 |- W! O' a
        }* K' W6 S5 W% q4 J
    }- k& n( c. h1 A" h% l& o+ }
    //------------------------------------------------------------------------------8 S. ?8 Z/ O; _( Q4 Z% E& ^. Y: D
    void Shrinkage::dialogShown_cb()& [  B& A; n1 P; M: P3 e
    {! R4 J% }/ ~1 s3 ^7 ~9 \4 D
        try
3 O+ j2 y0 S4 W, }4 a        {
* s2 w$ |# M% X; J7 @            //---- Enter your callback code here -----4 m" e0 Q6 B6 [2 [" r
        }9 {) u# {6 M1 x& Z- b
        catch(exception& ex): }. f+ z, V. F1 n9 W
        {4 f; C7 I( ?7 |! T: A1 g$ K
) ?# u( o2 V' N! k6 {9 _; |
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
3 F* f* u! L+ B9 W3 g7 Z, s- ?        }
" _2 e  D& {# q+ m3 z9 _    }8 _! {( m1 i: u5 s6 D' l. o  C
    4 X9 `; \. p6 H" K( A5 b6 Z
    int Shrinkage::apply_cb()5 e' |6 o4 j( [' w1 E
    {: G! }, f3 y! I2 n
        int errorCode = 0;
/ n! J. R0 j  {+ S( q! S8 M        try+ b+ M% J7 q0 ^' v2 M, q# r
        {& U/ ~/ N& {7 Y; p
            //---- Enter your callback code here -----5 H( P8 W: d% A, N$ G- V' r# o
        }" r, p. G/ Q5 d/ [! ^
        catch(exception& ex)
* R7 J1 N4 H# f. y7 U  t/ L        {
/ X/ \4 `$ a9 G5 s            //---- Enter your exception handling code here -----
5 J  O+ o6 _* M2 I            errorCode = 1;1 r' y! W' [# t: G( j
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
! ~  |7 f/ X" Z* F$ k3 n6 E& e        }/ V0 Y, \( n7 w$ C& U
        return errorCode;
+ g2 {. H4 w* @, q' F6 g    }8 S! H8 A3 ^& t* k- S0 O* z, K
$ Z$ a6 z4 L4 y  t# @: {2 V# X* l
    int Shrinkage::update_cb(NXOpen::BlockStyler::UIBlock* block)
6 O3 W! N# O" T3 H/ d" x    {6 v* N! \  Z7 Y
        try% _2 x0 M0 w$ d: b% h
        {
- D( [+ N* b. M: e5 A3 Q            if(block == face_select0)+ q$ `; ]2 c/ E/ p
            {& W: u( e6 S: o& h
            //---------Enter your code here-----------
5 ~- T- X) N( D6 p8 t            }
* `7 S: o/ X+ @- e4 _            else if(block == face_select01)8 C) j" k) K0 v$ W
            {
, b8 O2 ^; J% b  w8 k" X! B            //---------Enter your code here-----------7 A# l1 B' h/ R2 k1 B3 V- g
            }4 H$ Z! Z: @) P$ g) ~) h' N# O8 n2 H
            else if(block == bodySelect0)+ S# Z! ~5 e: F( ~* l
            {9 M: U5 N% u4 N0 f
            //---------Enter your code here-----------' d( j4 {, u- }1 B
            }! \/ T% V9 B& ?
            else if(block == bodySelect01)
1 I4 r5 `( J8 ~            {0 j3 T1 C4 b* V9 D
            //---------Enter your code here-----------: D3 Z6 T+ f9 e4 S
            }% p9 Q* W* N* Y- d
            else if(block == string0)
& s) o  i, ^$ K! R8 i- v            {; L9 H2 j. k( ^1 m
            //---------Enter your code here-----------
" {1 N7 H, ?; [, Z2 `1 B            }
9 Y* H# p5 \& y7 X. Y  W            else if(block == label0)0 L3 T6 w( V8 g$ r# \; x
            {2 `; W( W, C* W) _( d
            //---------Enter your code here-----------* m2 p. p. f1 r! j# o" w+ X# N7 i9 h
            }
  J% d8 }$ _3 g" s1 k1 L            else if(block == string01)
+ G/ |: l  G" `& _, o! Q            {) D- ~; m) s# v6 R3 l5 O7 Z- `
            //---------Enter your code here-----------
3 O2 |  K! w6 w! N6 Y3 J, }            }  K5 _, e% }. P0 r& F
            else if(block == label01)
9 A& z  Y0 X0 Q. I( P* p& m7 S            {
% d; N6 M4 N( D0 C            //---------Enter your code here-----------
0 Y4 \! F: u6 T* A            }- O7 Q1 V( s4 o" G  Q
            else if(block == label02)
2 R& M5 }# w/ P& x            {3 U, \5 Y" @  T- F7 b  R. [
            //---------Enter your code here-----------7 V" Q0 a5 ?2 `  u
            }6 W2 W$ `1 x+ {9 a9 a
        }
4 k/ E7 K  ?! D: c* c- w- p        catch(exception& ex)
2 U) K3 K; K/ \. r6 y* ?+ b% V' h        {
4 g4 a3 J3 P0 H% o; m) n7 e- b5 h5 `% n' c            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());- i; ~0 o' W- @! q' r' }
        }3 i" v6 B# m/ N2 V9 C
        return 0;+ r3 O8 c8 ~% [1 s. }
    }: i# R+ u4 L! q) ~9 o! j# y- l
    , B: x$ k: x9 M
    int Shrinkage:k_cb()& e+ W8 z8 @! h, m5 }
    {
0 h; z7 B+ ]/ C# A$ b; I  U        int errorCode = 0;( }( z/ S7 @% u/ g" D* V
        try
( j. w/ v5 ~$ b4 ?        {8 c3 A4 i6 @3 h/ d  X( l+ E
            errorCode = apply_cb();0 n, D8 c2 V% Y/ C( r; {
        }
( C; y" k  r% F* M        catch(exception& ex)& @! s( R8 m/ A+ V
        {" d6 m) D1 `3 B; A" R; `
            //---- Enter your exception handling code here -----
  i. h2 v1 C' j            errorCode = 1;% l7 c0 m# Q9 H
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
$ I+ ]- X. h5 m, p. o/ k' N: ^, z        }  }. O! S) ^. Y. t% z
        return errorCode;1 i5 K* F+ s2 E1 z
    }
/ r/ u3 B9 k) ?$ _    : x5 t6 L/ L; R# p2 l- O
    //------------------------------------------------------------------------------6 |; x5 b5 j/ b' s& N
    //Callback Name: filter_cb. I0 \. g" i' v4 |) A- ]8 V! Z& V7 {
    //------------------------------------------------------------------------------
6 _& I- b: i6 M    int Shrinkage::filter_cb(NXOpen::BlockStyler::UIBlock*  block, NXOpen::TaggedObject* selectObject)* l7 v5 ?9 g1 M
    {
+ S9 K' f& {( g' {2 N        return(UF_UI_SEL_ACCEPT);" ~" x* u, p9 x' i4 M6 K2 D# e
    }
1 b8 A! z/ J5 d' E  t; g& N   
. y: l6 W- _1 ~    //------------------------------------------------------------------------------
- S: \. R7 w3 H    void Shrinkage::focusNotify_cb(NXOpen::BlockStyler::UIBlock* block, bool focus)
8 l# }$ t! J2 y    {
- i- q  }4 T, S! S3 E        try
5 Z9 o6 Q4 d9 ~: H, o2 h        {, ?: `5 K, ]" M6 K. A9 e$ y: o' i" g
            //---- Enter your callback code here -----
) Y% y8 p6 D; i: j! k( n$ H        }- r# o6 O  p# f8 a/ N
        catch(exception& ex)
: Z+ X! d& u+ y& _        {
! R4 R2 p" I+ C, q, O$ y            //---- Enter your exception handling code here -----. M9 F) y2 x# K( B6 J# F
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());9 c% Q5 |! v! I+ I% S, _' `
        }7 {4 r1 L+ i6 ]$ E; [. p8 y# a
    }
) U. J1 P( N1 Y' a9 ~0 [    & h% D# N8 U6 o/ y( M: ^: _
    //------------------------------------------------------------------------------
- C1 J) _- D1 I. W% V    void Shrinkage::keyboardFocusNotify_cb(NXOpen::BlockStyler::UIBlock* block, bool focus)0 F6 u  |2 K5 S' P7 T
    {: g/ l, L8 n3 H" T( X7 T) n+ w
        try
$ t+ i- u/ o& T2 M' u; w1 d        {) o: s% E+ _- p* W
            //---- Enter your callback code here ------ g8 I+ l8 P5 }" k: G
        }+ E8 E  o% a/ z
        catch(exception& ex)9 W" ~" U9 G9 \6 t8 W
        {
' e* \8 U( A# l6 P7 T7 G1 C
5 V  a- W$ q4 I& n( V3 n- B            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
- m; ~0 f7 o& V: ~        }- f, ~2 w$ g, {) p9 n! T
    }. r4 d& u, C8 a; X2 v; _1 |& O
8 Q& \) S, m! m5 z$ j" z" P* x

/ b, d. [! Y" E% J1 Z& g
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二次开发专题模块培训报名开始啦

    我知道了