|
依然是菜鸟求助
3 j- I# j7 A. T我用UIStyler建立了一个按钮,那如何实现:点击该按钮后可以用鼠标选择一曲线,然后获得它的中点,我的程序如下,但是似乎总是死循环。6 V" V4 ~& h2 H* v
int GP_action_0_act_cb ( int dialog_id,
b6 M5 ?& B( J void * client_data,
1 c6 _% r+ W/ S, T& n5 e UF_STYLER_item_value_type_p_t callback_data)
7 ~6 j- o, ^2 w4 @. S t2 Z{% p, h5 n; t) u& @* h+ r2 W1 G
/* Make sure User Function is available. */ 2 B9 v/ t9 c. \) K; j/ X8 N8 g
if ( UF_initialize() != 0)
( }/ E# ]7 N# U( E return ( UF_UI_CB_CONTINUE_DIALOG );
6 D- F1 K% `, h, a# A
) h- e, E x# ]. _0 H! f" l* s /* ---- Enter your callback code here ----- */! e7 D0 u& |4 j& S" r9 k2 t) @, h
char message[133];0 ]& U+ Z+ {4 Y( E$ t
message[0]='\0';. z0 N0 \9 ~8 s& f+ X1 Z# C- X3 O0 r
strcpy(message, "请选择一条曲线");
5 {2 e& L* J9 ?5 M# rUF_UI_selection_options_t opts;
+ j) A4 C4 ^* v* i1 X% c4 t! ~4 P0 x9 ?UF_UI_mask_t mask;
R ]& e# c+ ^0 U9 Kint response;
5 U6 m& \! r$ R: Btag_t object, view;
6 j) Y) O. Z, C% |# i/ z6 J$ ldouble cursor[3];3 f# {" U) X6 q# r7 K+ r: V0 |) m
int unhighlight=0;
1 V3 Z3 r1 n" |& [1 T
2 I3 G% F1 ~( `- O# K3 F( A j' l& G9 a" F8 x1 K
' B8 r) ^$ I* t6 g1 uUF_initialize();% W' t2 u0 i9 n) u- h" a
opts.other_options=0;4 s5 s1 k9 f. B3 v; J9 }* n
opts.reserved=NULL;
! l: b% X0 {! Fopts.num_mask_triples=1;
( D. `: d6 C# c0 x# n3 Zopts.mask_triples=&mask;; o( e% p; C5 a4 t6 f. l- _) o4 X
& u+ N% x+ \. R; P3 V5 J5 z: H
opts.mask_triples->object_type=UF_spline_type;& j) } a3 Q; w2 Y! M k
opts.mask_triples->object_subtype=0;( `$ X! h- z$ U7 X" ]6 Z
opts.mask_triples->solid_type=0;9 T* C% y& W2 w% L" b' x
3 M# ~$ Y- Q) Y4 p' T* a2 m; D7 s. R
opts.scope=UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY;% M8 e; D" Q6 t! ^0 V% l2 j+ [
double port[3];4 }- Z: G" [) |1 R
% I! Y: D% V9 C, f: j6 }1 `
5 _! Y5 v! f( P( p* g2 Udo{int irc=UF_UI_select_single(message, &opts, &response, &object, cursor, &view);}6 V; V) |5 m! u8 D- Q2 i; m$ V
: S1 R7 ^( ?& i7 j& ywhile (!(response==UF_UI_OBJECT_SELECTED));4 J0 z( \, k2 ?" s s; v
if (response!=UF_UI_OBJECT_SELECTED)) x7 ~ ~/ C; c+ P3 c9 D* w
{
( l9 ]6 g6 y4 ]+ q6 P% guc1601("No Curve Selected",1);) V- K/ o9 G. O3 _/ @
UF_terminate ();
: j. r' n3 G* ^3 F2 I1 ]+ T! {return (UF_UI_CB_CONTINUE_DIALOG);% t m: R6 C; B/ \4 r# J1 }
} ( T' b0 C; i6 b9 a+ I3 {
) v/ e2 Z e% K1 H, a$ e7 T
* B6 _* f4 l0 R3 ]int ret=UF_MODL_ask_curve_props(object,0.5,port,NULL,NULL,NULL,NULL,NULL);1 K6 V% F; T5 v) \* |" [. i
char message2[133];
2 h! ]: T) Y$ L: r message2[0]='\0';
3 R# [2 l0 t, y0 {4 v# ] D/ N% z sprintf (message2, "曲线中点坐标为:%f,%f,%f",port[0],port[1],port[2]);$ w( v: k' `' j; Q1 M3 O
uc1601(message2,1);4 f; P, S- R5 [
: e. ~7 f2 _2 x; u
# Z: R; k3 a( I3 L! ?+ e% O3 P- @! i8 R
UF_terminate ();
* }" t# a, J# B7 m& xreturn (UF_UI_CB_CONTINUE_DIALOG);- s' `% q, H! a( Y% B" B/ g1 A9 B
} |
|