Revit二次开发选择过滤器,SelectionFilter

过滤器分为选择过滤器与规则过滤器
规则过滤器可以看我之前写的这一篇文章:
Revit二次开发在项目中给链接模型附加过滤器

选择过滤器顾名思义就是可以将选择的构件ID集合传入并加入到视图过滤器中,有一些场景需要对某些构件进行过滤选择,但是没有共同的逻辑规则进行筛选的情况下可以选择使用选择过滤器.

下面是我的代码,增加了截面填充突然与实体填充样式设置的代码:

  var selectionFilter = SelectionFilterElement.Create(doc, "OutRange");
  selectionFilter.SetElementIds(targetElementIds);
            
  doc.ActiveView.AddFilter(selectionFilter.Id);

  var graphics = doc.ActiveView.GetFilterOverrides(selectionFilter.Id);
  graphics.SetCutBackgroundPatternColor(new Autodesk.Revit.DB.Color(255, 0, 0));
  graphics.SetCutBackgroundPatternId(PatternId(doc));
  graphics.SetCutForegroundPatternColor(new Autodesk.Revit.DB.Color(255, 0, 0));
  graphics.SetCutForegroundPatternId(PatternId(doc));
  doc.ActiveView.SetFilterOverrides(selectionFilter.Id, graphics);
  doc.ActiveView.SetFilterVisibility(selectionFilter.Id, true);
  

获取实体填充PatternId的方法一起传上来:

/// <summary>
///     获取实体填充ID
/// </summary>
/// <param name="document"></param>
/// <returns></returns>
private ElementId PatternId(Document document)
{
    var collector = new FilteredElementCollector(document);
    collector.OfClass(typeof(FillPatternElement));
    var fillPatternElement =
        collector.First(q => (q as FillPatternElement).GetFillPattern().IsSolidFill) as FillPatternElement;
    return fillPatternElement.Id;
}

选择过滤器(SelectionFilterElement Class)的API:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值