Revit二次开发——过滤器

UIApplication uiapp = commandData.Application;
UIDocument uidoc = uiapp.ActiveUIDocument;
Document doc = uidoc.Document;

综述:

 FilterElementCollector  collector =new FilterElementCollector(doc);  //*收集器必须重要

 WherePasses(),ofClass(),ofCategory()                                                     //*判断条件

 IList<Element> WallList = new FilteredElementCollector(doc).OfClass(typeof(FamilyInstance)).OfCategory(BuiltInCategory.OST_Walls).ToElements();

总结方法:

1.收集ElementType类型的元素——宏观把控
            FilteredElementCollector collector = new FilteredElementCollector(doc);
            ElementIsElementTypeFilter  elementfilter = new ElementIsElementTypeFilter();
            IList<Element>  elementlist = collector.WherePasses(elementfilter).ToElements();

2.收集两种或两种以上的类型的元素——二次宏观把控

            LogicalOrFilter 和 LogicalAndFilter ——逻辑过滤器

            ElementCategoryFilter filter1 = new ElementCategoryFilter(BuiltInCategory.OST_Walls);
            ElementCategoryFilter filter2 = new ElementCategoryFilter(BuiltInCategory.OST_Windows);
            LogicalOrFilter logicalorfilter = new LogicalOrFilter(filter1,filter2);
IList<Element> elementlist = new                    FilteredElementCollector(doc).OfClass(typeof(FamilyInstance)).WherePasses(logicalorfilter).ToElements();

3.收集单个类型对象的元素——细节把控

            FilteredElementCollector collector = new FilteredElementCollector(doc);
            ElementIsElementTypeFilter  familyinstancefilter = new ElementIsElementTypeFilter(FamilyInstance);
            IList<Element>  elementlist = collector.WherePasses(familyinstancefilter ).ToElements();

4.收集多个类型对象元素——多细节把控

            Type[] elementTypes = { typeof(Wall), typeof(FamilyInstance), typeof(Floor) };   //*多种类型设置
             List<ElementFilter> elementFilters = new List<ElementFilter>();//*过滤器种类
             foreach (Type elemType in elementTypes)//*添加那几种过滤器
              {
               ElementClassFilter elementClassFilter = new ElementClassFilter(elemType);
               elementFilters.Add(elementClassFilter);
              }
              LogicalOrFilter logicalOrFilter = new LogicalOrFilter(elementFilters);//*逻辑过滤器 该过滤器适合两种及以上的类型
              FilteredElementCollector collector = new FilteredElementCollector(doc);
              TransElements = collector.WherePasses(logicalOrFilter).ToElements();

 

 群:1090519856

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值