丿僦湜灬禧歡沵 发表于 2015-12-3 13:55:58

工程图模式下用UF_UI_select_with_single_dialog()选不中?

UG二次开发问题:我在建模环境下用UF_UI_select_with_single_dialog()没问题,在工程图模式下用UF_UI_select_with_single_dialog()却选不中点线面,是什么原因??困挠了好多天,请大神帮忙解决一下,非常感谢。……
      tag_t object,view;
      char cue[] = "select object ";
      int scope = UF_UI_SEL_SCOPE_WORK_PART;//UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY,UF_UI_SEL_SCOPE_WORK_PART
      char part_fspec [ MAX_FSPEC_SIZE+1 ];
      intresponse;
      double cursor;
      tag_t part_tag;
      CString infro;

      UF_UI_select_with_single_dialog(cue,"select the edge",scope, UF_UI_sel_edge, NULL, &response, &object, cursor, &view );
      if (response == UF_UI_OBJECT_SELECTED ||
                response == UF_UI_OBJECT_SELECTED_BY_NAME)
      {
                UF_DISP_set_highlight(object,0);
                UF_MODL_update();
      }
static int UF_UI_sel_edge(UF_UI_selection_p_t select, void * user_data)
{
      UF_UI_mask_tmask_triples[] = {UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_EDGE};
      if (UF_CALL(UF_UI_set_sel_mask(select,UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,1,mask_triples))==0)
      {
                return (UF_UI_SEL_SUCCESS);
      }
      else
      {
                return (UF_UI_SEL_FAILURE);
      }
}

丿僦湜灬禧歡沵 发表于 2015-12-3 14:36:31

难道我过滤错了?没人回答?……。自己顶下啊

15757753770 发表于 2016-12-12 12:22:04

int viewview=1;
UF_UI_ask_cursor_view(&viewview);//获得你选择的视图范围类型0 = Any view,1 = Work view


UF_UI_set_cursor_view(0);//可以选择“图纸上视图”里的对象
UF_UI_set_cursor_view(1);//可以选择“工作视图”里的对象

————————————————————————————————————————
列子选择视图里的直线边缘

#include <uf_drf.h>
#include <uf_obj.h>
#include <uf_curve.h>
#include <uf_csys.h>
#include <uf_modl.h>


//设置选择的实体类型
static int init_proc( UF_UI_selection_p_t select, void *user_data )
{
interrorCode   = 0;

intnum_triples = 1; //选择类型数量
UF_UI_mask_t mask_triples[] = {UF_solid_type,UF_solid_edge_subtype,2};//选择类型

/*
UF_UI_SEL_MASK_ENABLE_ALL 所有面具类型
UF_UI_SEL_MASK_ENABLE_SPECIFIC面具使特定的
UF_UI_SEL_MASK_DISABLE_SPECIFIC 面具禁用特定
UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC 面具清晰和启用特定
UF_UI_SEL_MASK_ALL_AND_DISABLE_SPECIFIC 面具和禁用特定
*/
errorCode = UF_UI_set_sel_mask(select,
                                UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,
                                                           num_triples, mask_triples);
if( errorCode == 0)
{
return UF_UI_SEL_SUCCESS;
}
else
{
return UF_UI_SEL_FAILURE;
}
}



/* TODO: Add your application code here */

char *message="梅雷提示!请选择视图边缘。";
char *title="梅雷-QQ1821117007";
intscope=UF_UI_SEL_SCOPE_WORK_PART;//选取范围
/*
   scope=UF_UI_SEL_SCOPE_NO_CHANGE;         //选取范围没有变化
   scope=UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY;   //选取范围在组装
   scope=UF_UI_SEL_SCOPE_WORK_PART;         //选取范围是工作部分
   scope=UF_UI_SEL_SCOPE_WORK_PART_AND_OCC; //选取范围是工作部分和OCC
*/
intresponse;
tag_t object_tag;
doublecursor={0.0};
tag_t view=NULL_TAG;

UF_UI_lock_ug_access (UF_UI_FROM_CUSTOM);加锁
UF_UI_set_cursor_view(0);//0 = Any view,1 = Work view (0可以选择“图纸上视图”里的对象)
UF_UI_select_with_single_dialog(message,title,scope,init_proc,NULL,&response,&object_tag,cursor,&view);//选择框】
UF_UI_set_cursor_view(1);//0 = Any view,1 = Work view (0可以选择“图纸上视图”里的对象)
UF_DISP_set_highlight(object_tag,0); //1高亮显示 0不高亮显示
UF_UI_unlock_ug_access (UF_UI_FROM_CUSTOM);//解锁


if (response==UF_UI_OBJECT_SELECTED)
{
char view_name="";
UF_OBJ_ask_name(view, view_name); //获得视图名称
uc1601(view_name,1);
}
页: [1]
查看完整版本: 工程图模式下用UF_UI_select_with_single_dialog()选不中?