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

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

lzhyi 楼主

2017-2-14 11:29:07

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

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

x
本帖最后由 lzhyi 于 2017-2-14 11:32 编辑 2 |2 b& G8 U! s

, o( f: S- v, R: w请问出现如下问题,是什么原因:库缺少需要的入口点,功能名:ufusr
" J# ^. ^9 z( o& J" O代码如下:
/ k) y/ j- p7 A4 s. ~2 P, X# U- Q#include "Shrinkage.hpp"
: J/ I2 o. T" iusing namespace NXOpen;+ p% L# U# q4 T2 h
using namespace NXOpen::BlockStyler;$ x: l2 K) l. M& m% J4 w

1 i6 g; _: w$ r( r; q% W7 j7 {2 j# S+ ZSession *(Shrinkage::theSession) = NULL;
1 }1 n- c0 G; C/ g4 K6 UUI *(Shrinkage::theUI) = NULL;/ l, a, r! q3 z5 m' C

1 Y7 `% x) G: B( t5 z3 M9 A- RShrinkage *theShrinkage;4 l! f7 t  j9 F: B+ ?1 `0 J4 v$ u

3 u5 O2 T! p  {- ^0 T1 LShrinkage::Shrinkage()
: ^: P3 [1 l5 I/ W; _( \9 F. `6 u{
, |0 [' P( k7 U  B  O1 M    try
/ w! q5 d# q/ S8 J    {8 _0 X: s3 c* t. q
        // Initialize the NX Open C++ API environment
$ W& g6 ?4 h5 ?        Shrinkage::theSession = NXOpen::Session::GetSession();
% R* E7 |% ^5 S% C( [$ |; ~        Shrinkage::theUI = UI::GetUI();
5 i8 O/ |/ c$ k7 Y; `$ _0 s        theDialogName = "Shrinkage.dlx";: E; d" c% j) D
        theDialog = Shrinkage::theUI->CreateDialog(theDialogName.c_str());3 u) ~8 E) B0 K* f7 l4 v; \6 k
        // Registration of callback functions
) O% g* z0 j8 m  v$ F# J        theDialog->AddApplyHandler(make_callback(this, &Shrinkage::apply_cb));$ k& b0 s( |6 ?) J' Q
        theDialog->AddOkHandler(make_callback(this, &Shrinkage:k_cb));
$ K) N& E' c8 ^* P! j1 J" y        theDialog->AddUpdateHandler(make_callback(this, &Shrinkage::update_cb));
7 l4 c/ \2 g) f9 i5 w! q        theDialog->AddFilterHandler(make_callback(this, &Shrinkage::filter_cb));
# M0 K1 g9 t; y4 k- N        theDialog->AddInitializeHandler(make_callback(this, &Shrinkage::initialize_cb));$ S! e" f5 z7 C$ E! P/ ?" A
        theDialog->AddFocusNotifyHandler(make_callback(this, &Shrinkage::focusNotify_cb));6 F3 G8 S& w3 n7 }. i
        theDialog->AddKeyboardFocusNotifyHandler(make_callback(this, &Shrinkage::keyboardFocusNotify_cb));
! h8 q! @6 b; I        theDialog->AddDialogShownHandler(make_callback(this, &Shrinkage::dialogShown_cb));; {' z& r+ a: p- I
    }
4 L3 A8 y6 W7 f    caTCh(exception& ex)/ @2 J# \+ X7 V0 H) K; L& `# l
    {
7 m8 @0 Y2 l3 a3 n+ n" R7 e! }   
; [* |$ m4 A3 o( C) [! P        throw;
) M  @  i# O" s% R    }
. L6 C. b0 f' b8 Q& f4 d" @9 X+ ]}0 b" b' K; U% q" I  ]0 Y6 ^) e) E

, K, r6 @* s/ g" p5 q8 l2 wShrinkage::~Shrinkage()" N( j( I. V* }1 U9 b
{6 k( T% b% B, O% j
    if (theDialog != NULL)
7 d6 ]0 Y; u6 q" j) d4 ]; ?- W- \    {
3 ~& m5 Y5 N% \) j1 f0 w9 |        delete theDialog;1 u" Y  [, o7 d4 k; D6 y6 {
        theDialog = NULL;1 x* }$ L( X% c/ w9 s, g& n
    }
: J3 B2 d5 u+ G1 c% }; a3 ]}
, k) K& {7 i! ]+ T4 A
. g0 q  T4 e! L, W$ Z& _3 c#if USER_EXIT_OR_MENU
) W" x3 B9 n8 Z$ q    extern "C" DllExport void  ufusr(char *param, int *retcod, int param_len)2 x2 c' j' o3 U! e: c
    {+ U: f5 j7 M: d) o: ^" ^8 Y& i  e
        try
