|
请使用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 |
|