高级过滤函数的使用

也可以参考:NX二次开发-选择对象控件过滤-Simcenter Nastran software-噪声震动分析-软服之家

和NX二次开发(C#)-UIStyler-通过AddFilter()给选择对象设置过滤 - 知乎

//设置过滤
Selection::SelectionAction action = Selection::SelectionActionClearAndEnableSpecific;
std::vectormaskArray(1); //括号内数字:maskArray数组大小(有多少种选择就写多少)
maskArray[0] = Selection::MaskTriple(UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_FACE);  //面
selection0->GetProperties()->SetSelectionFilter("SelectionFilter", action, maskArray);
                 
//当使用多类对象选择时 以下数组递增即可!
//maskArray[0] = Selection::MaskTriple(UF_solid_type, UF_all_subtype, 2);  //直边
//maskArray[0] = Selection::MaskTriple(UF_solid_type, UF_all_subtype, 3);  //圆弧边
//maskArray[0] = Selection::MaskTriple(UF_point_type, 0, 0);  //点
//maskArray[0] = Selection::MaskTriple(UF_line_type,0,0);       //直线
//maskArray[0] = Selection::MaskTriple(UF_circle_type, 0, 0);  //圆弧线
//maskArray[0] = Selection::MaskTriple(UF_spline_type, 0, 0);  //不规则曲线
//maskArray[0] = Selection::MaskTriple(UF_conic_type, UF_cone_subtype, 0);  //圆锥面
//maskArray[0] = Selection::MaskTriple(UF_cylinder_subtype, 0, 0);  //圆柱面
//maskArray[0] = Selection::MaskTriple(UF_sphere_subtype, 0, 0);   //球面/R面
//maskArray[0] = Selection::MaskTriple(UF_component_type,0,0);   //组件
//maskArray[0] = Selection::MaskTriple(UF_drafting_entity_type,0,0);  //制图对象
//maskArray[0] = Selection::MaskTriple(UF_datum_plane_type,0,0);     //基准面类型
//maskArray[0] = Selection::MaskTriple(UF_datum_axis_type,0,0);       //基准轴类型
//maskArray[0] = Selection::MaskTriple(UF_coordinate_system_type,0,0);  //坐标系类型//maskArray[0] = Selection::MaskTriple(UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_PLANAR_FACE);  //平面
//

Selection::SelectionAction action = Selection::SelectionActionClearAndEnableSpecific;
std::vector maskArray(1);
maskArray[0] = Selection::MaskTriple(UF_solid_type, UF_solid_body_subtype, 0); // 实体和片体	
selection0->GetProperties()->SetSelectionFilter("SelectionFilter", action, maskArray);
maskArray[0]=Selection::MaskTriple(UF_solid_type, UF_solid_body_subtype, UF_UI_SEL_FEATURE_SOLID_BODY);//实体
//maskArray[0]=Selection::MaskTriple(UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_CYLINDRICAL_FACE);//圆柱面
//maskArray[0]=Selection::MaskTriple(UF_solid_type, UF_solid_body_subtype, UF_UI_SEL_FEATURE_SHEET_BODY);//片体
maskArray[0] = Selection::MaskTriple(UF_solid_type, UF_solid_body_subtype, UF_UI_SEL_FEATURE_SOLID_BODY); // 实体
maskArray[0] = Selection::MaskTriple(UF_solid_type, UF_solid_body_subtype, UF_UI_SEL_FEATURE_SHEET_BODY); // 片实体
maskArray[0] = Selection::MaskTriple(UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_FACE); // 面	
maskArray[0] = Selection::MaskTriple(UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_EDCE); // 边	
maskArray[0] = Selection::MaskTriple(UF_component_type, 0, 0); // 组件	
maskArray[0] = Selection::MaskTriple(UF_line_type, 0, 0); // 线	
maskArray[0] = Selection::MaskTriple(UF_drafting_type, 0, 0); // 制图对象	

通过filter_cb回调函数,根据条件判断,返回相应的值来确定是否可以选中

高级过滤函数的使用_第1张图片

你可能感兴趣的:(NX二次开发常用函数,NX二次开发常用函数)