青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

青华模具培训学院
查看: 1998|回复: 0

[分享] 根据已知的直线偏置出两条平行线

[复制链接]
发表于 2010-11-16 14:09 | 显示全部楼层 |阅读模式
我的思路: 选定直线后 取出线的2个端点,根据取出的端点再给定偏置距离得到新的点。 $ T# w- {) c7 ?( e
+ v9 Q8 l2 E$ m( `9 C* e4 h) ~/ t  I
如图:
- m; m8 d( `4 s5 O( J 未命名.jpg ( 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
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|关于我们|sitemap|小黑屋|Archiver|手机版|UG网-UG技术论坛-青华数控模具培训学校 ( 粤ICP备15108561号 )

GMT+8, 2025-2-19 06:10 , Processed in 0.056702 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表