温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2022-03-18 13:56:58 来源:亿速云 阅读:84 作者:iii 栏目:大数据

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

获得元素的办法:

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如何通过过滤器获取元素”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI