青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
发表于 2010-11-16 14:09 | 显示全部楼层 |阅读模式
我的思路: 选定直线后 取出线的2个端点,根据取出的端点再给定偏置距离得到新的点。 , }6 f5 C! I1 J3 f% e- F

* D$ y9 _; `* J0 ?; |! Q如图:
* a' s: F$ n! p* d5 w6 c  r8 e 未命名.jpg 2 O8 C9 ?. I  x3 g( g
看我代码:
. v, C" U. L8 X! Mint CHANGE_action_9_act_cb ( int dialog_id,
# L9 L2 O8 ^' ~5 @9 c             void * client_data,
3 _) I9 ]5 O9 J2 \* A+ x             UF_STYLER_item_value_type_p_t callback_data)+ H! U2 Y5 z! E2 a. g  V7 |
{% i1 j7 i* j9 l$ z
     /* Make sure User Function is available. */  , _& S6 m' x+ p% I* d; z
     if ( UF_initialize() != 0)
$ b# V& `. g5 P  z          return ( UF_UI_CB_CONTINUE_DIALOG );) B0 c6 a0 q# L7 L' o! E
     /* ---- Enter your callback code here ----- */$ W% [+ ~2 C- b/ s
  int err = 0;
8 A: `. i' Z0 j0 p4 R' H  char *message = "Select point";* e" k/ T9 v: ?  ~3 K
  double point_coords[3];- _# W% X# G  _. e, F+ E) ^
  UF_UI_selection_options_t opts;
; R& N! a2 l, l3 m/ m4 X  UF_UI_mask_t mask[1] =  {{UF_line_type, 0, 0}};5 `* K# A4 G% P- u' }/ Y6 ]
  
5 P$ k3 U' L1 i7 V* x  int response;  v; ?5 a5 N# d/ C& F4 m3 r" [+ H
  double cursor[3];
" H4 n6 E  c5 L8 d5 k  double A[3],B[3];
* U/ J) k& _; ~. o7 S0 k  tag_t object, view;
% W) m1 Z) L/ H) I9 f# k) o+ ^' ?! q: G  int   unhighlight = 0;
2 O) M6 k6 T( E6 F: ^0 v2 B( k  UF_CURVE_line_p_t line_coords;- R/ w6 e( W( E9 E$ A, l
  tag_t line_tag;0 d4 f" ~+ L$ u1 ]' W
  opts.other_options = 0;
% t8 z! V4 y: o& K) ]  opts.reserved = NULL;
+ r8 C" w1 D* Y* m  opts.num_mask_triples = 1;
) D# f7 o& f# Z2 k  opts.mask_triples = mask;
: z6 p2 x( z# b: c5 W8 a6 k  opts.scope = UF_UI_SEL_SCOPE_WORK_PART_AND_OCC;  // 定义选择范围
8 Z" o3 _2 n* ?6 M$ Y  err = UF_UI_select_single(message, &opts, &response, &object, cursor, &view);! M+ Q+ G2 d* _0 v& X% Z5 d
  if(err == 0 && response == 4 || response == 5)7 E4 _7 M8 h$ h2 A* W
  {6 Q8 `% \! J5 K7 A0 H& W% t
   if(object != NULL_TAG)' M. m' Z; v0 s# b
   {
( o. L8 b3 p9 ^& B/ @2 M    /*extern UFUNEXPORT int UF_CURVE_ask_line_data(tag_t line ,UF_CURVE_line_p_t line_coords)*/ / U! ~- C* s* ]2 ]& F
    UF_CURVE_ask_line_data (object, line_coords);  // 获取点位置$ x8 M# S5 j' G
  //---下面要取出端点 再把端点偏置 但是代码不知道怎么实现了 ------请高人进来!!!!!$ k6 R& i- Y. Z& |8 f, c
    A[0]= line_coords->start_point[0];
3 R8 b3 u/ b. Z/ a    A[1]= line_coords->start_point[1];/ Y% m! x1 {/ t, E6 ?+ j
    A[2]= line_coords->start_point[2];
& j8 m( y/ e6 ]+ P' r    //uc1601(info,1);   
+ ^! m2 [( I$ w9 `. D& \% \   }; D) f' E3 J, Y- c( W/ Q
       //   UF_CURVE_create_line(&line_coords,&line_tag);+ X. R7 ^; t- I# P; \& n8 H
  }
  k- I- \4 l' X- L1 H' ]' Y     UF_terminate ();
- E. l5 K3 {$ y1 ]# ~0 @    /* Callback acknowledged, do not terminate dialog */+ ]( L; t- ~& i" w! L, z/ L5 L+ _
    return (UF_UI_CB_CONTINUE_DIALOG);
# \: \% }, [  }: T* A/ M}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-29 11:17 , Processed in 0.100206 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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