PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

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

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

[复制链接]

2017-2-14 11:29:07 6584 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% P; G# r2 ~& g  E' A0 R+ u$ j; J
7 L" _6 s; n! M2 R+ {' i
请问出现如下问题,是什么原因:库缺少需要的入口点,功能名:ufusr
  n( m+ I/ H% j% C代码如下:' D7 o/ W6 i0 l- e( L3 q
#include "Shrinkage.hpp"/ D% L( W# W3 K' w
using namespace NXOpen;
$ y; U6 E" {! z; d. b2 @5 [using namespace NXOpen::BlockStyler;! j1 Q3 G: _. w3 d/ p
% B! |  {' b, i5 x3 a
Session *(Shrinkage::theSession) = NULL;
8 @' J; q# C! X" lUI *(Shrinkage::theUI) = NULL;6 m) S6 U: m9 q, y+ g+ |

( M3 l' u' ?! G5 `Shrinkage *theShrinkage;
( s+ w% j  g5 P$ q( J3 t/ g2 h' T# e- d$ v, G6 |' [# x' p
Shrinkage::Shrinkage()
& R& H! I* a' e3 k{, t  |4 n9 N; m
    try- _3 b. m0 E( t6 C: |) S5 a
    {1 x0 a1 z* O* M
        // Initialize the NX Open C++ API environment8 L* F% X- p: }- N% j
        Shrinkage::theSession = NXOpen::Session::GetSession();* ]$ K1 t( ~0 L8 _1 c/ ?4 y" ~
        Shrinkage::theUI = UI::GetUI();
3 x, D" Z4 i5 T4 k2 f7 p1 z2 E  K# u        theDialogName = "Shrinkage.dlx";
3 ?  s, E- W# v7 L, Y        theDialog = Shrinkage::theUI->CreateDialog(theDialogName.c_str());4 j) ^, p5 q. m& j9 J+ V/ O1 N3 l2 p
        // Registration of callback functions
* u9 f+ P' _) E7 A' J        theDialog->AddApplyHandler(make_callback(this, &Shrinkage::apply_cb));
$ s* ?7 B1 H1 U  i) a        theDialog->AddOkHandler(make_callback(this, &Shrinkage:k_cb));
4 W" {# L  ?# L" |        theDialog->AddUpdateHandler(make_callback(this, &Shrinkage::update_cb));2 i/ `7 p" o9 Y! y. y3 I. L2 O
        theDialog->AddFilterHandler(make_callback(this, &Shrinkage::filter_cb));) K$ u  @, c1 R, Z5 o3 |; G9 R9 w
        theDialog->AddInitializeHandler(make_callback(this, &Shrinkage::initialize_cb));  `+ E, @( {2 @
        theDialog->AddFocusNotifyHandler(make_callback(this, &Shrinkage::focusNotify_cb));5 N$ {" `. z* ]- F: O" t
        theDialog->AddKeyboardFocusNotifyHandler(make_callback(this, &Shrinkage::keyboardFocusNotify_cb));
( }5 `  n6 q, [  ~9 e0 U        theDialog->AddDialogShownHandler(make_callback(this, &Shrinkage::dialogShown_cb));, z1 ?4 a) g2 g  ?
    }% d+ D4 ]6 Y4 M' J7 p. v
    caTCh(exception& ex)1 }% A4 ]9 W* [& v* K  X6 D! H
    {
* U) o4 S  ]5 y7 M+ J! o   " Q+ d4 j+ c, Z, X: Q5 ]% V( p
        throw;
; q. x0 f+ w9 M0 h: {5 a# _    }) V, O& R* g# P  @
}
3 n* b( p) A7 W# y% y; ?3 V* [
: T! J" A% }* NShrinkage::~Shrinkage()
$ f( r/ x( b7 g; Y4 B- s{9 T* m# L7 F3 R/ v
    if (theDialog != NULL)
- P5 u6 B" X" o2 |! {; p& C    {; h2 D6 B6 w8 n, Z! K
        delete theDialog;4 v1 a( M; G4 R7 T& Z6 H8 u
        theDialog = NULL;
: d. q) F+ D. w0 h    }
/ b( f; w6 V1 y$ p' {* p+ E) u}$ ?9 ~/ ^3 r3 }" p
1 s/ e  `1 k2 g3 x! q
#if USER_EXIT_OR_MENU2 o0 T" d2 {* F3 p5 h8 T- H9 U
    extern "C" DllExport void  ufusr(char *param, int *retcod, int param_len)$ }+ n' V% m7 v( f
    {, K6 n2 a4 j  k% y  w
        try$ ~* m1 H9 b: ^3 n: ?
        {
* {& A: z7 F# M  V  r- b2 V            theShrinkage = new Shrinkage();4 \+ {9 \2 g1 L9 k9 }9 [
            // The following method shows the dialog immediately
) r8 P' Q% _9 T) M: r( `            theShrinkage->Show();
! u' r9 u6 B8 X, b: ^        }
( a) P2 K& R+ ~        catch(exception& ex)
0 e" A' C4 a. Y4 F& D7 w        {% l( ]' |% f/ ], X
            //---- Enter your exception handling code here -----
7 s! H. |8 ?5 ?            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
, N, \6 y$ A5 d6 d' N6 j, W1 r) Q        }
! l* Q* [& J( z4 m        delete theShrinkage;) Z7 k2 z* v6 \, H& j  E- u3 a
    }% K) F; ]) C" n1 p' h$ k& w
