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

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

lzhyi 楼主

2017-2-14 11:29:07

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

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

x
本帖最后由 lzhyi 于 2017-2-14 11:32 编辑 , r/ z$ j# V3 y# ]4 ~/ x4 a! K  T

) X" T$ Q# {" j$ l' P请问出现如下问题,是什么原因:库缺少需要的入口点,功能名:ufusr
/ R. h! E8 I+ H. }3 v代码如下:5 _+ T' D# Q# t( P/ A
#include "Shrinkage.hpp"( J, T6 H5 G* }. W  J( y8 t, x
using namespace NXOpen;
9 ]% ]7 ^) A  W. d1 d3 O1 u, ^using namespace NXOpen::BlockStyler;
; L1 s2 \" @) X2 t. ~) N" F' R0 ^% ^7 q
Session *(Shrinkage::theSession) = NULL;
$ y6 W! {; ]" w; B5 g3 m! [UI *(Shrinkage::theUI) = NULL;; ]' x3 r$ |) c; H# v3 {, p

- L. M  @) F  [" R! t6 uShrinkage *theShrinkage;! ^- c( x. C6 _( X  |
" H8 k3 j& Z9 `$ h
Shrinkage::Shrinkage()
7 Y: v. d/ ^) N& v8 p4 W1 {{
+ I  K3 i4 C  O- ?! q1 s    try
# a. q$ _6 L2 w  r/ O! _3 P    {' J/ k! i; S# r: D
        // Initialize the NX Open C++ API environment
- d- b. ^$ E4 Y; C        Shrinkage::theSession = NXOpen::Session::GetSession();
# E! n8 \- Z2 p9 o/ n: n0 y        Shrinkage::theUI = UI::GetUI();
+ I% ~# X8 U# C! g1 K/ R) T9 y        theDialogName = "Shrinkage.dlx";5 v" H6 A1 B7 I( }
        theDialog = Shrinkage::theUI->CreateDialog(theDialogName.c_str());
% g  ~4 U& O" O0 o5 E1 n5 [5 }        // Registration of callback functions
- g! y* ~* g+ c. ?& y* ^        theDialog->AddApplyHandler(make_callback(this, &Shrinkage::apply_cb));5 I) k+ n- u, X& ~
        theDialog->AddOkHandler(make_callback(this, &Shrinkage:k_cb));0 T" p  t2 _- K5 i. M
        theDialog->AddUpdateHandler(make_callback(this, &Shrinkage::update_cb));( C. k* w: b' Z# ^
        theDialog->AddFilterHandler(make_callback(this, &Shrinkage::filter_cb));% r7 K8 c) G* v2 O) b) j! u
        theDialog->AddInitializeHandler(make_callback(this, &Shrinkage::initialize_cb));
; {3 U) W8 p, ?* y        theDialog->AddFocusNotifyHandler(make_callback(this, &Shrinkage::focusNotify_cb));
5 p6 E7 q1 Y, g! s        theDialog->AddKeyboardFocusNotifyHandler(make_callback(this, &Shrinkage::keyboardFocusNotify_cb));
4 d) A5 k" i, e2 t" f5 {. K+ }        theDialog->AddDialogShownHandler(make_callback(this, &Shrinkage::dialogShown_cb));
% N# Z! F3 v5 u6 O  J+ ^( H* S3 i    }  P* u, C. d7 J: ?3 ]$ y; s, c
    caTCh(exception& ex)