/ ^" L1 B& @3 X3 B0 ]& I        {. j3 l* \2 c# `# t9 m; `
            theShrinkage = new Shrinkage();
) P. D& U; K1 x1 \            // The following method shows the dialog immediately
! h$ Z7 u0 V! ~  G% [7 D) x            theShrinkage->Show();+ i2 [# F" U$ W3 M2 Y6 i3 N1 Y% y
        }
( Q" Q2 G" |' H% H8 J- a$ n- D2 G        catch(exception& ex)) H$ v/ S0 T! C
        {- K% H1 K( C8 B* v
            //---- Enter your exception handling code here -----' r% n) u- {4 q$ d& L
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());3 c8 ]5 z7 Z# d% l  F# q" s
        }1 N& ~1 u8 C+ K1 u( B8 d
        delete theShrinkage;) ]2 J6 i$ K% T, x" I5 k
    }
# j, F, j6 F/ S4 p( u#endif//USER_EXIT_OR_MENU2 o3 J% G. x( j! k! N3 O3 M( r+ J. T
#if USER_EXIT
8 @" a! x! H6 F7 K   
/ C5 [* l/ I( [- l: N9 x    //------------------------------------------------------------------------------
: S/ Z& o# W# c5 V- f   8 }1 Q! p9 [: C7 p& w
    // MUST NOT use this option since it will UNLOAD your NX Open application image
5 V3 V: E) ~* |5 Y3 i% ]% P; r; z    // from the menubar." o5 J& l7 @# p1 u' I- @9 f
    //------------------------------------------------------------------------------) T! j1 }& b  w+ u( c! H' n& m
    extern "C" DllExport int ufusr_ask_unload()0 |8 ~& b! q: m" g5 o& O" H) c
    {% e3 k5 N% x4 m
        //return (int)Session:ibraryUnloadOptionExplicitly;
4 w& O/ P1 K* k3 D7 {" _0 Z        return (int)Session:ibraryUnloadOptionImmediately;3 A  \2 W7 v) R
        //return (int)Session:ibraryUnloadOptionAtTermination;9 @) Y, f' c$ m, x7 t
    }2 K6 I- w5 N. E9 J# j% r
    * m# _  W7 ?, h/ U: r
    //------------------------------------------------------------------------------% @6 Z3 z3 m* g; n8 H  d: T( o' j
    // This method is automatically called by NX." i7 S; o7 k# q
    //------------------------------------------------------------------------------& }' G* T6 F) U  A1 r
    extern "C" DllExport void ufusr_cleanup(void)( h) @# C; v. |/ b
    {
" n# n0 o" C, y6 m/ ?        try
* y6 j; ~/ w0 K5 R        {) }) O5 k( c. i
            //---- Enter your callback code here -----' w# m2 P$ c) L$ b7 M% S
        }
- l9 G3 E' P5 c        catch(exception& ex)
! g4 Y3 {5 Y1 n. D( |4 g' W( e        {
  h0 s9 V8 B% R/ Q            //---- Enter your exception handling code here -----
4 \: k! D. u8 v6 [8 J            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());% Q8 b* s. n6 i) N' b- e
        }6 v# g$ ~2 i4 Z5 `  r
    }1 d: |* Y0 s# k. u
#endif//USER_EXIT
: e; F- d' }6 J+ H6 c$ G+ T4 x% H  j   
* \- w% d: s5 \4 L" ~( m    int Shrinkage::Show()
7 R$ i3 s2 W" A1 T    {
, j; t% l7 f  G: g        try
' @8 V% A8 W1 R        {
$ B' _2 S) I* q# o% l0 l            theDialog->Show();' R7 f# R* Q, S+ u7 O7 U
        }
