Revit二次开发之使用LINQ查询元素过滤集合里的元素【比目鱼原创】
=========【更多高级应用请关注公众号】========
===================================
元素过滤器的使用方式:
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查询元素过滤集合里的元素【比目鱼原创】相关推荐
- Revit二次开发之判断一个族实例是否基于面创建【比目鱼原创】
=========[更多高级应用请关注公众号]======== =================================== Revit中有些族是不基于面创建,有些族是基于面创建(如环形吸顶 ...
- Revit二次开发之快速过滤与慢速过滤【比目鱼原创】
Revit API 提供 FilteredElement Collector类来过滤文档的元素,该类提供多种预定义方法对元素进行过滤,这些预定义方法都继承自ElementFilter. 需要注意到是E ...
- Revit二次开发_1.过滤器笔记篇
Revit二次开发_1.过滤器笔记篇 前言 对象分类 过滤方法 前言 最近在用过滤器功能,先按照教程做了筛选墙,再自己做了筛选常规模型的功能,发现有点不一样,问题在于筛选这些Elements的时候没弄 ...
- Revit二次开发——引用dynamo中的几何库
前沿 dynamo的几何库其实是非常强大的,如果自己靠着RevitAPI去写还是非常费劲的.所以想引用dynamo的几何库来做一些工作.主要参考的就是这篇文章.Revit二次开发--不开启Dynamo ...
- Revit二次开发入门相关安装和配置
Revit二次开发入门相关安装和配置 最近一周,由于项目需要,需要做一个基于Revit的二次开发项目,也特意初步自学了Revit二次开发的相关知识.由于学习时间过短,了解到的只是皮毛,所有还希望大家能 ...
- revit二次开发——如何选取元素(revit2016)
revit二次开发--如何选取元素(revit2016) 这是我在网上和书中比较写出的代码,可能不是太成熟,希望大家多多指教 using System; using System.Collection ...
- Revit二次开发之按照标高过滤元素
Revit二次开发之按照标高过滤元素 之前群里有朋友问怎么过滤特定标高的元素,当时有人回答先都过滤出来,然后遍历判断相应的标高参数来找出特定标高的元素.今天在看书的时候看到了一个可以过滤特定标高元素的 ...
- Revit二次开发---关于CAD翻模第一步
2019年6月6日,南京,暴雨. 笔者改善以前关于翻模的一些想法,以减少对翻模图纸的初步处理. 以前使用使用直接链接CAD的方法生成各种三维模型.链接进来的CAD图纸需要处理,且文字读取较为困难,故使 ...
- Revit二次开发学习笔记
Revit二次开发学习笔记1 20220314: 概念:Application与Document 接口函数:IExternalCommand.ActiveView与Selection 20220316 ...
最新文章
- 个人建议:设置Alt+S快捷键来控制VSCode自动保存切换功能
- html工具提示错误,HTML-KickStart工具提示错误
- 移动互联网教育领域或将出现新的风口?
- ML之FE:数据处理—特征工程之稀疏特征的简介、如何处理、案例应用之详细攻略
- 用python读取股票价格_使用Python写一个量化股票提醒系统
- 今天,“场景赋能•驱动有数”,神策数据 2018 数据驱动大会在京成功举办
- ajax 与route的区别,浅析vue-router jquery和params传参(接收参数)$router $route的区别
- java 多重注解_Java注解-元数据、注解分类、内置注解和自定义注解
- 红橙Darren视频笔记 自定义RatingBar touch事件学习 dp转px listener监听
- sql select 输出多行_SQL复杂查询
- python实现根据excel内容批量生成二维码
- 最新百度网盘下载神器,免安装、免登录、不限速!一键打开网址就能用
- matlab神经网络训练精度,关于提高MATLAB神经网络精度的问题
- Nutch爬虫爬取视频研究文档
- 准备买笔记本电脑了.
- 极限学习机(Extreme Learning Machine)ELM
- 使用Leaflet绘制上海地铁地图
- 【转载】MATLB绘图
- SpringCloud Netfilx全家桶+ Alibaba(nacos、sentinel、seata) 快速配置,快速启动
- java求公式例题_JAVA经典算法40题
热门文章
- 王者荣耀维修服务器5月7日,《王者荣耀》5月7日体验服停机更新公告
- XAML形状转CSS
- SpringCloud 中使用HikariPool 报错Possibly consider using a shorter maxLifetime value
- spring自动装配Bean的五种方式
- win10+php+com组件,分享Win10系统打不开COM组件提示错误代码80040154的解决方法
- 我的达梦DCA培训小记
- 探究前端的跑马灯效果是如何用css实现的
- 闭关修炼(二)线程安全问题
- gentoo 画框架图,流程图
- Some thoughts on Recommendation System