Revit二次开发小白学习笔记7——Revit元素过滤器

本文主要介绍了FilteredElementCollector收集过滤器,包括其创建方式,如根据文档、Id集合、视图创建。还阐述了常用方法,如OfCategory()、OfClass()、WherePasses()等,以及这些方法的单独使用、组合应用,还介绍了使用List和View筛选对象的方式。

1.说明

1.1收集过滤器:FilteredElementCollector【Ctrl+D可以复制行】

  • 收集全部元素:FilteredElementCollector(Documnet document)
  • 根据指定的Id集合:FilteredElementCollector(Documnet document,Listids)
  • 根据指定的视图:FilteredElementCollector(Documnet document,ElementId viewId)

1.2.FilteredElementCollector常用方法

  • 通过类型:OfCategory()、OfCategoryId()
  • 通过类:OfClass()
  • 通过WherePasses()

2.FilteredElementCollector三种方法

//方法1:抓取文档内所有要素
FilteredElementCollector elementCollector1 = new FilteredElementCollector(document);

//方法2:通过ElementId列表,抓取要素
List<ElementId> ids = new List<ElementId>(); 
FilteredElementCollector elementCollector2 = new FilteredElementCollector(document,ids);            

//方法3:抓取某一视图(标高1)中所有要素
ElementId viewId = null;
FilteredElementCollector elementCollector3 = new FilteredElementCollector(document,viewId);

3.FilteredElementCollector的OfCategory()、OfCategoryId()方法

通过族的ID或者标识,筛选当前收集过滤器中对应的族类型和实例

3.1.FilteredElementCollector的OfCategoryId()

//抓取文档内所有要素
FilteredElementCollector elementCollector1 = new FilteredElementCollector(document);
//抓取族类型和族实例
IList<Element> elements1 = elementCollector1.OfCategoryId(new ElementId(-2000023)).ToElements();
StringBuilder stringBuilder1 = new StringBuilder();
//将会显示与族Id-2000023对应的所有族类型和族实例
foreach (Element item in elements1)
{
   
      
    stringBuilder1.AppendLine("抓取对象:\t\t" + item.Name + "   " + item.Id);    
}
TaskDialog.Show("提示",stringBuilder1.ToString());

3.2.FilteredElementCollector的OfCategory()

//抓取文档内所有要素
FilteredElementCollector elementCollector1 = new FilteredElementCollector(document);
//抓取族类型和族实例
IList<Element> elements2 = elementCollector1.OfCategory(BuiltInCategory.OST_Doors).ToElements();
StringBuilder stringBuilder2 = new StringBuilder();
//将会显示与族【OST_Doors】对应的所有族类型和族实例
foreach (Element item in elements2)
{
   
      
    stringBuilder2.AppendLine("抓取对象:\t\t" + item.Name + "   " + item.Id);    
}
TaskDialog.Show("提示",stringBuilder2.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ping_Kingzero

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值