方法一:
第一步:在生成的代码模板中的实例构造函数中添加以下代码:
theDialog.AddFilterHandler(new NXOpen.BlockStyler.BlockDialog.Filter(filter_cb));
第二步:在代码模板中的类里写一个构造函数(与apply_cb等同级)
public int filter_cb(UIBlock selectionBlock, TaggedObject selectedObject)
{
try
{
if (selectionBlock == face_select03)/*face_select03表示需要添加过滤器的控件*/
{
if (is_perp == 1/*筛选条件*/)
{
return UFConstants.UF_UI_SEL_ACCEPT;
}
else
{
return UFConstants.UF_UI_SEL_REJECT;
}
}
else{
//添加其他需要添加过滤器的控件
}
return UFConstants.UF_UI_SEL_ACCEPT;
}
catch (Exception ex)
{
//---- Enter your exception handling code here
}
return (NXOpen.UF.UFConstants.UF_UI_SEL_ACCEPT);
}
方法二:
第一步,设置maskTriple
Selection.MaskTriple[] maskTriples = new Selection.MaskTriple[2];
//过滤器设置为只能选择单个面
maskTriples[0] = new Selection.MaskTriple(UFConstants.UF_solid_type, UFConstants.UF_all_subtype, UFConstants.UF_UI_SEL_FEATURE_ANY_FACE);
第二步:设置控件
face_select02.GetProperties().SetSelectionFilter("SelectionFilter",Selection.SelectionAction.AllAndDisableSpecific,maskTriples);