#endif//USER_EXIT_OR_MENU
& A9 s  K* K8 b! p4 v# e! y  z#if USER_EXIT
6 f( H; P( B' D- v    / O  A& a# m. `1 t) p
    //------------------------------------------------------------------------------
0 s( G2 a5 F$ A. s6 B   6 H: F3 j4 P8 ?7 S5 H
    // MUST NOT use this option since it will UNLOAD your NX Open application image
- S% @, _5 }3 u    // from the menubar.3 x7 Z) c( N/ f9 u2 M+ G# F: _
    //------------------------------------------------------------------------------. M$ L" ]- ~8 o6 W
    extern "C" DllExport int ufusr_ask_unload()
7 n2 S/ M3 e6 Y    {
8 B# p2 x$ {1 v  B9 p  |        //return (int)Session:ibraryUnloadOptionExplicitly;
  z- o( o, Y. R- S! Z        return (int)Session:ibraryUnloadOptionImmediately;) n' c8 S* \& A* l
        //return (int)Session:ibraryUnloadOptionAtTermination;
4 z+ Z9 m  H* Z; S: A    }7 ^2 i7 E  E7 F+ P% e' V
    + }. ?; O8 g) s
    //------------------------------------------------------------------------------
( h4 Z. u5 g0 B    // This method is automatically called by NX.
- n2 d( x+ \1 K' S! J5 U. Q    //------------------------------------------------------------------------------4 z+ C7 I0 X# O" E9 O% T: @7 `
    extern "C" DllExport void ufusr_cleanup(void)
! W: w: Y& G- t/ q, `    {
9 ~' J6 x/ r& A7 g6 b+ f        try
6 A7 N$ d) c2 J( u, b' k1 e7 F        {
( s# G0 u0 w) L$ g            //---- Enter your callback code here -----
  r- Q' G9 D  ]) G) Z& k& G        }0 _+ D  s7 p7 E
        catch(exception& ex)' `# b+ e3 o6 i; q6 n
        {
; N9 l; l" v) `7 Q0 a            //---- Enter your exception handling code here -----
5 K1 v' {4 u4 O' N, t            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());) O: C+ s" N* Q
        }
1 [- v8 X9 w5 V, d6 n' U0 [    }, E/ `" `, X/ h/ _5 |' j9 }
#endif//USER_EXIT( r0 M' b+ x6 f  I/ c. z, o
   
  m" V, ?0 T! o2 C    int Shrinkage::Show()
- p* [1 @, B$ x/ Q3 G; B' A! p    {
4 O; T1 `3 X: u( T. U        try1 E' ?4 p1 k! u' O7 O4 T, y8 W
        {/ h: |  a) M! [2 C' x
            theDialog->Show();7 I, c$ A; A* `0 o9 A4 H
        }
