Revit如何通过过滤器获取元素

今天小编给大家分享一下Revit如何通过过滤器获取元素的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

我们提供的服务有:网站设计制作、成都做网站、微信公众号开发、网站优化、网站认证、下冶ssl等。为近千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的下冶网站制作公司

获得元素的办法:

1、创建一个收集器(Collector)

FilteredElementCollector fil = new FilteredElementCollector(doc);

这里举个栗子:

你妈刚从超市买了过年要吃的蚕豆和绿豆,结果被你个混小子打破袋子,全都掉在地上混在一起,你妈要你马上给她整理好,你天资聪慧不想一颗一颗去捡,想了一个好办法就是用筛子筛选出来,那么我们要先把散落在地上的大豆和绿豆用簸箕扫起来,收集器在这里就是簸箕的作用,把散落在doc的构件收集起来装在fil这个容器里。

2、创建一个过滤器

ElementClassFilter el = new ElementClassFilter(typeof(Wall));(类过滤器)

过滤器就是我们的筛子,可以用来筛选蚕豆和绿豆,留下你想要的。当然筛子的种类有多种多样,我们的API同样提供了多种筛子。

ElementCategoryFilter eld = new ElementCategoryFilter(BuiltInCategory.OST_Doors);(类别过滤器)

过滤好了以后,要拿出来你需要的东西,那么我们需要进行获取。

(1)调用 fil.WherePasses( );

  fil.WherePasses(el);这样我们就获取了收集器fil中的墙的类型。

          fil2.WherePasses(el2);我们获取了收集器fil2里的所有的门。

         有些人可能会有疑问,或者会犯这种错误:在同一个收集器里调用两次.WherePasses( ),这会造成一个问题你所取得的构件是0个。因为收集器你筛选一遍获得墙之后,你再去筛选就只剩下墙了,你不可能再去筛选出来门。可你能从墙里再筛选出来叠层墙。这就像你在猪圈里能找到猪,在猪里能找到小黑猪,但你肯定找不到驴,是一个道理。(可能比喻不够恰当,但就是这个理。)

(2)利用逻辑过滤器

  ElementClassFilter el = new ElementClassFilter(typeof(FamilyInstance));(过滤出族实例)

            ElementCategoryFilter eld = new ElementCategoryFilter(BuiltInCategory.OST_Windows);(过滤出窗户)

            利用逻辑过滤器来过滤族实例里的窗户:

            LogicalAndFilter door = new LogicalAndFilter(el, eld);

(3)of的简便方法

利用of来获取墙:

  fil.OfClass(typeof(Wall));

利用of来获取窗户:

  fil.OfClass(typeof(FamilyInstance)).OfCategory(BuiltInCategory.OST_Windows);

以上就是“Revit如何通过过滤器获取元素”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注创新互联行业资讯频道。


当前文章:Revit如何通过过滤器获取元素
当前地址:http://pcwzsj.com/article/pcgsdj.html