|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 lzhyi 于 2017-2-14 11:32 编辑
2 k6 H/ D& y- j. b/ K4 W/ \4 g; s
请问出现如下问题,是什么原因:库缺少需要的入口点,功能名:ufusr
+ R# S1 v& a( d2 M. {* l代码如下:4 F6 @- G5 U* z5 F3 u1 A
#include "Shrinkage.hpp"
7 K: t9 a5 K% T: @2 I2 ]' Busing namespace NXOpen;7 j- j z5 a2 ~( Q9 P4 e# `+ `8 c6 E
using namespace NXOpen::BlockStyler;
; H% K$ ` n' r9 F" R2 s5 x
+ v6 U# [, j( K+ W0 G, f9 OSession *(Shrinkage::theSession) = NULL;
% t+ e% l7 D# N( M! L% X3 kUI *(Shrinkage::theUI) = NULL;5 f% g9 R. l) p% Y ~& y' I* m
9 H/ K o" K3 ~; YShrinkage *theShrinkage;
' L2 _" e) Z. x6 |3 J1 a* m# [" ]. Y1 f: u, V. Q
Shrinkage::Shrinkage(), C0 V1 I6 C4 w, ~( I" C. Y
{$ O, s- K) l0 x3 J
try* x% c, w3 a0 e" D
{: k8 j0 W% p+ z+ X N2 Q
// Initialize the NX Open C++ API environment
) I ~) t5 u1 e Shrinkage::theSession = NXOpen::Session::GetSession();
" l+ @% p9 _- ^ `* j Shrinkage::theUI = UI::GetUI();$ ?, C3 [9 }% x
theDialogName = "Shrinkage.dlx";& m1 s0 Q0 {8 I) H* Y' e
theDialog = Shrinkage::theUI->CreateDialog(theDialogName.c_str());" I& T1 ~3 G: E3 M7 r3 [+ G
// Registration of callback functions- q" P6 F% I3 W) ~
theDialog->AddApplyHandler(make_callback(this, &Shrinkage::apply_cb));7 @+ e' }8 f e
theDialog->AddOkHandler(make_callback(this, &Shrinkage: k_cb));1 S3 f; H/ x) ^. G" U8 ~
theDialog->AddUpdateHandler(make_callback(this, &Shrinkage::update_cb));. q5 R# w. m7 K9 N" V3 r! c
theDialog->AddFilterHandler(make_callback(this, &Shrinkage::filter_cb));2 g8 V* P4 Z" w; U3 {. Z
theDialog->AddInitializeHandler(make_callback(this, &Shrinkage::initialize_cb));* p4 P Y! J' _! G+ g4 \& j
theDialog->AddFocusNotifyHandler(make_callback(this, &Shrinkage::focusNotify_cb));# l# f; L( ]- F, d( R
theDialog->AddKeyboardFocusNotifyHandler(make_callback(this, &Shrinkage::keyboardFocusNotify_cb));% Y$ u3 j6 l8 t8 z* p6 @
theDialog->AddDialogShownHandler(make_callback(this, &Shrinkage::dialogShown_cb));
, l' ~% R( [, |- M }. A; `' b" a& _6 s( C) t
caTCh(exception& ex)
# F$ H; q. n0 D7 X {
5 Y4 w6 ~! D6 I6 U c! K& Z9 D) l. o d! Z
throw;
; Q, {2 G. r: Z: A; s' l* v+ G0 U }5 ]9 f+ s6 e. U
}' B9 C, A4 h0 I. Y
$ T/ p- a6 E+ w
Shrinkage::~Shrinkage()
; b0 q6 r7 {# H- X+ i{
' q; E3 c- N0 J7 P+ j, N if (theDialog != NULL)5 D& m1 g& Q' G X5 Z
{
( J1 k* m9 x/ |# X4 t6 f delete theDialog;' E% g& ?" T' h7 O: w
theDialog = NULL;
7 g2 ~: k* d- t! }8 \) g- f }" {( M. \3 m. o, a. I6 t4 E& L3 q
}
3 W8 X& b' j" ]1 v" O- C \5 Z3 s z1 N0 N9 F
#if USER_EXIT_OR_MENU
) O4 B" ^& O$ M* f extern "C" DllExport void ufusr(char *param, int *retcod, int param_len)
( }! H6 o, T o% B" \ {; u6 t# M' `, P! R3 c2 |- p' I
try
5 y7 A$ t7 C0 U# j1 o+ U {
; z, s U: y/ A: d) R theShrinkage = new Shrinkage();) S, W* Y& Z7 i3 e' Q. N5 O
// The following method shows the dialog immediately
! L& W2 Z5 |- C h, p2 E theShrinkage->Show();* j; \- u8 G+ M, u5 b. C
}) \1 S; ?5 m/ G# i: F' R0 M
catch(exception& ex)
$ A+ Q. p3 n# P* R {
' f4 _2 c9 U, x! n //---- Enter your exception handling code here -----
5 M, S- T" M; C) F4 q( W2 Q Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox: ialogTypeError, ex.what());
5 V/ Q6 W( G' h2 I }
& Z. R. c% v- h3 S/ j delete theShrinkage;
1 M( E |- f" E6 ^% Y) i }
% `3 X1 |2 f8 d/ q#endif//USER_EXIT_OR_MENU
/ Q& a: ~+ M P#if USER_EXIT; W, T' [. L, F6 \4 E! M
- y1 Q, _5 M, B& H, I //------------------------------------------------------------------------------1 C7 w5 U& q2 @
( B5 j% h Y0 `% p+ n3 \ // MUST NOT use this option since it will UNLOAD your NX Open application image
! J o# [8 F3 r, Y6 K! C // from the menubar.
+ S; W+ A: Q. m/ x4 |9 z b6 ] //------------------------------------------------------------------------------
% m* B6 U m0 ~( S" b3 b# b extern "C" DllExport int ufusr_ask_unload()
/ u; F; O4 V L; S8 {/ ~, u9 @ {
2 K( R: x9 F' O //return (int)Session: ibraryUnloadOptionExplicitly;
: ~+ d+ ]) S6 K; Z3 b- E return (int)Session: ibraryUnloadOptionImmediately;
; t, B9 m+ L$ G. R* P //return (int)Session: ibraryUnloadOptionAtTermination;
6 r d) P* _+ ^7 p1 D" M/ k3 g! a }8 O3 W' R) B5 E$ a- j, [
& d: \3 y1 J. q2 m/ e
//------------------------------------------------------------------------------
* N, ~- |% G1 [, z& e // This method is automatically called by NX.0 w9 W" V% _' X$ s1 L
//------------------------------------------------------------------------------' ?0 ^! U# J- S4 d5 E D" d& d
extern "C" DllExport void ufusr_cleanup(void)
' }) a2 D I" ?- P { v& L5 \0 n% ]+ W5 J* J) e
try
& G; V$ ~2 K8 ~+ m- p, p {0 b2 y' _/ j5 E) a
//---- Enter your callback code here -----' Q" G& H! ?6 ?
}+ ]; O) ?. e1 h# l& c9 i4 h
catch(exception& ex)) ]/ q% k& x( P/ o' }- V. H" w
{7 }8 ~/ D$ O. ]* j: l
//---- Enter your exception handling code here -----
) g+ X, u0 v) Z( N2 @5 C/ F Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox: ialogTypeError, ex.what());
+ w2 _- {& Z& n5 l, Z }
. S# |9 @1 U' k3 i8 _) h2 o! n }8 w- W4 W, F' G$ ?# D
#endif//USER_EXIT" S: _4 k& z _1 g, z
4 E- R9 D# Y; j8 x+ @) I
int Shrinkage::Show()
" i, Q# f. A. [' G {! B1 L! T4 u* f0 z* x3 _
try+ p) j- H+ N- b( B
{- N9 ~0 D3 {# n) {+ g M! H$ E
theDialog->Show();5 h4 t" Z0 K5 ?, P4 j
}( |! k2 H# M0 Z% {
catch(exception& ex)2 _9 Y; F4 j" L3 o1 `" k4 j
{
) i( k4 v6 _1 W6 E3 w+ g //---- Enter your exception handling code here -----
/ H0 s( \, t* `5 h Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox: ialogTypeError, ex.what());2 O# ? T+ g7 R' Y( w' t/ R
}
9 K+ F0 F) s: Q/ _; v5 f) } return 0;
$ Y! b7 F/ K4 D; I, c9 V0 P3 L) l2 o }
, E( `. f. n. Q5 K% X; | - m( K& L( \, p, S* |6 B
#if CALLBACK
/ | t; R, p& Z
( D) L2 f* R( t% d void Shrinkage::Show_Shrinkage(), L2 W/ t. U9 F( ]1 g" G
{
0 m2 _/ @ X! Q" n try
! A0 y5 W" u1 ?7 q6 R9 V: j. b0 r {4 y) @! ~/ v$ ]/ d$ |$ ^
theShrinkage = new Shrinkage();
; o0 ~& `, w& d. n) n* B F1 R3 C# N1 ~1 z$ g& z
theShrinkage->Show();# U2 Q& i4 Q8 M+ u
}3 h: U6 E, U, u7 I p5 _
catch(exception& ex)
" e2 W2 E2 H; I2 ?- f {
7 n* x i3 T3 N% k3 ?" X {
6 y) D& a N5 V a1 v! j* ]! {1 W. P Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox: ialogTypeError, ex.what());
3 ~ E4 C/ |: M" n }
9 G. C! G1 p5 C4 l* a delete theShrinkage;* y' C( a! k6 N0 C& I' w' y
}( t5 S2 ^2 R" i: k7 d2 V
#endif//CALLBACK
! [- R- [1 O' h / @0 K! m' j G: p/ S0 R
void Shrinkage::initialize_cb()! b3 O n2 C+ k1 H
{: ?8 T* t) p. w7 z- h) N* {. O! N8 a
try
% l6 m' S, R0 L5 |% U/ q {
5 N5 O9 }. r+ c. [: ~% x7 |) x group0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("group0"));# {' n+ o. w* ]0 s6 v
face_select0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("face_select0"));
. U3 ^! h" e' w- f" g face_select01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("face_select01"));
4 v* Z: i3 @# ^- Y% r: p group01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("group01"));
N& G- i+ l$ q# F' j bodySelect0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("bodySelect0"));
2 A& c, I: f$ z3 f ?. y" W bodySelect01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("bodySelect01"));) o8 P$ R- {- W" T9 ^
group = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("group"));
8 m: S5 w; h9 v3 P/ L" E9 \ string0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("string0"));; b- |9 R( S) ]8 x
label0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("label0"));
" p* W5 p5 ?5 ]" o& S1 e string01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("string01"));
" P+ c/ i1 V8 D6 Q; e label01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("label01"));+ v0 U. c4 z. @- S7 y
label02 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("label02"));
9 Z4 Y& ]' w; n! b2 ]; l% | }$ S. L8 v2 p1 p
catch(exception& ex)
+ Y1 C( ~. D7 f" l1 r {7 l5 g( ]$ @% m8 A* R
! p0 n1 @; ~ \* j" u
Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox: ialogTypeError, ex.what());6 |/ N0 x, P9 w' S6 ~" u0 p
} Z$ V. }3 W& Q" l% d7 J \
}! x1 g1 A: u3 ~
//------------------------------------------------------------------------------
, Y6 Q; _0 m7 b) _+ w) o9 I& ~ void Shrinkage::dialogShown_cb()/ s7 a, I9 J( s9 H7 y
{8 t2 v, L" b3 e; I
try
- B. p6 B2 H6 N4 V3 r- v' r {3 ^3 E9 R2 \# v2 ?
//---- Enter your callback code here ------ }! t& j1 q; q9 h: h
}6 v7 D- o1 t+ {1 e
catch(exception& ex)
2 E }5 U; ]. ^, V9 _ {
2 N$ n( M/ B) E0 u+ z. t5 O
& B/ n. w% U6 i Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox: ialogTypeError, ex.what());
$ c# G2 S; R! }1 G/ @9 N6 Y }& z% ~+ t6 ]* E- H a/ {! }
}( i, ~( V8 C t! D5 w7 o
3 r( g+ n9 ?) d6 W, A1 ]
int Shrinkage::apply_cb()
3 T% {* ]7 d( ?& x" s7 a6 n; y8 | {
4 j# U, J/ t$ m1 y' P int errorCode = 0;
' Q) m( P; [. a1 `' D$ p& {% C# |1 x try1 P$ h8 c3 {5 d; V
{4 }! K t$ z0 P, t
//---- Enter your callback code here -----4 r) h) @2 H- P7 i B
}7 q" x. @, Z7 m( h4 q8 ^' \, Z
catch(exception& ex)
p4 l, o% B! E: j6 s {& M) p. p* u% ?/ U. H
//---- Enter your exception handling code here -----9 S3 r1 R4 B3 S5 W6 D9 H
errorCode = 1;
- y" h' R5 W8 t Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox: ialogTypeError, ex.what());
7 z5 L) I4 K2 |, Y5 T+ @) \ }9 R$ }6 N$ r6 M
return errorCode;1 |1 g' j; [6 c/ a& ^# r' @2 S3 v6 S
}* o" D9 G% j- \& J5 u
* o% P3 o$ l0 J2 j/ j int Shrinkage::update_cb(NXOpen::BlockStyler::UIBlock* block). w8 J9 v+ }5 d
{* K3 e% b8 L1 B9 j) F
try. Y' A# ?0 h n5 m/ S' O
{
5 O3 c( A$ m( v* ~ z& R if(block == face_select0)- r0 N' x6 n- X% S/ n7 U
{3 ^2 }. U5 z3 a( c& x$ v1 i
//---------Enter your code here-----------
$ m: M1 r. N9 q; ^. ^+ K r }
' s% ^. {. _7 G else if(block == face_select01)) U3 b2 N( p: [ X! W; Q
{
3 v! {5 U+ l% d: ]9 F //---------Enter your code here-----------
+ P/ ^4 q. `' t3 }4 j8 u# X" Y }: K( W4 @' M: p; ~+ ^
else if(block == bodySelect0)
8 C6 ]5 g. a. I: D {
( {6 }- b, ~/ `9 {* g //---------Enter your code here-----------, H1 q. J& O- E5 C
}" G8 J) N& Z7 b5 J
else if(block == bodySelect01)8 x; s' V7 k. Q5 A
{* N% n: S2 m) j/ \
//---------Enter your code here-----------
# w$ U/ U% q1 _/ I) e* @ }
% w$ C2 M: g0 ]" L( K1 J J else if(block == string0)
1 r! j6 f% U9 P4 x- } K {
! U. R3 Y/ u- a7 A3 ?# e. B; R //---------Enter your code here-----------
3 l1 L; n# H& c8 p: ]! b' ~ }) B' ~ N' ]+ D2 t) A+ i( L- _
else if(block == label0)
8 m8 Y* S. ?& @1 e' A0 `& i* } {
. W, T+ F& l5 c. ^& K( n `: ~# O4 ^ //---------Enter your code here-----------
8 p. z Y Z5 u- ^& u }: H. b* A( X$ T1 ^8 s. E
else if(block == string01) {- H# W, r: @
{
$ E" m. N$ m# A- z3 W; @* ~1 W //---------Enter your code here-----------
- {1 |7 }$ Z* s$ \) {% x# M }& c. a2 }! k* Y: K5 y! S9 h( m
else if(block == label01)
) X( l |5 b4 [0 p" y {$ y [$ J8 t( S) J$ O
//---------Enter your code here-----------/ H# R# [& w# c4 R( T% N/ P- G
}1 t* _! w& R1 M+ h
else if(block == label02): S. L2 z2 m. k+ g" }2 Z
{4 M3 C( `1 ]8 c) X
//---------Enter your code here-----------
1 U+ _. a6 Z" X5 Q1 Q }" S' H$ n4 C2 h' U6 J$ h( G- G( @4 I
}( {; }1 A) v1 ]% I# d
catch(exception& ex)0 V" ]5 B7 D+ E0 V& ^% m
{* i. J' k8 {+ N- T* j. {& p8 I
Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox: ialogTypeError, ex.what());- Q$ N: x( `( ^& i
}
( K7 |" M0 N" p- [2 ] return 0;+ t, d/ l; i! f, o: d+ |
}
8 w5 f ^6 q/ B* ?/ w 5 @' l% X0 k6 y9 f( D1 L+ `. n
int Shrinkage: k_cb()* K1 y3 x; w' p; F
{
4 \- W7 [3 W/ i* u: [& j int errorCode = 0;1 N( v& ?- [2 P/ h, {/ o
try
: h A |; ^+ i1 m0 ?) [' j {5 v/ `0 ~! M7 U5 o8 p1 R
errorCode = apply_cb();
j7 @7 Q2 R! f* E! r2 }2 c5 w9 n }
* d6 \/ G6 H2 d catch(exception& ex)( e. l" l9 o) s7 T( Q+ L* i
{: K6 w; v8 v: _3 D7 t
//---- Enter your exception handling code here -----
5 m* ?- T4 A$ p0 Z errorCode = 1;
5 J+ C+ j1 g% n: A% E# ` Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox: ialogTypeError, ex.what());9 Y# r3 A8 W+ r& H# d7 H" c
}1 [# T! L1 l& R3 C
return errorCode;
* J$ o' q# k) p' e }
) A W# j& P0 F9 u* {3 I
* n$ O9 g* c7 s. c //------------------------------------------------------------------------------9 G+ E+ K: V" v+ X _# ~& n9 Y8 I& n7 }
//Callback Name: filter_cb
) s6 B0 z2 x% g% B$ S. |8 f0 n //------------------------------------------------------------------------------
/ }0 D' D' J$ G& F: W7 D6 Y4 [ int Shrinkage::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)
' H0 e- y, W! r* w. H' x$ X. T {/ Y" H6 U" }: J/ m' ?7 W5 y" z
return(UF_UI_SEL_ACCEPT);
1 u. a9 |1 @6 c0 z& j8 V4 F }
/ O ^! \# H4 F8 g8 Y# r2 I* L' l5 ^2 M & T, B* Y* B2 {) x
//------------------------------------------------------------------------------" \8 }1 k, }+ [" l7 q
void Shrinkage::focusNotify_cb(NXOpen::BlockStyler::UIBlock* block, bool focus)
W0 { J* `& s& L) L {9 o, X% D8 A# g }
try
+ p% o( P3 r# o' ? {
9 W2 O5 i/ H" `/ E3 A //---- Enter your callback code here -----
. [# z4 x& ?4 Y; p. w& Y }! P/ ~. C3 ^! @! Z7 c
catch(exception& ex)" O y# L7 h7 f6 X
{- _" w3 l8 {$ ?& I6 Z2 N1 [, D
//---- Enter your exception handling code here -----
% Z7 \/ K. h0 ^8 Q# E Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox: ialogTypeError, ex.what());
7 T8 t' T6 l. ~3 z9 k! V }
2 l/ ?; e/ c& M# T+ {0 Y+ P, o# S }; H, A2 V" H$ _: x2 G/ N" U
V4 X- d% y: B* Q //------------------------------------------------------------------------------ i6 ~7 H7 t3 |6 L V* V
void Shrinkage::keyboardFocusNotify_cb(NXOpen::BlockStyler::UIBlock* block, bool focus)
) J2 T4 }$ c+ M; Y5 v3 x {
- a5 B2 R* k7 |! \ try
. \0 x9 M5 c0 k' C: i, Y {$ b' d! Q0 j3 V1 j8 Q! Y9 l
//---- Enter your callback code here -----
6 T/ v- G0 C P: T }
( I& d0 U2 J. b catch(exception& ex)
, ]/ ]! l: z7 {# m3 S$ B+ u8 p: n {/ `& o9 |- ]/ G. w) J# X& h' Z
; [0 B6 w0 Y% y2 j7 N
Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
3 F& }; p% x, O" S& z) E+ p! P( Q" q1 G }
# ~; T& l: |0 P& `( H+ ^ }
6 A3 w. }# u8 x7 Z: b# l7 Y+ h
[+ Z' j! b' ]2 _1 u
2 a- W. v g, p: C/ r |
|