" d( f$ s3 m$ r    {
4 F4 X( I, {$ o) n/ A7 |% C" j3 Q. @   
( C9 C5 o7 C+ k: w+ X5 s) k        throw;
! l* M. b' R' ~/ L6 p: Y- o) L    }
1 W5 C; M2 N3 K6 n}: @9 ]* O2 L2 A( B

6 x) V1 k( C: O" }Shrinkage::~Shrinkage(), q! i' q8 X5 h2 X
{& O! E' S. t- h# v
    if (theDialog != NULL)4 |/ R6 x$ ?- r1 i) q, {
    {9 E4 R* U1 \* N1 Y* t8 P
        delete theDialog;
: [' x5 v/ o' v( u, q        theDialog = NULL;
& T, [3 h, T& i8 q, j: w" [    }4 l+ \% Y% F* _% _- B( M" ^* d
}# Y' [* Y' B; ~7 c0 c2 H

1 z$ D9 G  Y  n( V0 N2 {#if USER_EXIT_OR_MENU
0 s( c) }" _# I; M    extern "C" DllExport void  ufusr(char *param, int *retcod, int param_len)4 W8 u* Y# v9 S/ B# D2 n5 R* ^; E7 I
    {+ o) X( W- q3 b% _
        try
" A. I& ~* e2 e5 f0 L        {
$ D% n) m# a& ^1 W            theShrinkage = new Shrinkage();4 Q1 y1 m0 W4 W: C
            // The following method shows the dialog immediately6 r  {8 p, Y3 |2 |: \  J
            theShrinkage->Show();' A& b2 G$ ]2 m7 E9 q
        }
) n" x4 A3 K" R0 m" \/ @6 v+ u* v        catch(exception& ex)
' L+ T0 G. n2 R' m9 o, o        {
4 O, t5 B5 Q7 ^' r" l  i! m' i            //---- Enter your exception handling code here -----: c' [1 K7 K; ^0 z% G$ ^
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());$ E" W7 q$ {4 O- D% g
        }2 T) [& r4 G. S& O% f. I9 C, x0 o
        delete theShrinkage;; c1 G# P! R  S: x: M2 K1 @2 B
    }
6 g* o# {& u& q5 @#endif//USER_EXIT_OR_MENU
3 t: p4 y5 V5 |* t#if USER_EXIT$ z. }# h" e* S% S
   
- l) e' A- v1 ]0 {1 Y    //------------------------------------------------------------------------------
2 u9 \. O% o/ O: A8 {9 p   
6 w! m4 N8 f9 y# K7 p* ^    // MUST NOT use this option since it will UNLOAD your NX Open application image
$ K4 K, o# x7 h  b+ Y    // from the menubar.
. z6 c$ d# S1 W$ U: o/ N) G0 j: L    //------------------------------------------------------------------------------1 B7 S2 r$ _: V8 C2 I+ @
    extern "C" DllExport int ufusr_ask_unload()3 B% ~& e9 ]$ h0 [
    {
6 {7 @4 Z8 P% ]8 |! k' ^        //return (int)Session:ibraryUnloadOptionExplicitly;
, C+ S: p: t8 e3 @3 S        return (int)Session:ibraryUnloadOptionImmediately;
; m- ^; o8 B, e0 G# H0 {3 n        //return (int)Session:ibraryUnloadOptionAtTermination;
" A: V6 ]* X7 i  D9 B8 q7 H+ H! s' k. }    }
' K: Z& I/ w2 w0 X. G8 J' B   
  w( H0 ~6 ^* K7 e: ?2 |) @. P1 W  S    //------------------------------------------------------------------------------7 m- Z- J( ?% p. X  c
    // This method is automatically called by NX.
4 j, \, S- m7 q) ~( V$ m0 b- X: L    //------------------------------------------------------------------------------
% p9 m6 M% {" j8 \    extern "C" DllExport void ufusr_cleanup(void)
3 N) @1 D% V+ Q! k4 U' N) N    {- v( v3 U0 I2 c% \/ t2 j
        try+ d* d6 h- `0 R1 D
        {
7 @9 m  K3 s. |0 z, E* b& Y            //---- Enter your callback code here -----
/ F& L* I- Q4 C) m3 q# m        }
4 Q& t( E* z4 V3 R" q        catch(exception& ex)
" w( _4 l* U( W" t        {! R% r  M3 M' G! O
            //---- Enter your exception handling code here -----: [2 w& Q; B  L2 N# o
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());3 P  y! l4 F) O  T% F
        }
% i4 N5 u& Q9 ~    }, K- \' [4 c' v; U
#endif//USER_EXIT! V( a: M  [: G! W! w2 ]
   
8 `5 q5 ?" j$ A  l% E5 x    int Shrinkage::Show()2 N) y5 a4 p5 O% F7 r, C& E1 `
    {
- B, s4 ^9 D) W3 W# j* @        try
1 w9 w) ]9 k" X. z, Y        {8 F1 V  c6 ]& ~+ x8 P# o5 z$ J: X7 e
            theDialog->Show();
7 ^$ j$ T! [9 h$ B4 H, \        }4 B$ ?' C& b5 F
        catch(exception& ex)
, L( E1 I- Z$ I* ]        {2 V6 }( g* l! Z. H% P
            //---- Enter your exception handling code here -----
  P! s0 r. W: h0 x3 e            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
# l  {$ k- u- @" v1 g        }, y$ N8 r- k5 [/ \- J- s/ G
        return 0;8 q' x& H2 K0 X  \: }/ X# D
    }0 G8 h- \$ p/ r6 H# s8 h
    ) u* a# J  j4 H% n4 t% `
