青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
发表于 2010-11-16 14:09 | 显示全部楼层 |阅读模式
我的思路: 选定直线后 取出线的2个端点,根据取出的端点再给定偏置距离得到新的点。 2 K5 O- k! p$ I. n- ?) H; i

6 t1 s: }# i" c) d" ?如图:
/ Y# o0 }& c+ [! A 未命名.jpg 5 `4 Y( W  X  Q1 N8 F% |' h* R
看我代码:1 ~' `# h9 [$ G$ v7 |+ X. N
int CHANGE_action_9_act_cb ( int dialog_id,* {7 H/ L* W% E! _* O( b
             void * client_data,, T5 K, p, I4 W) t" A
             UF_STYLER_item_value_type_p_t callback_data)
. Y9 T  j- J1 [7 F) c$ F{8 e! V( r; Y1 f
     /* Make sure User Function is available. */  , Q  ~2 Q- [' d
     if ( UF_initialize() != 0) + j$ `  {- D; l. H* H& y
          return ( UF_UI_CB_CONTINUE_DIALOG );
% t. x& Y" A- R( P     /* ---- Enter your callback code here ----- */
* ^) b" ]2 f5 ^1 G: d" `  int err = 0;
) p) Z; ?# X) n  char *message = "Select point";7 v+ h! B! A9 ]% S: @; S: x
  double point_coords[3];
# t; s% D/ `5 s3 K  UF_UI_selection_options_t opts;
6 ^% _/ e0 g! v7 c9 ]- A9 i  UF_UI_mask_t mask[1] =  {{UF_line_type, 0, 0}};3 Q/ s! _% t, t) M2 V* M) H/ r  W# D
  
3 }$ ]: Y3 D' [# Y  int response;! b) P4 a6 K, T: e# n0 a3 H: W
  double cursor[3];$ f" a. c9 C; X9 P; {+ D' a
  double A[3],B[3];
1 H6 J9 V5 _! \* I  tag_t object, view;# B- {' N8 J+ o' K
  int   unhighlight = 0;
* y4 y# G0 K' y8 A* E2 A  UF_CURVE_line_p_t line_coords;
6 o& W  g+ `0 A  tag_t line_tag;% t2 g0 w: B: @) N/ S
  opts.other_options = 0;# N! a: }7 v" H) h0 O
  opts.reserved = NULL;
, P7 N$ }" J0 J" }1 V* K' W  opts.num_mask_triples = 1;
& f  j! P6 l/ j7 I  opts.mask_triples = mask;
0 t+ ]1 \+ [/ d# E  opts.scope = UF_UI_SEL_SCOPE_WORK_PART_AND_OCC;  // 定义选择范围
) T* ^+ ~& A" l6 I2 m/ q  err = UF_UI_select_single(message, &opts, &response, &object, cursor, &view);
5 r: |: B, z7 j# P; b# M  if(err == 0 && response == 4 || response == 5)
- Y7 V, R& j8 N1 l4 k% e% M  {/ {. K# ^$ e) i9 Z" _' }* p
   if(object != NULL_TAG)
9 x8 E4 {: X) N: F# ^9 c5 B   {
% D/ T3 g$ h. f" {    /*extern UFUNEXPORT int UF_CURVE_ask_line_data(tag_t line ,UF_CURVE_line_p_t line_coords)*/
/ j$ r; x! f: q9 \    UF_CURVE_ask_line_data (object, line_coords);  // 获取点位置9 u5 o9 i/ o* L! x
  //---下面要取出端点 再把端点偏置 但是代码不知道怎么实现了 ------请高人进来!!!!!
- f6 @0 c- H: u6 T$ R    A[0]= line_coords->start_point[0];
( P: M2 e( O- s6 {7 y) B" I    A[1]= line_coords->start_point[1];
$ d7 w8 [' ]0 H3 Q1 }    A[2]= line_coords->start_point[2];' k* Y: [: n4 X5 O: K
    //uc1601(info,1);    ; j' O  F/ u* _1 h+ R8 Z! h9 D
   }7 a8 T9 e5 V. h8 m
       //   UF_CURVE_create_line(&line_coords,&line_tag);
& u5 u! j& U, H/ o2 l  }) N0 b/ G6 p6 C* X7 I+ D8 @
     UF_terminate ();
! j8 Q; k) e4 T  q    /* Callback acknowledged, do not terminate dialog */
3 D5 C/ j3 W. `1 o# q% o    return (UF_UI_CB_CONTINUE_DIALOG); % {+ H( P1 ]. I- l
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-8 16:49 , Processed in 0.234864 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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