iCAx开思工具箱

标题: 请教关于Setting Tool Palette Attribute Values的问题 [打印本页]

作者: SIM    时间: 2005-11-5 21:50
标题: 请教关于Setting Tool Palette Attribute Values的问题
我想在打开对话框的时候,Tool Palette中的第一个图标处于激活状态(第二个没被激活),鼠标同时选择屏幕中的东西。于是在constructor_cb里进行相应的设置,如下:
int HOLE_constructor_cb ( int dialog_id,
             void * client_data,
             UF_STYLER_item_value_type_p_t callback_data)
{
     /* Make sure User Function is available. */
       
        UF_STYLER_item_value_type_t data ;
               
         if ( UF_initialize() != 0)
          return ( UF_UI_CB_CONTINUE_DIALOG );

          /* ---- Enter your callback code here ----- */
         data.item_attr = UF_STYLER_SENSITIVITY;
         data.item_id = HO_SELECTIONSTEPS;
         data.value.integer = FALSE;
         data.subitem_index = 1;
         UF_STYLER_set_value( dialog_id ,&data );
                      sel_init_proc( data.value.selection, client_data) ;//用于设置鼠标可以选择的东西
                      UF_terminate ();
                      return (UF_UI_CB_CONTINUE_DIALOG);
}
我希望在鼠标选择之后,能激活Tool Palette中的第二个图标,我想是应该设置Setting Tool Palette Attribute Values中的Default Action,但是没知如何添加程序,特别是将这段程序加到哪里?加在sel_init_proc( data.value.selection, client_data) 之后呢,还是在sel_init_proc( data.value.selection, client_data) 里面呢?需要什么条件才能调用这段程序吗?


作者: Afang    时间: 2005-11-5 22:54
sel_init_proc是你自己定义的函数吧?是不是用了UF_UI_set_sel_procs这个函数,应该在这个函数里的sel_cb设置
作者: SIM    时间: 2005-11-6 15:02
是的
我用了UF_UI_set_sel_procs这个函数的。我试试看。
谢谢先!
作者: SIM    时间: 2005-11-8 19:42
但我发现对话框的参数,包括dialog_id, UF_STYLER_item_value_type_t data这两个没有办法传到sel_cb里面去啊!
请问有什么办法吗?
作者: Afang    时间: 2005-11-9 09:13
用全局变量或者client_data都可以传
作者: SIM    时间: 2005-11-9 20:52
谢谢。
但我把程序加到sel_cb里面,还是没能激活另一个图标。
下面是我的程序,请看看是什么问题。谢谢!
static int sel_cb (int num_selected,              
                          tag_p_t selected_objects,     
                          int num_deselected,           
                          tag_p_t deselected_objects,   
                          void *user_data,               
                          UF_UI_selection_p_t select)
{
        double parm[2] ;
       
                    if( num_selected == 1)
                Placement_face_tag = selected_objects[ 0 ] ;
            
        UF_DISP_set_highlight(Placement_face_tag, 0);
        UF_UI_ask_sel_cursor_pos(select, &cursor_view, cursor_pos);
       
        UF_MODL_ask_face_parm (Placement_face_tag, cursor_pos, parm, face_point);

        data1.item_attr = UF_STYLER_DEFAULT_ACTION;
        data1.item_id = HOLE_SIM_SELECTIONSTEPS;
        data1.subitem_index = 1;
        UF_STYLER_set_value( dialog_id1, &data1 );//dialog_id1和data1是全局变量,分别由dialog_id和
                                                                                             //(UF_STYLER _item_value_type_t)data赋予       
                                                       
        return (UF_UI_CB_CONTINUE_DIALOG);
}


作者: Afang    时间: 2005-11-10 11:23
data.item_attr = UF_STYLER_SENSITIVITY;
还要定义data.value.integer,1是可选,0是不可选
作者: SIM    时间: 2005-11-12 19:34
再次感谢Afang
不过按你所说的,还是没能达到我所想要的效果。
我想要的效果可以用UG里的打孔功能对话框来说明:当选择一个面后,就将第二个图标激活,再次选择一个面后,获得相应的参数。
不知这是怎样实现的?
作者: Afang    时间: 2005-11-14 09:23
sel_cb就可以实现的……

下面是设置sensitity的函数,subitem_index是从0开始计数的
          UF_STYLER_item_value_type_t data;

          data.item_attr = UF_STYLER_SENSITIVITY;
          data.item_id = item_id;
                       data.subitem_index =subitem_ index;
          data.value.integer = sense_value;
                       UF_STYLER_set_value ( dialog_id, &data )




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3