#if CALLBACK0 {0 V0 V! G5 x' I4 l# q* \

0 a8 |4 a9 O* ~% S( l; p4 [    void Shrinkage::Show_Shrinkage()
( i5 G1 X" m. ^/ r    {
, e9 B/ j% h* u, P2 R+ _7 y        try# v  L, d5 B3 y) N- P
        {7 F* a& w3 H6 g! y9 E4 k
            theShrinkage = new Shrinkage();; H& [. @/ W! U

4 j% F7 Q; J6 V) ^1 V  u+ v/ w# d            theShrinkage->Show();
3 o5 z+ i" m* n        }  D* c( i  F( J* w- y7 k
        catch(exception& ex). U& Y( N9 e7 d
        {. L, q$ o5 [+ l0 c# k$ ~# w0 V8 i
7 \% v4 u; e% g# F- E! Y
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
  A- l& {% A- ~, G        }
& F1 c5 T8 e. Z$ ?; z: [( f$ H        delete theShrinkage;+ [6 O9 I0 ^+ {* ?. \) a* ?
    }
2 t- b0 F- T& u#endif//CALLBACK
2 D0 F3 J& @+ q: C   
% K5 r7 f% ^% v! _& T4 k' P9 }. T    void Shrinkage::initialize_cb()
6 u. l9 j+ q% i9 h; E2 T    {
0 V. O! O; {( _0 L3 N: M        try
$ Y0 G; d) T0 i4 ]6 d  k; x. {        {
, u( h& P& G4 a            group0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("group0"));8 U% T5 {5 e8 ]. _/ }
            face_select0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("face_select0"));
& d% c+ k; V' T4 S4 P8 F; R4 L2 Z            face_select01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("face_select01"));
4 i5 g1 p' h, h4 g: U            group01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("group01"));& Y* ?$ ?/ x1 |
            bodySelect0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("bodySelect0"));4 I$ J3 P$ T- e
            bodySelect01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("bodySelect01"));2 ?2 Y7 S% [' y
            group = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("group"));5 u4 h. R4 q2 @3 X
            string0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("string0"));  J3 t" j. R1 h
            label0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("label0"));
3 L' A1 v: l' @) u5 D3 X            string01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("string01"));" q6 ^. Z) C- M7 I+ h8 V0 O2 z: y7 z
            label01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("label01"));
# W: |3 J" d) c8 R0 |            label02 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("label02"));
# E- n% u) b6 B% _+ Z: e        }
0 g8 f) j1 K3 [$ g        catch(exception& ex)
9 o; e- D1 M( r' E, ^        {
$ `# I3 h  r+ {' _           
  z9 E& A& |& E2 D6 }. ^, h5 R            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
4 J4 K8 P; ]' z: U$ P! h; _        }
) N: \, G. n* D1 B1 G) \    }
" [, ~9 R) Z5 u3 z/ h( `9 k5 n$ h    //------------------------------------------------------------------------------
$ y9 F! w- y+ w7 q% m    void Shrinkage::dialogShown_cb()
8 r* e" k6 A1 P; b. Q3 b    {
$ y# d( O1 x+ ~7 t& ]7 u& P7 f; W( Q        try
, Y$ T: h9 j7 z* O% h7 Y  x        {
: z3 o, n8 ~$ `2 A  D1 Z            //---- Enter your callback code here -----
2 O; D, I# a. Y8 g3 b: n        }) d- J$ D: Y& |2 i3 B) V
        catch(exception& ex)
; b, t" w0 h6 @) U        {$ v' M: P$ v6 S
9 e" ]) h* Z5 C
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
* U+ |' E+ y# M! L& b, d        }' b/ g5 s% Y& T& L
    }
7 I, R9 Y% g# U6 S: r6 l4 O" d    . @3 N# D; t: R+ Y) R& t4 z8 ?
    int Shrinkage::apply_cb()
5 P% M. V) w  G; |  i    {
: D$ {* |& Y1 I" b0 T# m, Q; {! a5 d        int errorCode = 0;: |" ?) ]- S8 J) q+ s" [; |3 `
        try+ I& v) V; v" N6 G, y6 u2 @
        {
8 q+ `# |  x3 a' n            //---- Enter your callback code here -----
2 A: s# N; A% L$ R6 p        }
: L! Y+ ]/ k5 h6 w9 S        catch(exception& ex)& O, S8 g; W, K9 X8 }6 {0 ^
        {6 T, W& @+ v3 @7 q( j
            //---- Enter your exception handling code here -----1 f# \# H7 j* P  H* u
            errorCode = 1;" H, q5 ^2 Y) J  |( B7 l' ?
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());  y7 D2 x9 }: u2 X7 B9 m
        }
. R# g# Q3 C3 n7 h        return errorCode;
. {0 y2 W7 |, t0 v3 n4 ?    }
% T5 T3 }! N  [9 J* O+ O6 Z1 L  D& t4 A, w0 e$ z4 k4 G
    int Shrinkage::update_cb(NXOpen::BlockStyler::UIBlock* block)( I$ S* W$ `# R0 G
    {
  ^6 n) O( k8 v        try% e) q4 J: Z; p& I" K
        {
1 h8 r# m! \3 V' i4 V            if(block == face_select0)
0 t' B; s2 T" w! I& Z& O0 n            {& T2 @4 F* b7 j6 O9 t3 H
            //---------Enter your code here-----------
9 Q: X2 B. h0 N  X8 W) p            }
; I. f  s7 }& g8 x            else if(block == face_select01)
1 Z8 l5 s; f4 ~' M" D  y( j% \+ \            {2 U2 p7 \; K- E. c4 Q4 k) p
            //---------Enter your code here-----------
1 O- J! t. j# d: e5 p0 j1 b            }
; |8 K1 z: M- w) s/ M" U$ I. j            else if(block == bodySelect0): p7 H& h! s& n8 A- j8 k
            {
7 H" C* I$ |7 [1 t9 b            //---------Enter your code here-----------8 X9 I4 J: t1 k3 `8 u. R9 P) S
            }
- ~$ ?6 R' K! H  j            else if(block == bodySelect01)" V$ B3 Y2 u1 a$ w" B
            {8 h( m" {7 ~8 L* r1 }
            //---------Enter your code here-----------
4 g; A1 v2 M* w2 R0 q; Z& M            }' }: f* E% I! t) Q
            else if(block == string0)6 k. K/ {) ^1 ~& o
            {1 f4 h# B# R" ?! `) d2 m, A2 m
            //---------Enter your code here-----------
; b4 \1 M. O7 L: E( q            }) v) p+ P' }) @" k: }
            else if(block == label0)
$ @6 V" l& E: b            {' ?$ R( O  M* I; ?
            //---------Enter your code here-----------% y  F  N9 m* @) B9 M
            }, M" E; j0 C# H( w7 U8 Z
            else if(block == string01)' B2 }3 I9 L: _0 z! Z& P1 C
            {) b( u$ |8 @4 c) B
            //---------Enter your code here-----------  P" F# \. I0 c+ e# Y
            }3 `/ a  t7 h0 G% B( \9 l5 v$ C
            else if(block == label01)
' V6 d3 r1 r* v6 N- Q+ h! ?0 q+ \            {
( z5 z3 h' J& {& a            //---------Enter your code here-----------
8 [1 N1 i1 A; \8 R            }
1 o& V( H5 y; C6 ^* U# v            else if(block == label02): r$ ?; b! g+ _4 {4 O" }; g$ _. j; L
            {
: f: \' z0 `- s( A) f" Z. L! a9 r            //---------Enter your code here-----------
6 v# p& o6 f6 d8 i+ Y5 w* p            }8 l/ b+ w7 n1 I& B1 w1 X
        }, ]. h. ?. F& A1 R: h# {& H
        catch(exception& ex); j% c0 d  J( M: }# `& G. d, [+ _
        {
9 k* V9 U  U) x3 d, ]  k            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());8 H( T4 j2 t* M6 c) ^
        }
