|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 lzhyi 于 2017-2-14 11:32 编辑 % ?: y: W7 }( z! j
0 ]1 M% t5 p: N
请问出现如下问题,是什么原因:库缺少需要的入口点,功能名:ufusr
2 u; u4 `' a+ Y& K: @; J代码如下:
; s0 f0 n* x( t2 T6 y: ^#include "Shrinkage.hpp"# Z+ f0 Y" }, ]
using namespace NXOpen;; f4 i, x' }. i! m7 t2 N
using namespace NXOpen::BlockStyler;! G& c! h [- p/ Y( _
7 V. V3 c5 F+ a4 y# e
Session *(Shrinkage::theSession) = NULL;
5 A+ W/ q' k* V, a( Z4 eUI *(Shrinkage::theUI) = NULL;
) p% d$ h$ W- m+ W9 F2 [
1 C4 e3 o0 o1 O. @6 h! L* D% {Shrinkage *theShrinkage;
: T1 d1 S, \: w) n) U
$ v* i$ S% ]; m7 FShrinkage::Shrinkage()# f' x y7 T4 N f
{% `/ B/ V2 _+ ^
try
k) S( N$ U. p" `9 }$ ]. s {
9 N1 x) A% M5 M8 @9 H: I6 m8 Y // Initialize the NX Open C++ API environment& g+ E* C& X" G! |, I* n# l+ U. v
Shrinkage::theSession = NXOpen::Session::GetSession();
9 B, V- R& j# @8 l y Shrinkage::theUI = UI::GetUI();
+ w4 ^( l' J/ G) \* @0 \ theDialogName = "Shrinkage.dlx";" H/ `6 z$ m& s6 H
theDialog = Shrinkage::theUI->CreateDialog(theDialogName.c_str());' R5 L8 W+ ]% o9 `+ C3 x9 G" k3 M
// Registration of callback functions {; [ n' i, c9 p. y% x
theDialog->AddApplyHandler(make_callback(this, &Shrinkage::apply_cb));' g. J/ Z: n0 C- ^
theDialog->AddOkHandler(make_callback(this, &Shrinkage: k_cb));) C1 G" N; W/ a
theDialog->AddUpdateHandler(make_callback(this, &Shrinkage::update_cb));
# X1 ~5 h$ {0 j; O% u theDialog->AddFilterHandler(make_callback(this, &Shrinkage::filter_cb));$ b" C+ u6 W0 X6 Q1 H
theDialog->AddInitializeHandler(make_callback(this, &Shrinkage::initialize_cb));8 `$ z( ]* v) }& L/ a
theDialog->AddFocusNotifyHandler(make_callback(this, &Shrinkage::focusNotify_cb));* K( s" H9 \$ T6 ^& ]1 v& q% t
theDialog->AddKeyboardFocusNotifyHandler(make_callback(this, &Shrinkage::keyboardFocusNotify_cb));+ q9 M& c0 d5 T1 J2 j6 g- U; ]
theDialog->AddDialogShownHandler(make_callback(this, &Shrinkage::dialogShown_cb));
% W: Z6 e* B, X' M- E g }
, B" R& E Q" ` caTCh(exception& ex)! u9 @8 X1 o, s! t6 m8 J
{( ^( X$ `7 p }8 G" m9 j
5 I1 p* N* u. G4 v2 H
throw;
; N: v) g9 n5 r& m- d }9 i/ m; R1 ]; h. z
}
' }/ g3 w" B+ S9 B; J; a/ C/ v. ]
# K5 a, Z& ^5 L0 ~: ?- ~4 mShrinkage::~Shrinkage()# K1 Y1 s6 M. {6 n. ]
{" }, H, b5 L. D
if (theDialog != NULL)
S; ~7 N. H9 X0 y# E- m( V7 k9 _ {% x3 k$ [" M; L; u% y
delete theDialog;
9 z. r1 h+ N, T& @) C theDialog = NULL;$ x1 @% R o* ~; h
}% Y3 K4 d K+ @0 n$ b- `' H
} }/ a; m" d# C0 b8 z9 K
; O J" p% K% p6 W' C8 j8 O8 R#if USER_EXIT_OR_MENU
* o% X% Z, @; o$ m8 [ extern "C" DllExport void ufusr(char *param, int *retcod, int param_len)! H9 ?- T0 S8 p1 t8 d+ X3 b' M
{
. p4 I: U; j0 j( v8 S! O6 M6 o try! [/ {7 ]- v1 d- x
{4 W, ?; i( ~! R' K ^( p
theShrinkage = new Shrinkage();/ l$ [9 b1 t+ F6 t7 B: E
// The following method shows the dialog immediately
1 y; t- y" Y3 c/ A. U: y theShrinkage->Show();0 c" a( [& O: A$ y$ h% X
}
; X9 B) p2 @! P, \ catch(exception& ex)
2 s8 P" J) r. @" Z9 d, b9 O {% g9 `) d, t% }9 Y4 G
//---- Enter your exception handling code here -----
% J" L$ _. `- [ Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox: ialogTypeError, ex.what());2 Z4 Y6 C9 y3 u L6 n6 X
}
& N8 X& u0 Z# W! L2 J. F7 l) d% l delete theShrinkage;& j m/ O8 W1 I$ o6 H S& h* B
}
, M/ ?4 Q# F Y#endif//USER_EXIT_OR_MENU
" X& Q# G* _1 ^- a p( a#if USER_EXIT
& d7 b& A0 p) H0 P4 B. `: R7 Y / U0 [5 W& \9 l
//------------------------------------------------------------------------------+ }6 e+ j: L8 I( A3 { N
- W; P9 o% L: y' _# |/ k // MUST NOT use this option since it will UNLOAD your NX Open application image2 [0 V6 B( |! g% T7 A* P8 s
// from the menubar.+ k t/ a, ] M+ N" J
//------------------------------------------------------------------------------& f1 l. j; u( [, ^
extern "C" DllExport int ufusr_ask_unload()$ T/ b. F9 }2 e
{2 T/ ^2 L" ?9 p1 L# w3 U: v& y
//return (int)Session: ibraryUnloadOptionExplicitly;
7 f8 N+ N: q4 j$ R return (int)Session: ibraryUnloadOptionImmediately;
" V' R6 b/ F7 r //return (int)Session: ibraryUnloadOptionAtTermination;
' k- ]8 {% |" O2 M3 R& s }+ K7 q9 j5 y0 I, t9 o. X9 [
- }" p d l; { //------------------------------------------------------------------------------5 F5 d6 |, s) k! Q
// This method is automatically called by NX.
8 I- o" J A; S& Q //------------------------------------------------------------------------------( n$ H! q0 t5 z, {9 w7 n
extern "C" DllExport void ufusr_cleanup(void): \; A( F9 L. u+ K7 } W
{1 \& s7 s0 A* f2 n7 u; @3 r
try* v( a1 u7 S n# O( w
{ @+ t( ]9 z7 u4 e
//---- Enter your callback code here -----( K w3 O% `4 D ^8 k/ e+ G
}) n7 ? d( \6 N# C+ ~* ]3 Z+ A
catch(exception& ex)% n4 N/ R( T% W9 x& M1 a
{3 c; O( f! N7 m s D" Z
//---- Enter your exception handling code here -----7 b) ?2 d, X: f9 j
Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox: ialogTypeError, ex.what());
4 r4 \. x1 u7 ?$ _! [, q }% ]$ Y9 \* a8 j4 T& V* s
}# [) _& P5 A! w9 X
#endif//USER_EXIT
, b3 B3 o9 l# }. U/ ] + N$ M7 T7 r! K/ Z$ @) ]
int Shrinkage::Show()
: d$ _& L5 I/ m0 U; Q {+ U5 j: R2 H: N' _' L4 }6 y3 A C
try' S3 \! m6 o* J- |' _* B
{
. w8 _6 w% X6 k2 q theDialog->Show();
3 C, H% a' \' B' i# \8 w! j }
. j/ e; B a* R' S+ O catch(exception& ex)
. r m3 B% u( \, h' S {
$ s2 O8 q, o: t( n: B' `3 Q" { //---- Enter your exception handling code here -----' Z$ J0 u4 g7 _3 P. ^
Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox: ialogTypeError, ex.what());$ b1 I4 p' n6 z* ~
}8 p: ]2 V4 N2 Y
return 0;" ]% ^, u" S2 F* y# B
}4 K# z$ O- e6 Q" D4 W. N! e) E) k1 T
8 q; A3 E7 R9 J9 Y6 D( t#if CALLBACK* G# i( a% ~! f8 ]& s0 w
# T3 j& ?3 H5 ?! X1 b) t
void Shrinkage::Show_Shrinkage()
I$ a9 [, v- E& M" B {
; I0 F/ y7 v0 \7 \5 { try
+ t' _0 X7 ~( g' {6 k$ _ {
# x! T5 k2 ` l1 l# d. j5 z( W( H theShrinkage = new Shrinkage();
7 m6 O( T. u! L) t6 \0 F+ ~ n) B* u
theShrinkage->Show();
, I- }9 C" S. } }
+ G* ~; A% W( _6 ] catch(exception& ex)2 Q9 J# H/ V$ M
{
' p( |5 v! Z s- G( B3 N+ e
! L* P4 ^. [3 [" E. \" c7 \" E! } Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox: ialogTypeError, ex.what());
/ w) P5 H4 ?& `/ q }
) {) j7 j1 G$ X2 q1 v$ b4 y! W delete theShrinkage;
7 l; s/ q& d# a& e! @" w b }
, ^$ A+ u7 o9 K$ s% g; e1 L#endif//CALLBACK3 F4 p; d" e1 F6 X/ Q; g' U( f
+ M' e4 W8 L0 }% |, U9 T- _; d
void Shrinkage::initialize_cb(), E5 N& x% I+ l g! v) x
{& i2 F6 `7 v+ Y. ~
try7 l+ p# p& N: X3 l4 O
{. m0 Y4 Q7 C" Z @
group0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("group0"));+ _' M! h( B6 s" d. j. _# n
face_select0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("face_select0"));
9 {) \( q `+ w2 w: L face_select01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("face_select01"));
: E3 Z6 _2 R: h) Z$ I+ i0 N group01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("group01"));
$ _: t6 l9 `& Z. m" b4 t# I bodySelect0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("bodySelect0"));1 c6 Q; |/ O- Q. b% Z' \7 H) B- y4 p
bodySelect01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("bodySelect01"));
& ^& C6 W) H: T0 v2 X7 d group = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("group"));
, [! r7 w" h% s1 A string0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("string0"));& c4 M \. H7 M J! ?4 X# L
label0 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("label0"));7 @* {" V; ^& Q; _/ p
string01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("string01"));
/ }' H! N" {0 c label01 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("label01"));0 n' C, ]9 o+ S: w2 s" `. g
label02 = dynamic_cast<NXOpen::BlockStyler::UIBlock* >(theDialog->TopBlock()->FindBlock("label02"));( l4 P. J2 @- Y1 s# ?9 P0 }6 d
}' X# f3 B( n7 {, T: F
catch(exception& ex)
5 N, P! _( @9 ~& A, v: |: P% s {
1 T& o( R- |. n6 k2 a6 c 1 E! w) M4 x+ \& I! R
Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox: ialogTypeError, ex.what());3 r1 U) d3 c+ G8 C2 M
}
2 e+ k, f: @* s5 t' @( | }% I! @: N# l, p2 _+ O
//------------------------------------------------------------------------------
6 `, F _ U; [" r& c1 n! U void Shrinkage::dialogShown_cb()5 E6 H) @9 |( `9 T! M% T
{. J) X# q+ [* k6 j* B+ @
try
2 O, K+ w( r, U& M% p) T8 j {
5 \' I" c% K! y //---- Enter your callback code here -----
' k$ G# ^5 L# G( x' t, }& E* C/ v }
' k% o# M: j* V6 d8 Y catch(exception& ex)$ h0 v$ F% r# ^' |% G- ~9 d
{
5 I# P$ r/ q) r# L
/ ~% V2 x% r c `8 ]1 x Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox: ialogTypeError, ex.what());
- {/ Z3 _9 ?% ?: e }! F# [1 e) p+ d. c
}
+ Q8 j; o" b' }4 a! ^
% h; k% J$ }$ g. ^ int Shrinkage::apply_cb(). C' k- x7 [ c$ A" I. z
{
% X$ Z. f; r6 L int errorCode = 0;/ M! L. F8 Z$ d! N- ? z* C$ i
try
, x; R/ y2 {2 Q8 h% _5 k7 ?% x {
* f4 z7 Z: M% |# F) [2 z9 | //---- Enter your callback code here -----2 |4 x2 x7 Y% D3 V' {
}
" q# G. c" E/ y. I$ ? catch(exception& ex)% \5 l! F) c" H6 {1 L
{( u5 m0 P/ G4 {% Z9 W
//---- Enter your exception handling code here -----* |- r$ Q% s2 G
errorCode = 1;
7 g$ z% }8 j4 W p7 y% K* g% _. O Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox: ialogTypeError, ex.what());
9 h1 B# T/ j& e! @ }
: G( `# X. J3 h4 j* z return errorCode;
2 T3 u% b! H/ @4 e, s }
: b( } P4 E. I2 j; H' `# r1 e6 P" B5 O; H$ |, }$ R0 \
int Shrinkage::update_cb(NXOpen::BlockStyler::UIBlock* block)
3 u ]6 ~& Y; x/ `5 R" ` {) K p- Q5 k5 ] X6 W: p" x% p
try1 v# H4 q; M& \& t1 z, N1 y
{" v9 D+ i5 { Z. e) x# d9 O) Z
if(block == face_select0)
- _# x8 z3 l; K3 I9 l4 y( T {
, C, [- L" f8 {- p9 I //---------Enter your code here-----------
t9 i; F8 V; e% y. `2 K6 x2 M }
; C, g# B, X( T# }8 E. ~; a else if(block == face_select01)0 d/ u* {; C8 j% j6 r# { Z
{
7 ?7 R* s. x7 h0 m3 } //---------Enter your code here-----------
y9 E$ o, f8 k! {6 k, H3 @. D }) _5 D7 F" g) z( i
else if(block == bodySelect0)0 X6 f+ B, r4 C1 J, M( i
{
' h- \' ^1 W) i- @& H y //---------Enter your code here-----------6 d, ^9 q* q7 `
}( W( i5 h% {! `& l& U5 L: k
else if(block == bodySelect01)1 e. i8 l, V( C3 R
{1 e) K* e. H' J$ ]% ]' e
//---------Enter your code here-----------/ b1 n$ ?) r- W/ A, @) \
}) w5 Y; m: x' p% R I! T
else if(block == string0). N0 K0 ^( C8 R9 `" g' U
{+ T7 ]/ ]5 @! g
//---------Enter your code here-----------$ v0 y- K7 n& a# ^! R& S [7 t5 M
}2 B4 W6 H( Z4 R% R% y5 }* H$ U
else if(block == label0)
% p6 Y: e8 U! J& L. j {8 @" z% \3 \- |( A% ?
//---------Enter your code here-----------
% S6 T* v! p& N* x$ E' ? }! }" u. w1 p! Y# `$ |; Y
else if(block == string01)& i" i) E6 z7 M; w0 w0 p
{
* S* B0 p6 B& [ //---------Enter your code here-----------+ Y Q5 _* j+ Q
}
1 Q" P C6 X- a1 s4 a7 x7 W$ C else if(block == label01)
. S r2 [0 ~7 K7 L' y" T/ i {7 g, ?% I7 u8 J! X3 n, H7 M
//---------Enter your code here-----------. L+ g6 c5 q0 h0 N% H/ n: {! j7 r
}
: ], N) I/ E& e% @ else if(block == label02)
2 l7 r- c% `5 q- H) N# f4 z! e {& r3 q0 I+ S; J6 B# g( \9 y
//---------Enter your code here-----------7 _0 n% [9 V# i
}& O( v4 z; `$ V1 B/ f9 y
}0 p7 D$ g) z- C* W
catch(exception& ex)
' s% J! {% u" O- M8 s {
# e' a% N& \$ C# A, t9 q) F Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox: ialogTypeError, ex.what());
* e0 C9 [ d) l5 x1 l1 s3 W }
5 e- C$ o+ f# Y% X9 Q6 H0 Q return 0;: H" j" g; U9 t
}* I/ f8 w1 L/ i8 J; _
5 e4 S; O. `, F int Shrinkage: k_cb()% S9 {; p: I; D4 g
{
- d( E# z/ F3 p. I% j" B5 b int errorCode = 0;
% s0 ~" x! }, h# E+ t% s$ N try. w" B# ~( f1 ^9 f- a
{
' c. y2 J. F, N; B errorCode = apply_cb();! L- q) |, D" L3 U
}3 H7 i4 t/ e" m4 i; y4 B! s
catch(exception& ex)# t: Y; R. A5 i7 W
{
" { ?. c$ G' i //---- Enter your exception handling code here -----
- Y- |7 _5 A5 d1 m) w2 d7 K# n' |& i errorCode = 1;. g9 u7 |- U3 s: e+ t# E7 w
Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox: ialogTypeError, ex.what());& D$ E" S8 n5 J& |
}/ Q# I" z- J( t3 K. |% Q* b- z
return errorCode;
" p B( ~1 D# | ]0 G+ l }
/ q4 [ M! R+ P7 l. g . s. L, @3 s8 J5 {
//------------------------------------------------------------------------------
% P5 H& D1 l3 {0 o! g- \* N. D6 A //Callback Name: filter_cb# w) w8 M5 l: |7 v2 E s
//------------------------------------------------------------------------------
* N: d/ i/ x7 W5 c% S int Shrinkage::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)# B o9 {* }. e0 g! V K# z8 _. Y7 a
{
$ P: s2 T L& j return(UF_UI_SEL_ACCEPT);
- | l+ d5 \1 v2 x- b }1 b# n' {" C5 ?& b$ ^8 `9 T
2 ?- s2 z- x3 C- L g* Q
//------------------------------------------------------------------------------6 x! z$ `" T3 u
void Shrinkage::focusNotify_cb(NXOpen::BlockStyler::UIBlock* block, bool focus)+ t! u, @ t; P6 ~
{1 S( i: t8 c* A; U% B
try
4 m# m- U* N, o; X {
8 K8 |4 H( n* n: x0 _: C //---- Enter your callback code here -----
' @- P: E4 C( C }" @+ K$ ?9 w8 V2 D* k2 M
catch(exception& ex)
) x) h' t8 m$ v5 l {
" ]7 C' d( c# q! x6 q //---- Enter your exception handling code here -----/ V, N7 t. ?! Z0 H5 Z' x5 J6 {/ G) o) I
Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox: ialogTypeError, ex.what());& W( s' h8 _/ W) ^
}# I$ a" ^2 i# s6 I. k0 w
}
: w8 W2 J1 y( j: x' [" Y ) _5 P. F8 q1 y' y. }
//------------------------------------------------------------------------------
! j4 {) M4 ~2 {& j- m! e void Shrinkage::keyboardFocusNotify_cb(NXOpen::BlockStyler::UIBlock* block, bool focus)
9 ^4 L- {* s7 o& x2 h% G+ Y& r {' i( |# b8 R9 i2 F& L" `' p# `
try
; M9 D' y( ?" Q {
9 [) |9 O6 N+ a' v //---- Enter your callback code here -----# q/ K7 }5 d5 g) A9 O7 S4 i& \% D
}& p F L3 f1 m5 r
catch(exception& ex)
. S) n" s$ M& {- k- B& x/ y9 n {
% Z$ }( ^3 s4 x, G- M7 A k3 E
! m$ _$ M2 f { Shrinkage::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
2 S5 I. |" m- H7 }& [& @6 d }" e) o& G6 B7 w. g
} }' ^+ z7 _6 h9 |
3 g, V* v9 g: o/ |) C1 K7 d) P" K% A0 m
, Z- T* W7 o. `4 @) n7 m7 R |
|