|
我的思路: 选定直线后 取出线的2个端点,根据取出的端点再给定偏置距离得到新的点。 $ T# w- {) c7 ?( e
+ v9 Q8 l2 E$ m( `9 C* e4 h) ~/ t I
如图:
- m; m8 d( `4 s5 O( J
( Y+ D/ K0 D, J0 T8 P
看我代码:: }+ y( Y d0 h6 ]8 Y5 |4 I. j
int CHANGE_action_9_act_cb ( int dialog_id,7 [4 {) [% a' m8 L# n7 g
void * client_data,7 v$ `! O" M& o# |. L6 C
UF_STYLER_item_value_type_p_t callback_data); {3 u0 z. t n/ p" k4 k( R
{2 {& _! M- V6 L8 e
/* Make sure User Function is available. */
. o" {0 W4 }8 y+ g1 \ if ( UF_initialize() != 0)
; i; H2 X6 @: v7 N return ( UF_UI_CB_CONTINUE_DIALOG );9 S% P8 i1 {% M9 z% A8 n
/* ---- Enter your callback code here ----- */
8 I+ d6 T0 j/ r3 D) W int err = 0;
6 i% r$ o+ k' ^ char *message = "Select point";
& d, i: F, z. D3 e& `7 \$ C; d double point_coords[3];, I: g! D+ T) z, }% f. `+ D
UF_UI_selection_options_t opts;
; N$ G" ^/ z$ ? UF_UI_mask_t mask[1] = {{UF_line_type, 0, 0}};
0 g1 s; D* |; f' i" W 0 v1 N' d+ \# E
int response; C* M( S& e3 s: a" f1 Z& H- E
double cursor[3];
8 ?! I, Z- g, @! ? double A[3],B[3];9 k) e4 t. q G5 s
tag_t object, view;' @9 X. |. ~; v
int unhighlight = 0;
0 d% ]2 \5 F5 b; b UF_CURVE_line_p_t line_coords;
6 T( r9 j! _. ~% [# J5 R tag_t line_tag;5 R5 \4 v9 k+ K, w0 _0 L5 R8 m
opts.other_options = 0;
. i0 w+ |8 u5 y- E6 z% X Z opts.reserved = NULL;
7 g1 c; }# U! W O opts.num_mask_triples = 1;5 f+ F# u' y" Z, n2 |
opts.mask_triples = mask;
; q. x* h% U f; h( |! q( M opts.scope = UF_UI_SEL_SCOPE_WORK_PART_AND_OCC; // 定义选择范围
) E0 y p* J7 f0 s) A0 \6 ^ err = UF_UI_select_single(message, &opts, &response, &object, cursor, &view);: ^. G: Q; C& B3 i( s
if(err == 0 && response == 4 || response == 5)
; ~+ c' o( ?4 J6 ~3 }9 K {5 R; {% x7 z9 n" v) q5 j- i0 {! u
if(object != NULL_TAG)0 E4 t/ W% }% X
{
% M) t& }( D8 H4 {- C$ M4 { /*extern UFUNEXPORT int UF_CURVE_ask_line_data(tag_t line ,UF_CURVE_line_p_t line_coords)*/
8 O! x2 f' q& |" @9 B n UF_CURVE_ask_line_data (object, line_coords); // 获取点位置& E2 h' v5 L |" Y
//---下面要取出端点 再把端点偏置 但是代码不知道怎么实现了 ------请高人进来!!!!!
! V9 R% ~4 A8 D# _; ~8 Z- k2 O8 A: \* D2 h A[0]= line_coords->start_point[0];
- \5 L+ S' G7 I A[1]= line_coords->start_point[1];
Q" R) p$ H- v1 { A[2]= line_coords->start_point[2];
; z) G- [' p V, k- Y5 R: t- U //uc1601(info,1);
$ F, n8 K' g/ P$ { }6 w$ k) ?7 u& s) r( D
// UF_CURVE_create_line(&line_coords,&line_tag);: O1 X8 X: j1 {8 Z- r6 H
}& }6 K$ y, f9 ^
UF_terminate ();
% z/ w; a& \1 A( x /* Callback acknowledged, do not terminate dialog */+ {* Q1 E' [+ E1 o; J6 C
return (UF_UI_CB_CONTINUE_DIALOG); * q- r6 J( M* B$ M E
} |
|