" A' f/ H( p+ e( Z9 {        catch(exception& ex)( V- V8 o, {% i
        {
1 {: T! }  J/ w+ J" l$ T- {( R" `% i- H            //---- Enter your exception handling code here -----( R/ B: q) F0 Q, B0 U$ }
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
" l2 J7 |8 E  a# h# X        }
# o7 h! l1 L+ A7 D        return 0;! _! ^" B% `. p" G, O& T3 s
    }
3 {6 y$ ~  ^0 v  q# d  M    7 B4 L2 l8 Q! g9 O1 l
#if CALLBACK
7 ?+ F% o) {+ e3 z
4 A7 V# y% l! h( c# p    void Shrinkage::Show_Shrinkage()0 J: ^. p7 y% w: K
    {, H  r( `: V# \3 f/ Y
        try
5 O9 |5 M. [' U4 W- t2 b/ g7 B        {- m0 e2 k- I0 z0 s
            theShrinkage = new Shrinkage();
! X% ~& J5 T" c6 @9 F
" O3 {% X7 s1 P            theShrinkage->Show();
) A; S, Z5 G; M8 B. b        }, E* L7 N6 g" H, x* L. v
        catch(exception& ex)
+ c0 G3 |& P+ \* V. B: S        {3 b8 S! J1 ^) A" a3 t$ [* m
4 a! I! u# ~  p( V; G
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
# t$ z/ T2 B% q8 D7 _        }
8 P0 G0 D7 d! y2 q& y! q' Y        delete theShrinkage;
: e; U3 R5 S9 {! L8 G3 b6 C    }, Z8 T; v8 K& O' K' z/ V" F* t+ C
#endif//CALLBACK( U( @2 \1 F) `0 y5 Q6 D* ]
    9 l$ w. ^, G# ?" e. y' V  {
    void Shrinkage::initialize_cb()( ~1 R' c9 U6 m7 O8 Z
    {+ E" R) _; a( t3 e1 O# y: J) l
        try, c5 I5 w7 M6 I2 C: d; c
        {1 a6 K* l  U7 {( K% @
            group0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("group0"));
  {0 j9 r" v! m            face_select0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("face_select0"));0 u. i9 j8 W5 F( ~% T/ k! S# h7 t* t: G4 v
            face_select01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("face_select01"));/ J( p7 S% X9 Z( r+ l* q9 t; u" ~
            group01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("group01"));4 s. d$ _4 l5 W
            bodySelect0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("bodySelect0"));
2 r! P8 t" ^  s5 }, {) {            bodySelect01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("bodySelect01"));( L- P* U" |) U* e4 M
            group = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("group"));5 z+ U3 M$ Z/ I. d- r
            string0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("string0"));! _# R1 T- {1 A& o4 ~2 n8 G* B
            label0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("label0"));2 s( }+ l& H- z: e2 l
            string01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("string01"));
# v# w* p2 f4 J4 z2 e/ R            label01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("label01"));
3 K2 k! ^& e5 V            label02 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("label02"));& J2 v' P/ v7 Z: w, p
        }
