青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
发表于 2010-11-16 14:09 | 显示全部楼层 |阅读模式
我的思路: 选定直线后 取出线的2个端点,根据取出的端点再给定偏置距离得到新的点。
9 [4 ?  T  T' ]+ e+ _
8 j. [6 h3 r# r7 {5 k3 e; d$ Q( |如图:
9 R( V+ q6 T5 l) ~ 未命名.jpg ) r3 a4 W4 g! |( i2 i  J! k
看我代码:+ x  R' b% R1 ^+ `# E$ Q
int CHANGE_action_9_act_cb ( int dialog_id,$ s1 u  Q+ E4 z8 L" O
             void * client_data,
# E- z6 w) B: ]             UF_STYLER_item_value_type_p_t callback_data)
" n. S0 |  q/ n5 O" {{
% L3 \  z' z6 `; d/ q; j+ a     /* Make sure User Function is available. */  
# |+ t0 M+ [% S& D     if ( UF_initialize() != 0)
8 g% R8 G3 T& h* W" [' z1 N          return ( UF_UI_CB_CONTINUE_DIALOG );( l# d2 b7 w0 [* [: p0 P) h9 b
     /* ---- Enter your callback code here ----- */- W4 V( |& D# j
  int err = 0;" P) j% y- F+ e2 w9 P$ F: N5 U
  char *message = "Select point";
7 G+ ^2 B* p9 Q: c" x# J* p  double point_coords[3];
4 q1 ?1 z5 P! j8 v  N1 b  UF_UI_selection_options_t opts;5 T4 P4 J% I% ^& \7 y$ u
  UF_UI_mask_t mask[1] =  {{UF_line_type, 0, 0}};
, l0 b/ ?1 G& n  
4 x' q6 L" C" U5 u, e7 y  int response;& b5 _# [, N6 Q% g7 M% ~( D$ m
  double cursor[3];
4 g1 b5 g$ B2 G/ L1 Z4 n; D  double A[3],B[3];
) k, V9 a$ X: d' J; S4 u  tag_t object, view;, d/ A2 j) L- U8 k
  int   unhighlight = 0;/ `7 _- S6 t2 s
  UF_CURVE_line_p_t line_coords;* G1 t; {0 q, X- F9 J
  tag_t line_tag;
- K1 d. o1 @( V" w" J( E  opts.other_options = 0;" y6 z' F' F, u* w1 q1 Z5 [
  opts.reserved = NULL;
) \5 m/ b# s" j( z- u" u  v  opts.num_mask_triples = 1;
/ H/ u+ o% `" |  opts.mask_triples = mask;1 w: O' R/ T0 b; C  g) G* d
  opts.scope = UF_UI_SEL_SCOPE_WORK_PART_AND_OCC;  // 定义选择范围2 U( T& ~; }  ?; L
  err = UF_UI_select_single(message, &opts, &response, &object, cursor, &view);% a* h. E& D: A/ _
  if(err == 0 && response == 4 || response == 5)  u0 M& l  _$ b* I3 ^( z
  {. |8 |, N4 q- T; |) q; o5 J! W& l. T
   if(object != NULL_TAG)
8 N" x7 O) O- ^' x   {
; T. Y8 X8 v( ~5 H    /*extern UFUNEXPORT int UF_CURVE_ask_line_data(tag_t line ,UF_CURVE_line_p_t line_coords)*/
1 X% J$ i# Q  M" P2 R# |0 R    UF_CURVE_ask_line_data (object, line_coords);  // 获取点位置2 B! P# m1 X% b# |1 O
  //---下面要取出端点 再把端点偏置 但是代码不知道怎么实现了 ------请高人进来!!!!!
- ^/ H/ t9 p- s0 o& O. g  W2 |    A[0]= line_coords->start_point[0];! M( n; z  O3 \4 z2 T5 P
    A[1]= line_coords->start_point[1];
, d! \$ r) d5 a) y, |) M# b& z; N    A[2]= line_coords->start_point[2];4 H  k: Q5 `2 u5 s2 ?
    //uc1601(info,1);    : U5 k4 B& X, u/ u$ A  G$ T- v5 }
   }% Q$ {0 }( D4 n
       //   UF_CURVE_create_line(&line_coords,&line_tag);
6 \2 |: `4 C& o/ C; @. W9 t  }0 S6 ~% n8 W" P! K- ~& p
     UF_terminate ();
  z6 S# o/ d1 m3 ~- ?) W    /* Callback acknowledged, do not terminate dialog */
% A% I. [/ H6 O8 U7 S# h# C    return (UF_UI_CB_CONTINUE_DIALOG);
) f8 ^' i+ D4 c9 G4 o8 {+ o}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-29 04:19 , Processed in 0.056755 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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