1. Door在Revit里面的element类型是FamilyInstance。 
2. Door在Revit里面的category类型是OST_Doors。 
3. 想要过滤特定类型的element需要ElementClassFilter。 
4. 想要过滤特定类型的category需要ElementCategoryFilter。 
5. 想要让两种类型的filter同时起作用需要LogicalAndFilter。 
6. 找到文档(Document)里的element需要FilteredElementCollector,可以将其认为是文档中element的管理器。 
7. 将filter传递给FilteredElementCollector即可得到所有能够通过filter的element。

Demo:

 public ICollection<Element> CreateDoorFilter(Autodesk.Revit.DB.Document document)
{
// 找到当前项目中所有的 family instances,并且它们的 category 是 door。
// 创建 ElementClassFilter 过滤器用以获得所有的 FamilyInstance。
ElementClassFilter familyInstanceFilter = new ElementClassFilter(typeof(FamilyInstance)); // 创建 ElementCategoryFilter 过滤器用以获得所有的 OST_Doors。
ElementCategoryFilter doorsCategoryfilter = new ElementCategoryFilter(BuiltInCategory.OST_Doors); // 创建 logic And filter 将上面的两个过滤器合并。
LogicalAndFilter doorInstancesFilter = new LogicalAndFilter(familyInstanceFilter, doorsCategoryfilter); // 将上面的过滤器应用到当前活动的 document。
FilteredElementCollector collector = new FilteredElementCollector(document);
IList<Element> doors = collector.WherePasses(doorInstancesFilter).ToElements(); return doors;
}

revit api 使用过滤器的更多相关文章

  1. 【Revit API】梁构件支座检查算法

    一.前言         应该是第二次写关于Revit API的博文了.虽然在BIM企业中工作,从事桌面BIM软件开发,但是我是不怎么喜欢写Revit API相关的代码.平时更多的是在写界面展示,架构 ...

  2. Revit API 判断一个构件在某个视图中的可见性

    查看 Revit API.发现有Element::IsHidden这个方法.通过UI创建一个element,注意要使得这个element在某些视图可见,但是在另一些视图不可见.运行下面的方法,你会发现 ...

  3. Revit API 操作共享参数和项目参数

    1.获取共享参数 private string GetSharInfo(Autodesk.Revit.ApplicationServices.Application revitApp) { Strin ...

  4. Revit API射线法读取空间中相交的元素

    Revit API提供根据射线来寻找经过的元素.方法是固定模式,没什么好说.关键代码:doc.FindReferencesWithContextByDirection(ptStart, (ptEnd  ...

  5. Revit API 加载族并生成实例图元

    在Revit API中加载族可以使用Doc.LoadFamily方法,传入要加载的族文件路径名,但是这种方式有一种缺点,就是如果族文件在当前工程中没有加载的话则返回成功,如果已经加载过,则返回失败,也 ...

  6. Revit API通过相交过滤器找到与风管相交的对象。

    相交过滤器的应用,比几何相交法简便.Excluding剔除 //找到与风管相交的对象,通过相交过滤器. [TransactionAttribute(Autodesk.Revit.Attributes. ...

  7. Web APi之过滤器执行过程原理解析【二】(十一)

    前言 上一节我们详细讲解了过滤器的创建过程以及粗略的介绍了五种过滤器,用此五种过滤器对实现对执行Action方法各个时期的拦截非常重要.这一节我们简单将讲述在Action方法上.控制器上.全局上以及授 ...

  8. Web APi之过滤器创建过程原理解析【一】(十)

    前言 Web API的简单流程就是从请求到执行到Action并最终作出响应,但是在这个过程有一把[筛子],那就是过滤器Filter,在从请求到Action这整个流程中使用Filter来进行相应的处理从 ...

  9. [原创]java WEB学习笔记44:Filter 简介,模型,创建,工作原理,相关API,过滤器的部署及映射的方式,Demo

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

随机推荐

  1. dos命令:批处理

    批处理 一.call命令 1.介绍 从批处理程序调用另一个批处理程序. 2.语法 CALL [drive:][path]filename [batch-parameters] batch-parame ...

  2. chromium ⑤

    我们都知道chromium是用webkit完成页面显示的,   那么chromium是怎样集成和封装webkit的呢?   是怎样将webkit整合到自己的框架中,并将一个页面渲染出来的?   这篇我 ...

  3. usort 函数

    function getNameFromNumber($num){ // Used to figure out what the Excel column name would be for a gi ...

  4. ubantu清理垃圾文件操作

    安装的ubuntu 18.01 , 随着使用的时间变长,陆陆续续使用了不少的软件, 更新了不少的软件包. 导致了现在ubuntu 系统反应速度严重下降. 下面是几种清理linux系统下冗余垃圾的命令, ...

  5. python josn转换方法-字典

    python_json常用的方法 1. 什么是JSON? JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符 ...

  6. binarysearchtree

    public class binarytree<Value> { private Node root = null; private class Node{ private Value v ...

  7. For all entries in

    Today I read about a blog explaining very detailedly on how to correctly use the key words FOR ALL E ...

  8. 2019 flag

    学习 1.学会一种新的编程语言或脚本语言,并编写不少于十个应用 2.读5-8本其他学科书籍,(经济,心里学等) 3.坚持每个月最少更新8-10篇博客(技术,学习) 4.阅读并理解和应用两个开源lib ...

  9. Oracle client安装教程

    一.下载 下载地址:http://download.csdn.net/detail/qq_35624642/9773986 这是Oracle Instant Client的CSDN下载地址. 要注意第 ...

  10. help2man: can't get `--help' info from automake-1.15 Try `--no-discard-stderr' if option outputs to stderr Makefile:3687: recipe for target 'doc/automake-1.15.1' failed

    /********************************************************************** * help2man: can't get `--hel ...