; |  g2 g; W2 q; s        catch(exception& ex)7 C" @' k1 O9 N
        {1 A- w: R: R" J8 z9 s- ?+ ~
           9 I# e' ]) T6 R# @( D' ~; E8 ?4 O
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());1 p: `9 X: u7 [+ k+ h; L3 G2 h
        }' Z, v5 |$ }  y0 L8 a2 F
    }! o4 q' f$ [! W4 U) \. u
    //------------------------------------------------------------------------------. @# O* h5 M- x$ K+ s5 |! @
    void Shrinkage::dialogShown_cb()& s1 ], r- H6 v2 p. Z# |8 i
    {& Y4 P5 l! c, J6 l6 D; S
        try
+ D; r& `0 u9 |3 j* o        {, e$ Q1 Q8 K: F9 Q6 v
            //---- Enter your callback code here -----
9 }  [+ T) `+ p' g+ N        }
, {% M" Y5 L/ T        catch(exception& ex)
! {! d3 S: ]9 B* M        {
* Q% w' b% E/ m( m; G* V0 C3 y; d1 {" y7 w: @# M
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
8 ]  V6 I% o- G1 [* g8 i+ s" `        }
! `, i8 a; m) A' x; \6 q    }1 e5 ^( b7 ?4 F% R7 W
   
, m: `& V9 Z. O* M6 Q* S3 r    int Shrinkage::apply_cb()
2 o3 {: l2 t! W    {
) ^3 f# r* |, j$ a% P        int errorCode = 0;
8 P6 a9 r0 b: T4 @5 M. ^0 _        try% e4 X6 Y/ k1 L; q% y7 D8 P) d! @
        {7 r1 k' |- \( ^; S, Y$ G6 p' u
            //---- Enter your callback code here -----
1 s& C9 Z; r3 {8 ~5 o, n        }" ^3 J9 I9 i# r, W$ D
        catch(exception& ex)) u+ U$ l5 d; U, F! N
        {
6 G$ E$ P2 `/ K            //---- Enter your exception handling code here -----1 U* W/ j& b  }2 }: Z$ a3 b
            errorCode = 1;2 s% t; Q' S8 A# y. L
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
6 N/ |- b( g! a; x: E. R' j        }
, {7 g- r- o) K; ]        return errorCode;
3 N3 |  `/ x7 r. a0 q    }( L7 z1 d& t0 ~1 C  ?+ d/ B

# g) O5 v- }; @3 Y, o. q    int Shrinkage::update_cb(NXOpen::BlockStyler::UIBlock* block)0 e6 a) `0 k/ X4 d6 J
    {
6 Z7 l. U3 q6 t7 _        try
2 @# I9 n6 }& N* d, ^% I        {
4 L* t- n8 t# F4 S3 ^            if(block == face_select0)7 w' d$ Z9 O; f+ I& x
            {
5 }: M. r9 u( j0 m0 M            //---------Enter your code here-----------# ^7 [" O# H! L9 I% e
            }
6 h( n' v7 o: b8 H6 s4 ^, T7 ^            else if(block == face_select01)
9 s+ ^- C) y1 h7 _            {
# J" j! I  U7 _3 i            //---------Enter your code here-----------
8 W7 f4 f  Q9 v+ r& S( c0 D            }3 w* ?# i* m4 ~4 B! E/ [
            else if(block == bodySelect0)
, o& M9 s2 J6 a1 h0 r- o8 D            {3 J/ H" _$ ~, `- N& m! L  B7 ^
            //---------Enter your code here-----------: R8 d) V, v& M
            }0 r! e* N3 O& G) k
            else if(block == bodySelect01)
% t* S) r2 L, E. V+ Q, P            {+ @2 k6 T1 a! Y- W0 D
            //---------Enter your code here-----------
$ F! C& Z* p# q3 K3 l. T, r            }
* v3 c  e% h; `! Q            else if(block == string0)
8 D0 ?. F9 z& ~            {; x5 ?+ ]; h  |6 j5 z+ N+ R6 `
            //---------Enter your code here-----------5 D! p( v$ }4 n/ o* N5 Y
            }
' c1 z+ @6 k# R( \& |5 z& u7 |            else if(block == label0)
$ X, e1 B5 L5 v* d- C8 ^% b            {
( y, c9 Y; }( l0 ^/ v/ z- ?9 I            //---------Enter your code here-----------0 }' U/ ^6 u. j1 t
            }9 ^3 f) S1 g. u& _: Q4 s. E
            else if(block == string01)9 v. \- c. {* r5 I; @
            {0 ]* x2 B; U4 S/ K7 \6 e$ K9 {3 X. ]
            //---------Enter your code here-----------% F, N' g* Z" I9 M2 l  Q# r% p% i
            }
6 M3 M$ _" R9 D/ N1 C            else if(block == label01), _& l$ Q  H. M8 K  X
            {
" Z, Y% J& f' z            //---------Enter your code here-----------4 z) E5 c8 o* w, [$ n, ^
            }! o. N3 O) _" O5 b2 d
            else if(block == label02)8 ~$ \# a! N3 z
            {9 V: H+ H. y# d% B( k
            //---------Enter your code here-----------
* A* B! }6 N! e, Q( G' y! r" L            }  I" P0 r0 W# x& W6 r+ O$ Q
        }7 a, ~) s5 b( W& X4 r
        catch(exception& ex)
  o9 H3 a2 \' J        {3 U" |/ e, ]) r( W. D( |9 e
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
$ J5 U! w( O9 w. T% U        }" X* p* W$ v. d( Q" E& c# _" d
        return 0;+ f+ s( s8 |, F7 K8 r1 c, J& m
    }
$ n$ b; T- l# v: k. a, W   
7 }* y7 g8 X- m: a0 q* c    int Shrinkage:k_cb()
$ S! x, T; n* k( Z    {
" T  B8 r+ a' G- |! C6 C! ~9 k        int errorCode = 0;( X3 I" ?4 m1 a$ o4 }/ m
        try
  I- j2 v1 ?+ q        {  h' {1 a# v' X( c) C* y: A
            errorCode = apply_cb();
! B0 |& N, b# A" x, C8 U/ J9 K) I        }
3 _/ J$ ~3 d# ]- p9 L        catch(exception& ex)
# C4 z1 ~1 Y' j) [; V        {
& ?$ C( X) F, E  ?: [5 U6 h            //---- Enter your exception handling code here -----  O- D/ x+ q, q% z6 ]
            errorCode = 1;
$ O. n5 G$ r. g0 ?! D            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());6 u3 A% [: n% Z  S! I) `+ g3 X2 O
        }. P3 F5 v5 B: F+ M
        return errorCode;# ^: m8 E0 i' E
    }
7 \& O" V1 X% c+ x0 m) ~    2 a7 O: G4 y9 l. a2 T
    //------------------------------------------------------------------------------
# E# d; }; a  S( T' d    //Callback Name: filter_cb
/ R; D( ~* B# [! Y4 g9 S8 h    //------------------------------------------------------------------------------" u' `# m* b! w5 D" {! k
    int Shrinkage::filter_cb(NXOpen::BlockStyler::UIBlock*  block, NXOpen::TaggedObject* selectObject)9 P' L* p/ d, ?! |" M
    {( u; h4 E2 |8 ^: R7 Y2 {" Z! k
        return(UF_UI_SEL_ACCEPT);
1 j) n, p  `0 q! @5 t    }' S6 z3 [( P, \; h0 `& ~" T/ o6 h
   
8 M4 B3 L( j) N6 z* n5 Y    //------------------------------------------------------------------------------
. C. B1 w4 k& O" T3 i    void Shrinkage::focusNotify_cb(NXOpen::BlockStyler::UIBlock* block, bool focus); H4 `% j' F* X4 a
    {
, @% N; I+ o! _$ P0 H        try
$ ~; K9 }1 r8 I$ H& w! m. T2 ?6 d        {
/ S7 v: d% C" t            //---- Enter your callback code here -----
+ h, v! N2 w) o/ j0 d6 e. D9 c        }
" o  U; R. Y- u3 g* D        catch(exception& ex)( B% G+ U6 w3 Y7 Z+ g: M% x2 G
        {
/ ]8 N5 O0 W" n            //---- Enter your exception handling code here -----: ?4 n" D) N; f! y% `8 m
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());  X2 p$ `- V" ~# [, v% i
        }' }: I/ r2 m+ v- Z5 l, A
    }
/ ?6 S6 o7 h0 b% a2 q   
4 k6 j, `& [* H4 ]1 o# R. Y    //------------------------------------------------------------------------------4 O" n4 U0 Z% l. c7 k
    void Shrinkage::keyboardFocusNotify_cb(NXOpen::BlockStyler::UIBlock* block, bool focus)5 b9 F9 y2 D& g0 u! W$ H# s
    {" g( a. }; }  v
        try0 O6 R4 F+ A$ R7 D( @/ {# T
        {$ l" Z% ]2 b- v
            //---- Enter your callback code here -----
' w7 e2 {- }: s( J9 \/ Q        }
& D3 }: Y# u4 s) D0 ~6 i. X* N        catch(exception& ex)
9 l# w3 ]) |$ P: S8 ~2 s' S        {9 M; n4 q9 r/ u# r/ w

3 ?; r2 V2 t1 p: V6 v) [6 X            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
# @" A5 q. i; u# h. @& q1 l! A        }1 X: ^6 U7 r* I$ z0 D3 F
    }
$ _* i( R$ U- D: N, G. S( P1 c( R) k% z% V4 I

* L# O! l, B# P& H5 D* X; Q
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二次开发专题模块培训报名开始啦

    我知道了