* ?9 R9 P: {$ u  Y+ Q+ k& I+ ?        catch(exception& ex)* `4 P9 [. P4 u# M
        {
5 d0 V' P2 C1 D5 m            //---- Enter your exception handling code here -----
) u2 Z" j( I9 X            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
- C, z* ?" C" [) V% Q$ J        }/ ~4 \8 N7 }+ _. G; u0 ~
        return 0;- w6 }$ A$ U; a) v& B$ Z7 n$ Z5 y* D5 f
    }5 R4 _! R  I, U4 t! ]
    * D5 W- g( I  ]7 M
#if CALLBACK: g1 h6 d. C8 Z" r  R8 U. }2 A
2 w% f, ]3 ]/ F
    void Shrinkage::Show_Shrinkage()( \/ N) R; {( t. h! B/ |
    {
7 {$ d5 c" u( v$ H        try
0 S' @! H' c5 x2 z9 D        {
9 Q/ C9 c( x/ ^3 Z* S            theShrinkage = new Shrinkage();
3 a: E1 B. P8 f0 ?* ]
" C7 M! {% A- Q0 k$ c& ?. I; f            theShrinkage->Show();
: J4 W9 f9 }- q        }
& y6 `: h# i! k4 w        catch(exception& ex)$ C. X: p. S0 Q8 q+ g4 x7 W- a7 A
        {: K6 @) T! r6 Z
# f- t, G; c8 o9 S0 `
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
- |( g  ?' w7 k5 l        }8 j, D( O( X7 j- _! o6 n
        delete theShrinkage;6 \+ B: k' ]/ c. Q6 A. ~7 }
    }' ]& L) O; h9 p! U' J( Q; ]
#endif//CALLBACK4 _% \  p8 l6 o& }3 g' Q
    % y" z! E3 S& [7 b+ A# g5 p; }9 `
    void Shrinkage::initialize_cb()
, }4 M4 b! e' R# F    {3 h6 b$ m. M  y' q$ i$ p2 K- h( [
        try
$ I/ n; j1 k7 e* }% a# {3 Y        {
: B, ]5 F3 g3 C' {% A            group0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("group0"));* [0 L1 v- s& T3 L4 R
            face_select0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("face_select0"));2 e4 L- ^8 Y7 c. V
            face_select01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("face_select01"));: W9 @+ C+ r# Z
            group01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("group01"));
