青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

青华模具培训学院
查看: 4318|回复: 2

[疑难] 如何用UF_UI_select_with_single_dialog函数选择点?

[复制链接]
发表于 2009-1-4 19:39 | 显示全部楼层 |阅读模式
本人做了个先在对话框里输入数据,然后创建套筒的小程序。对话框里加了一个用来确定套筒放置位置的按钮,点击按钮之后希望进行放置点的选择。。。
  Y$ N* C7 h7 j" d1 @      我自己查了一下,好像是用UF_UI_select_with_single_dialog函数实现,可调试以后发现,只能选择孤立的点,而那种诸如圆的中心点啊,直线的端点之类的点都不能选择,请问这是为什么呢?
; o- e+ N. g0 s! b! u# ?      我希望实现的选择功能是可以选择到上面说的那种诸如圆的中心点啊,直线的端点之类的点,如何改进呢?望高手指点!
6 }2 \/ q8 p+ `( `8 {) j; o4 I本人写的放置点的按钮的回调函数:$ L0 Z) }. B4 P& Z
int CHANGE_action_6_act_cb ( int dialog_id,! Q& D5 r1 J0 D# n
             void * client_data,# U, a# m6 u. g! B- q3 f0 _  a
             UF_STYLER_item_value_type_p_t callback_data)
8 L- y1 w7 Z6 h2 o{
8 l" B& h. M: }% y6 C     /* Make sure User Function is available. */  
2 u2 z! {: H$ h7 d1 Y9 `  j     if ( UF_initialize() != 0) 3 a+ j3 Y9 z+ {' ]& D
          return ( UF_UI_CB_CONTINUE_DIALOG );8 Q  p( b% w6 m1 X6 F  P7 {

1 v. H) B3 M: l( N% X: v8 v     char message[] = "请选择点作为放置点!";
/ Y( G" w* ]7 S  @* U    char title[] = "放置点选择";% s9 t) l! ?  F. _& Y) W& [1 U( Z! }3 Y
    tag_t m_point_object;: M6 k) `- C  [1 Q. c
    int scope = UF_UI_SEL_SCOPE_NO_CHANGE;! R6 j  i" V) ]  Q4 k
    int response = 0;& G& `3 o- Z: e5 [7 X
    double cursor[3] = {0.0};
  c5 _- a4 @" b4 f8 ?    tag_t view = NULL_TAG;
3 r! h4 U( f4 A" T% J0 k# X2 \    4 j# @2 `9 n/ F- n; u. Q  D. A9 g
    //加锁: _* K! M7 Y$ P7 h- ^7 V+ i, q
    UF_UI_lock_ug_access (UF_UI_FROM_CUSTOM);: B! U: A5 D7 w! d6 l

2 `+ Q6 d9 l/ h  q3 e    UF_UI_select_with_single_dialog(message, title, scope, init_proc,NULL, &response, &m_point_object, cursor, &view);- m6 ?) u5 u: Q5 n8 m  U; _6 \3 z: u

  K5 M' E, `5 b9 L2 E4 {; c( B    //解锁
- H1 Q' g9 Y6 {$ e    UF_UI_unlock_UG_access (UF_UI_FROM_CUSTOM);
# L# d  n! b' E# Z( K; M! c- q
! L4 _9 o$ n4 X) ?    // 将获得的点信息反传给数据输入框中的XYZ [1/4/2009 %CREATED BY AUDREY LEE%]% I3 f8 ^4 r: J; p1 }6 r$ p
    UF_CURVE_struct_p_t curve;
" C0 i! A9 L; T7 K) N  \. Z    int curve_type;
8 x+ q" ~( C5 N$ z8 z    double  *curve_data;4 T4 i  o$ E3 T  S% y/ Z4 c+ h
2 m" _' _7 b" J7 _) O, x) A
    UF_CURVE_ask_curve_struct(m_point_object, &curve);
2 F. z8 v4 q. H0 f) T, d% s" l    UF_CURVE_ask_curve_struct_data(curve, &curve_type, &curve_data);$ j& M) M# Q1 v2 a7 h$ b
    set_dlg_data(dialog_id, CHANGE_REAL_4, curve_data[0]);
) L1 l' r2 W' V8 \5 a# B" B1 |    set_dlg_data(dialog_id, CHANGE_REAL_5, curve_data[1]);
% [( [4 X7 i+ q2 I    set_dlg_data(dialog_id, CHANGE_REAL_6, curve_data[2]);. I* v7 s' ^$ b: W
- B$ Y. I$ a1 \- P
$ F4 r( a* f0 V
/ F% J% b! I  G8 \: S7 |
     UF_terminate ();
# V; L9 A! H. `* c: [* }. y6 {! v7 p$ _2 w7 Q, q+ e" [
    /* Callback acknowledged, do not terminate dialog */, f1 A1 l0 k0 U) c1 L* v
    return (UF_UI_CB_CONTINUE_DIALOG); 9 m! }0 M! t  V4 k
    - L3 L& z6 r$ s
    /* or Callback acknowledged, terminate dialog.    */
5 p4 j3 T3 ]8 a    /* return ( UF_UI_CB_EXIT_DIALOG );               */
1 s% R6 o& E: ~1 }# W1 C! }: e! r& U/ \' w* A2 t# `
}
 楼主| 发表于 2009-1-9 10:54 | 显示全部楼层
没有人回么?
发表于 2009-7-5 16:19 | 显示全部楼层
用UF_MODL_point_construct函数即可实现
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-28 07:24 , Processed in 0.058992 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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