青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
发表于 2010-11-16 14:09 | 显示全部楼层 |阅读模式
我的思路: 选定直线后 取出线的2个端点,根据取出的端点再给定偏置距离得到新的点。
7 s9 s. q2 S- p" l" M$ X7 z, a/ {% D
如图:
! M/ f: L5 l& B 未命名.jpg + Z5 S: ~3 j% |* W% P8 z
看我代码:
+ v$ H  L& ?' I) n$ N6 o% d) Kint CHANGE_action_9_act_cb ( int dialog_id,  U+ ]& C$ F  X- p5 F; I( f
             void * client_data,7 _4 a4 @) i2 y& Z
             UF_STYLER_item_value_type_p_t callback_data)
" N$ x* t, [7 \# J5 j, i{  A" }" V3 A: l( l) q
     /* Make sure User Function is available. */  
' {/ }$ F1 s" d6 \) X- n" c     if ( UF_initialize() != 0) % F4 ~9 e4 D' ]) I( p0 v
          return ( UF_UI_CB_CONTINUE_DIALOG );2 k' O. N- b/ L: u! a3 J
     /* ---- Enter your callback code here ----- */
$ B4 V2 a/ X- V  P" z9 W" f  int err = 0;' L) g* }5 t% N1 i
  char *message = "Select point";
! B( N4 U8 d9 Q# E4 e) x! k2 g  double point_coords[3];
: G5 H6 z1 f* N* g  UF_UI_selection_options_t opts;
- u2 u/ i: d8 A9 n0 T  UF_UI_mask_t mask[1] =  {{UF_line_type, 0, 0}};
. w2 A* f* v6 F2 G1 b  
) }5 M; H' W! Y& A% y1 {7 a& H+ t  int response;, F. k  |" u- x9 P9 ^
  double cursor[3];
. E; S( S: m; G- x! ~  double A[3],B[3];
9 _0 u' O% H0 z5 M! T  tag_t object, view;
: @$ Z( {7 L2 h2 l2 S* W  D4 L- R  int   unhighlight = 0;
: L. I0 i9 C: j- ?8 C  UF_CURVE_line_p_t line_coords;# d: k2 `4 Q( A# k
  tag_t line_tag;
" G# J6 ~* p4 A0 s) G% o9 q  opts.other_options = 0;$ \# Y/ p0 [0 c5 f( S
  opts.reserved = NULL;
/ a, e6 q" c0 ]0 o  opts.num_mask_triples = 1;
3 D  r, }4 g2 M5 X! ^  opts.mask_triples = mask;* Y$ F. X0 ~3 k# f. G
  opts.scope = UF_UI_SEL_SCOPE_WORK_PART_AND_OCC;  // 定义选择范围
- H& z5 n$ T" _5 f  err = UF_UI_select_single(message, &opts, &response, &object, cursor, &view);6 ^/ j& f& G. a; q* {" x
  if(err == 0 && response == 4 || response == 5): C+ B) i0 Z. i; A5 @' E1 J- z/ Y+ c
  {/ z7 w# w" i1 w# y
   if(object != NULL_TAG)# ~: p/ M& r. y$ k
   { ; q" O+ F8 m; Q- e3 @2 `
    /*extern UFUNEXPORT int UF_CURVE_ask_line_data(tag_t line ,UF_CURVE_line_p_t line_coords)*/ * F$ U: d9 k; d0 M1 V. _
    UF_CURVE_ask_line_data (object, line_coords);  // 获取点位置: x* g& P! }- g8 z6 z
  //---下面要取出端点 再把端点偏置 但是代码不知道怎么实现了 ------请高人进来!!!!!
, ?2 Z; O% L9 @    A[0]= line_coords->start_point[0];+ {3 M6 e3 A5 g6 F
    A[1]= line_coords->start_point[1];% L. h# Z2 n) ]  n5 w. s
    A[2]= line_coords->start_point[2];$ v1 s- K- l0 H3 M' j5 q$ j0 c$ b
    //uc1601(info,1);    . [: e) N: f0 x
   }
% M1 c2 j3 a; F       //   UF_CURVE_create_line(&line_coords,&line_tag);3 j$ o1 C- m0 {. W2 Y
  }) _$ e2 b5 ]! Q* y, k+ Q6 a$ f
     UF_terminate ();. z, |3 A* r0 ?! D4 @
    /* Callback acknowledged, do not terminate dialog */5 M3 O0 s% }8 D6 n/ w! p- E: |
    return (UF_UI_CB_CONTINUE_DIALOG); ) [5 P, q" L6 k, A
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-14 11:17 , Processed in 0.175348 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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