3 p$ e) x" z; a# ]' `9 \0 F        return 0;6 N, B- a0 b' |1 M$ y  Z
    }7 c/ H2 f, q  p. g, C$ ^! {# z
   
7 ~# }" N( T1 t& k. n' H1 _    int Shrinkage:k_cb()& G2 z4 @& x: l" d- B. t8 S( R
    {+ ?9 ]% _% H# u8 j1 T, @7 ]
        int errorCode = 0;, {, ?$ T3 n% ?8 @0 X
        try
' @/ a% m8 R6 w2 E/ @" v( H        {3 Y0 V0 @2 {8 e/ u$ ^+ J+ b8 y
            errorCode = apply_cb();
. T  a% J' ^( S* f2 ~. P        }* [4 T( u# v' d4 J" ?
        catch(exception& ex)$ _! H# B" _4 \% e; J  A* e
        {
) ?, X" R' }/ w  \) Q. e            //---- Enter your exception handling code here -----3 @* c% q8 E$ V$ p, D
            errorCode = 1;5 d2 @0 h/ a( w( b
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());: F, ]" j/ {% O0 l3 b
        }
" P! Y1 W! C7 r$ B1 o3 k, p9 o$ C        return errorCode;
4 f# f( n. s3 G1 O9 x3 o. c    }0 q2 M: M1 F- N" z
    1 j6 F/ E" @: \
    //------------------------------------------------------------------------------
7 t* z5 C6 }& t# l0 r    //Callback Name: filter_cb% z% D8 R4 E5 D6 }
    //------------------------------------------------------------------------------6 F. H% |# J$ J  R5 i9 Q
    int Shrinkage::filter_cb(NXOpen::BlockStyler::UIBlock*  block, NXOpen::TaggedObject* selectObject)
