iCAx开思工具箱

标题: 【求助】为何不能选择 [打印本页]

作者: zizi    时间: 2004-9-9 15:33
标题: 【求助】为何不能选择
在UIStyler对话框的回调函数里面添加UF_UI_select_with_single_dialog()的代码,编译通过,但为什么不能选择显示的实体呢?
作者: tari    时间: 2004-9-9 16:05
是不是这个函数的参数设置有问题?
你把相关的源代码弄上来,大家看看
作者: wflying    时间: 2004-9-9 17:13
传上来你的代码看看,应该是参数设置的问题,我用了好多,都是可以的!
作者: zizi    时间: 2004-9-11 10:04
应该不是参数的问题,因为单独执行该函数可以进行选择,
问题出在点击按钮执行UF_UI_select_with_single_dialog()时,UG里的模型不能被选择。是加锁解锁的问题吗?
作者: zizi    时间: 2004-9-12 09:53
怎么这么冷清啊。呜。。呜。。。
请问wflying ,这里你用了加锁吗?清华那本书上说这里可以不加的啊?
  
  
作者: zizi    时间: 2004-9-12 09:54
怎么这么冷清啊。呜。。呜。。。
请问wflying ,这里你用了加锁吗?清华那本书上说这里可以不加的啊?
  
作者: Maik    时间: 2004-9-12 11:36
你的代码
作者: tari    时间: 2004-9-12 13:43
你不把代码发上来,我们很难发现什么
作者: wflying    时间: 2004-9-12 15:54
怎么这么冷清啊。呜。。呜。。。  
请问wflying ,这里你用了加锁吗?清华那本书上说这里可以不加的啊?

  
我从来都没有用过加锁和解锁!你在点击的按钮后,是不是没有弹出选择对话框?如果没有,请将你程序里对应按钮的那个"0"改成"1".
作者: zizi    时间: 2004-9-13 10:46
点击后弹出对话框了啊,就是不能选择
代码如下
int SJ2_select_single_featrue_act_cb ( int dialog_id,
             void * client_data,
             UF_STYLER_item_value_type_p_t callback_data)
{
   
  
  char    cue[] = "选择特征";
    char    title[] = "选择特征";
  
    double  cursor[3];
  int     err = 0;
  char    err_msg[MAX_LINE_SIZE+1];
  char    buffer[UF_UI_MAX_STRING_LEN+1];
    
    int     count_1=0;
  tag_t   part;
    tag_t   feature;
    tag_t   object, view;
    char    *feature_name = NULL;
    int     response;
    int     curr_part, num_parts;
    int     type;
  
     /* Make sure User Function is available. */   
     if ( UF_initialize() != 0)  
          return ( UF_UI_CB_CONTINUE_DIALOG );
  
  /* ---- Enter your callback code here ----- */
  
      uc1601("请用鼠标或输入特征名称选择加工特征",1);
    num_parts = UF_PART_ask_num_parts();
  for ( curr_part=0 ; curr_part < num_parts ; curr_part++ )
  {
    part = UF_PART_ask_nth_part( curr_part );
    type = UF_feature_type;
    feature = NULL_TAG;
    UF_OBJ_cycle_objs_in_part( part, type, [$feature )]
  UF_CALL(UF_UI_open_listing_window());
    uc4403("您选择的是:");
  
    while ( feature != NULL_TAG )
    {
    
      count_1++;
     
        
     if(!UF_CALL(UF_UI_select_with_single_dialog(cue,title,
                   UF_UI_SEL_SCOPE_NO_CHANGE, init_proc, NULL,
                   &response, &object, cursor, &view)))
     {
        if (response == UF_UI_OBJECT_SELECTED ||  
            response == UF_UI_OBJECT_SELECTED_BY_NAME)
        {
           err = UF_MODL_ask_feat_name(object,[$feature_name)]
           if(err)
       {
            UF_get_fail_message(err,err_msg);
            sprintf(buffer, "Error: %s\n", err_msg);
            UF_UI_write_listing_window(buffer);
       }
        
        uc4403("\n");
            UF_UI_write_listing_window(feature_name);
            UF_free(feature_name);
  
        }
        /* unhighlight selected object */
        UF_DISP_set_highlight(object,0);
        if (response == UF_UI_CANCEL) break;
  
  }
  
    /* else
     {
       UF_terminate();
       return (UF_UI_CB_CONTINUE_DIALOG);
     }*/
           
      UF_OBJ_cycle_objs_in_part( part, type, [$feature )]
    }
}  
  
     UF_terminate ();
  
    /* Callback acknowledged, do not terminate dialog */
   return (UF_UI_CB_CONTINUE_DIALOG);  
    
    /* or Callback acknowledged, terminate dialog.    */
     /*return ( UF_UI_CB_EXIT_DIALOG ); */              
  
}
  
static int filter_cb(
    tag_t object,
    int type[3],
    void *user_data,
    UF_UI_selection_p_t select)
{
    int face_type;
   if(UF_CALL(UF_MODL_ask_body_type(object,&face_type)))
        return (UF_UI_SEL_REJECT);
  
         if (face_type == 16||face_type == 17||face_type == 18||face_type == 22
       ||face_type == 23||face_type == 43)
         {
             return (UF_UI_SEL_ACCEPT);
         }
         else
         {
             return (UF_UI_SEL_REJECT);
         }
   
}
/*selection initialization procedure*/
static int init_proc(
    UF_UI_selection_p_t select,
    void *user_data)
{
  
    if((UF_CALL(UF_UI_set_sel_procs(select,
                                    filter_cb,
                                    NULL,
                                    user_data))) == 0)
    {
        return (UF_UI_SEL_SUCCESS);
    }
    else
    {
        return (UF_UI_SEL_FAILURE);
    }
  
}
作者: tari    时间: 2004-9-13 20:22
我对二次开发不是很熟,这句UF_CALL(UF_MODL_ask_body_type(object,&face_type))?是不是拼写错了
        
作者: wflying    时间: 2004-9-13 21:40
你把init_proc改成NULL试试?
作者: zizi    时间: 2004-9-14 11:13
谢谢两位!
我把init_proc改成NULL,运行UG,选择出现Error: Feature tag is invalid
不知该改哪个地方了
作者: tari    时间: 2004-9-14 18:02
UF_MODL_ask_feat_name(object,[$feature_name)] ?只能选择object吧,不能选择feature吧




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