=========【更多高级应用请关注公众号】========

===================================

元素过滤器的使用方式:

FilteredElementCollector collection = new FilteredElementCollector(RevitDoc);
ElementFilter filter = new ElementCategoryFilter(BuiltInCategory.OST_StackedWalls);
collection.OfClass(typeof(Wall)).WherePasses(filter);
ICollection<ElementId> foundIds = collection.ToElementIds(); 

FilteredElementCollector提供了一系列的方法,允许用户设置査询和过滤所需的元素集:
•通用方法WherePasses(),在收集器中应用单一的ElementFilter。该方法可以在结果中重复使用来增加不同的过滤器(filter)。
•快捷方法,比如ofClass(),ofCategoryId(),ownedByView()。
•并集、交集等运算-方法,比如UnionWith()和IntersectWith()。
这些方法返回收集器本身,并允许不同的过滤器链式调用。

过滤完后可以用两种方式取出所需元素:

方法①:foreach

FilteredElementCollector collector = new FilteredElementCollector(m_doc); // 查询并遍历文档中所有的Level
collector.WherePasses(new
ElementCategoryFilter(BuiltInCategory.OST_Levels)).WhereElementIsNotElementType();
foreach(Level level in collector)
{ TaskDialog.Show("Level Name", level.Name);
} 

方法②:LINQ

FilteredElementCollector collector = new FilteredElementCollector(m_doc); // 首先使用一个内建的过滤器来减少后面使用LINQ查询的元素数量
collector.WherePasses(new ElementCategoryFilter(BuiltInCategory.OST_Levels)); // LINQ查询:找到名字为"Level 1"的标高
var levelElements = from element in collector where element.Name == "Level 1" select element;
List<Autodesk.Revit.DB.Element> levels = levelElements.ToList<Autodesk.Revit.DB.Element>(); ElementId level1Id = levels[0].Id; 

Revit二次开发之使用LINQ查询元素过滤集合里的元素【比目鱼原创】相关推荐

  1. Revit二次开发之判断一个族实例是否基于面创建【比目鱼原创】

    =========[更多高级应用请关注公众号]======== =================================== Revit中有些族是不基于面创建,有些族是基于面创建(如环形吸顶 ...

  2. Revit二次开发之快速过滤与慢速过滤【比目鱼原创】

    Revit API 提供 FilteredElement Collector类来过滤文档的元素,该类提供多种预定义方法对元素进行过滤,这些预定义方法都继承自ElementFilter. 需要注意到是E ...

  3. Revit二次开发_1.过滤器笔记篇

    Revit二次开发_1.过滤器笔记篇 前言 对象分类 过滤方法 前言 最近在用过滤器功能,先按照教程做了筛选墙,再自己做了筛选常规模型的功能,发现有点不一样,问题在于筛选这些Elements的时候没弄 ...

  4. Revit二次开发——引用dynamo中的几何库

    前沿 dynamo的几何库其实是非常强大的,如果自己靠着RevitAPI去写还是非常费劲的.所以想引用dynamo的几何库来做一些工作.主要参考的就是这篇文章.Revit二次开发--不开启Dynamo ...

  5. Revit二次开发入门相关安装和配置

    Revit二次开发入门相关安装和配置 最近一周,由于项目需要,需要做一个基于Revit的二次开发项目,也特意初步自学了Revit二次开发的相关知识.由于学习时间过短,了解到的只是皮毛,所有还希望大家能 ...

  6. revit二次开发——如何选取元素(revit2016)

    revit二次开发--如何选取元素(revit2016) 这是我在网上和书中比较写出的代码,可能不是太成熟,希望大家多多指教 using System; using System.Collection ...

  7. Revit二次开发之按照标高过滤元素

    Revit二次开发之按照标高过滤元素 之前群里有朋友问怎么过滤特定标高的元素,当时有人回答先都过滤出来,然后遍历判断相应的标高参数来找出特定标高的元素.今天在看书的时候看到了一个可以过滤特定标高元素的 ...

  8. Revit二次开发---关于CAD翻模第一步

    2019年6月6日,南京,暴雨. 笔者改善以前关于翻模的一些想法,以减少对翻模图纸的初步处理. 以前使用使用直接链接CAD的方法生成各种三维模型.链接进来的CAD图纸需要处理,且文字读取较为困难,故使 ...

  9. Revit二次开发学习笔记

    Revit二次开发学习笔记1 20220314: 概念:Application与Document 接口函数:IExternalCommand.ActiveView与Selection 20220316 ...

最新文章

  1. 个人建议:设置Alt+S快捷键来控制VSCode自动保存切换功能
  2. html工具提示错误,HTML-KickStart工具提示错误
  3. 移动互联网教育领域或将出现新的风口?
  4. ML之FE:数据处理—特征工程之稀疏特征的简介、如何处理、案例应用之详细攻略
  5. 用python读取股票价格_使用Python写一个量化股票提醒系统
  6. 今天,“场景赋能•驱动有数”,神策数据 2018 数据驱动大会在京成功举办
  7. ajax 与route的区别,浅析vue-router jquery和params传参(接收参数)$router $route的区别
  8. java 多重注解_Java注解-元数据、注解分类、内置注解和自定义注解
  9. 红橙Darren视频笔记 自定义RatingBar touch事件学习 dp转px listener监听
  10. sql select 输出多行_SQL复杂查询
  11. python实现根据excel内容批量生成二维码
  12. 最新百度网盘下载神器,免安装、免登录、不限速!一键打开网址就能用
  13. matlab神经网络训练精度,关于提高MATLAB神经网络精度的问题
  14. Nutch爬虫爬取视频研究文档
  15. 准备买笔记本电脑了.
  16. 极限学习机(Extreme Learning Machine)ELM
  17. 使用Leaflet绘制上海地铁地图
  18. 【转载】MATLB绘图
  19. SpringCloud Netfilx全家桶+ Alibaba(nacos、sentinel、seata) 快速配置,快速启动
  20. java求公式例题_JAVA经典算法40题

热门文章

  1. 王者荣耀维修服务器5月7日,《王者荣耀》5月7日体验服停机更新公告
  2. XAML形状转CSS
  3. SpringCloud 中使用HikariPool 报错Possibly consider using a shorter maxLifetime value
  4. spring自动装配Bean的五种方式
  5. win10+php+com组件,分享Win10系统打不开COM组件提示错误代码80040154的解决方法
  6. 我的达梦DCA培训小记
  7. 探究前端的跑马灯效果是如何用css实现的
  8. 闭关修炼(二)线程安全问题
  9. gentoo 画框架图,流程图
  10. Some thoughts on Recommendation System