( L$ o& ~# `' n* _4 e    {
7 i+ ~% Y1 p, b( v% B1 W9 K        return(UF_UI_SEL_ACCEPT);
$ F( C5 z# j) @% m' K! g$ c    }
, x( h& n% O' U$ J" I$ z2 v   
% B  g/ N+ u/ e; C( `3 Y    //------------------------------------------------------------------------------% S, R5 C- `& `9 p4 i; a
    void Shrinkage::focusNotify_cb(NXOpen::BlockStyler::UIBlock* block, bool focus)
( X1 ?2 ^, Z, Y% `3 p# I    {, P4 x$ O" N& X$ T. [# h: |
        try
$ ^4 l3 f0 S  T4 ?4 ]9 A        {
2 G6 F1 u6 I* g1 ~/ j' e7 s            //---- Enter your callback code here -----
& ?& `$ d% ]; |        }' A9 D# n, X4 L2 w2 t7 L
        catch(exception& ex)
( l. A8 K, X- E3 P        {* Y2 L: R3 n7 b# C% L/ p5 V
            //---- Enter your exception handling code here -----/ v, p; ~6 ^8 X& d" j6 ~
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());" d5 c7 n8 L; g
        }
9 A! ^" {9 I; D: y0 ^. b/ Y    }$ G) ~" N2 s- d# `5 l3 Q
    3 p2 W$ b5 y& F! q2 G) ^
    //------------------------------------------------------------------------------8 K, I$ X$ z' U
    void Shrinkage::keyboardFocusNotify_cb(NXOpen::BlockStyler::UIBlock* block, bool focus)4 ~0 T1 ~- h! J; P8 W0 C) M
    {
* Y; {' |+ u) U/ O+ ~6 p        try' I3 v2 ]2 L, p, Y* K) k( Z9 `
        {8 N- s3 g' ~; k8 p& U
            //---- Enter your callback code here -----
$ ^; y; q1 B1 i1 T4 X        }
7 O4 n$ e8 U& w! I* N( ^        catch(exception& ex)" y. \+ d$ A$ f$ E: v! Z2 F# M
        {
( O4 k- V0 m# U1 P( H9 T, A7 T0 |; u9 y1 v0 s
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
( }4 p+ I+ S  T% Z5 l9 z* K9 _; J        }& I6 A7 d0 y" ^) e. S& J! _
    }. W5 `! H; k' y6 {5 [
/ e1 i9 `8 Z( a* z, f) x- p. P( l( C

9 l9 Z3 `% W) H) Y2 Y
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二次开发专题模块培训报名开始啦

    我知道了