0 `$ A4 O6 s( V3 \            bodySelect0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("bodySelect0"));! {1 ^: i+ ~' h4 |4 N
            bodySelect01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("bodySelect01"));
9 u* G1 C& c  n$ n3 K            group = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("group"));
7 k  H0 x3 _) A( L, {9 a/ d( I" d            string0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("string0"));
' b# o+ ~, {9 P6 Z( n8 V            label0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("label0"));
7 _) W) @+ g7 D: Z7 E6 w5 K            string01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("string01"));/ N- S5 A% Q& _
            label01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("label01"));6 L9 q+ A9 `' O* T( h" r
            label02 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("label02"));: ?5 e. e  g' v# a% a
        }" U- p- g1 D. e. E: K2 N6 k
        catch(exception& ex)0 S5 Y( ], R6 I) z4 ~
        {9 V; ]3 p3 C" a3 u, X" I+ q& X7 d6 E
           ! [/ m: Y0 v% x
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());0 d% y& o9 {- H$ i3 s( q  h
        }
7 M# V! t- J9 Q, C    }
/ Y, V0 U2 g9 m1 e- m. \$ L% M    //------------------------------------------------------------------------------
7 g; j. I8 F$ N1 Z( y    void Shrinkage::dialogShown_cb()' {2 h2 I) X" q- {- B) e
    {
+ E: q8 Z6 g+ l0 Q        try+ R  C* k; m6 B3 B3 v4 V( d5 E! l
        {4 n" b; l+ }0 O
            //---- Enter your callback code here -----! f6 I3 Y, f+ Z0 `' K0 d% c, E+ N
        }: Y8 X# q3 k7 z2 u! b: n+ s3 Y
        catch(exception& ex)
- x. ]  y5 i$ m$ g1 t4 y; ?& S( S        {
, s5 U1 {6 {( O( x  D& T! }9 \8 R! _& I% [! t: Q
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
* I4 C, m  ~; A% l* ^. }        }
0 e. J, m, u( v4 j& p& F" T    }
  E6 _  i: p2 Z. ^: q  Z! z   
% B  S3 y# `, O$ D; y" o% t! K    int Shrinkage::apply_cb()
- _7 t3 W% }% K/ f8 n: V5 U0 w    {
& r: @( s" a# x        int errorCode = 0;
& k  c, r8 L' |7 Q/ ^( c9 x7 Q        try
, Q/ T, w+ |6 c+ ^        {- C7 K4 a% x- W& O; O
            //---- Enter your callback code here -----
2 {5 a, P. x% T2 e' ~2 p        }/ A# ?2 w" c) c; ~# Y$ E$ @$ L
        catch(exception& ex)
' ^; d( Q0 |% K( V( k5 ~7 ~3 f+ S        {5 a3 _& r2 ~9 I- \
            //---- Enter your exception handling code here -----! l( |* y; A. _9 {+ ~
            errorCode = 1;: Y  z, r/ d5 l$ f: E4 Z+ ~
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
) S: s( j  l( t$ v+ Q        }" ~) M( ]/ K/ O" E4 ]7 H5 g
        return errorCode;% O  L; ^& ^% B$ e( S6 R
    }0 e# x/ M8 @+ h1 _8 l1 d+ ^: k# c

! C4 y* V" i0 E. v& f. H    int Shrinkage::update_cb(NXOpen::BlockStyler::UIBlock* block)) o9 {% u$ x: D8 w
    {
, s+ m: A& |: M$ }7 K' U        try
: |4 d; W' H9 `  V        {
- z- K1 `0 L7 Y! e; ^            if(block == face_select0)
- K0 \& a  t. J0 Z- ^6 Z# E: k6 [            {; z& r; i8 X3 s2 U, N: X" L
            //---------Enter your code here-----------
" S0 z" }1 L- q7 R7 y  R            }2 `$ g8 N7 @; E2 D& p# v
            else if(block == face_select01): ~5 G( ~* b# I' I& H7 o3 T
            {  W4 x  }! A: ]0 \4 q  j* E1 M7 N# B- o/ s
            //---------Enter your code here-----------, F$ b0 v+ U$ G2 c/ l+ X9 q
            }5 s" z8 Y1 _) n+ {8 Y; z, U
            else if(block == bodySelect0)
7 t0 k) l- B7 S4 Z5 F- w0 Y            {
* S8 V1 u. p" _* C            //---------Enter your code here-----------
- D3 f4 u: U8 d3 I1 z* u. @# o! {            }
0 q* [8 f5 B4 f" j, K& C            else if(block == bodySelect01)
( r# b) B, }3 `" p- ]            {
/ A5 p" c$ ]5 W, V            //---------Enter your code here-----------$ S* R9 d  t& T3 p0 r4 p5 [
            }0 \) s8 p6 ]8 _, U
            else if(block == string0)' z+ r) M/ E5 t5 D& @, Y
            {( U  R  i7 b6 b* H) r: s  J+ x
            //---------Enter your code here-----------
! V/ U) w+ }6 Y            }
' U; S7 L/ Q$ y; D            else if(block == label0)
; y$ G9 h: {1 b9 G- c- d            {
% m4 D; p# s: c! w+ u            //---------Enter your code here-----------0 A: I7 P; D; E) k  |/ A) A& e% V
            }
$ {% Y. ]3 e5 f+ K7 ^% a            else if(block == string01)
5 S* S, I7 C0 H' T: ~- S            {" v7 X- r) I& z" M& ~* U
            //---------Enter your code here-----------& V9 Y1 O( w! V6 d: _$ ~
            }- a/ r. U# }/ t. v0 |6 I
            else if(block == label01)- |" i" r0 @2 n: ~* X
            {' T! v, T2 Q0 J% F9 Q  j( h5 O
            //---------Enter your code here-----------
# V) B; o) {' E  L7 c            }# l3 |/ M9 F$ Z0 A4 g% }6 P  g" P
            else if(block == label02)3 V$ J% e% ~( q, j7 ~3 I( W3 D
            {% o# G) u% q, [7 M6 f, c
            //---------Enter your code here-----------
& g* R2 x' X* w* h' j: ^            }% J* T" f. f" @$ s$ b1 Y
        }0 J1 x2 [$ y! k4 K( d( l. I- u
        catch(exception& ex)! a3 B  f- j, c' f0 c
        {9 Z( I0 }: B. K) W, o$ Y4 q) @3 u& ~
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());' }# o  S+ |  D( h" g+ y2 Y
        }
7 U3 N2 s6 B9 j% @/ y" B        return 0;
, T: m9 o' |$ E    }, z; w; Y8 \% }+ t, U( A. D0 q
    * A9 j. e: `( o, |% |
    int Shrinkage:k_cb()
1 Z; r, D8 ~+ ^" M( b5 N4 ^  I    {
1 u7 R0 H$ S2 T, y4 x9 Q        int errorCode = 0;
; P# E# Q! ]- Z* t        try
7 a* q: b* B/ l        {; I0 S8 A. m. W
            errorCode = apply_cb();
5 [+ h; k# k! c* E  }2 l7 f        }
5 b' g- E: I( ^7 ]% b" ?        catch(exception& ex)7 @; ]/ I1 G5 r
        {* B3 W  H/ h. {7 u7 ^. F
            //---- Enter your exception handling code here -----" C% M2 e+ S4 S; \- N
            errorCode = 1;& i% N" s% Q3 ^; ~* ?
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
' M8 w( t+ |0 Y% Y' c        }
" X* Q* o" L, J$ @/ |0 w        return errorCode;5 F' R4 T4 T* e; k9 z6 N
    }
7 n. y- O) P* z* w  v8 j   
2 Y# o  W/ Y# {& @' J& Z8 Z    //------------------------------------------------------------------------------
0 A5 u& k3 z) y8 m    //Callback Name: filter_cb
- ~! r# P, D3 E    //------------------------------------------------------------------------------" i+ Y1 s& r- j- G
    int Shrinkage::filter_cb(NXOpen::BlockStyler::UIBlock*  block, NXOpen::TaggedObject* selectObject)
# R1 c. M+ E9 o: I( S6 r    {
7 J' M( W! {8 m7 Q6 r+ j- P$ T        return(UF_UI_SEL_ACCEPT);. z" Q# g5 @. c+ ]7 p5 n+ ~
    }+ k3 Y3 H- W7 L$ X) ]
    * z! A' e9 H: V! [
    //------------------------------------------------------------------------------
# z5 x2 f% I. l! N! N3 v    void Shrinkage::focusNotify_cb(NXOpen::BlockStyler::UIBlock* block, bool focus)
) Z/ @. x6 n- \' h) e7 ?8 a    {
) X; L# Z, a  K! w        try
( T2 w$ ^( ]4 O2 b        {
; [; J* P' ?  c; z, H" z7 Z/ |            //---- Enter your callback code here -----4 }5 ]6 W: t; p: T5 {: B1 S
        }  A* R& s' X9 h& `3 u" D8 Q
        catch(exception& ex)5 h' W* D. {5 x7 H
        {* {* Y, E# b" T0 A6 @& }" N
            //---- Enter your exception handling code here -----
9 P$ j, w2 H: g$ b            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
8 v+ W/ I6 G- H( G/ l  }1 P        }& H$ U, B' A- Q% y2 s: W4 A+ G
    }
+ f% O, D0 A8 a: T. p7 J" u    4 K- i  D  b8 V/ U0 ]
    //------------------------------------------------------------------------------
$ ?' a2 M# Y# h% \$ e6 L* p: \    void Shrinkage::keyboardFocusNotify_cb(NXOpen::BlockStyler::UIBlock* block, bool focus)% Y$ i2 W1 I7 W3 x
    {8 c4 M& G) G) ]! w' s1 s" p
        try
9 O- z2 W' ?  n% ]& o! `        {
4 o: ~4 Q0 u0 G1 V" [  [            //---- Enter your callback code here -----
1 N. t2 q2 o0 Z) n8 R9 M        }  G( P3 B0 s1 E1 Q
        catch(exception& ex)  v% X% R* P- T$ P# o9 O
        {& H/ G' B% l* e- O; W
5 Q+ p9 V: w; l, I! l' |
            Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());" }2 c; D, E3 V% m! L: R% g
        }
+ U1 o9 H. Q% o. ?  t" O    }
/ O7 [% |8 f. j9 [' t5 [* U+ X
1 V7 t' l' _1 q8 N* A' Q' z# W7 R* E* p
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二次开发专题模块培训报名开始啦

    我知道了