美文网首页
Revit过滤器

Revit过滤器

作者: _skyky | 来源:发表于2017-08-19 18:11 被阅读0次

视频连接v.bimcc.com/course/35/tasks

常用过滤器:过滤器、选择过滤器


一、过滤器

建立一个简单的过滤器实例。

在之前的类库中新建Class3.cs

1.前期的初始化,如图。

2.常用的东西

第一个是过滤后的元素收集器。

第二个是基于Class的过滤器。(class指的是C#中class的概念,如FamilyInstance、Family、FamilySymbol、Wall、Hosts等)

第三个是基于Category的属性的过滤器。

3.在API文档中可以看到收集器的使用方法

第一个是全文件搜索,第二个是全文件的可见元素搜索,第三个是在文档的ICollection集合中搜索。

这里一般用第一个构造方法。

FilteredElementCollector columCollection = new FilteredElementCollector(doc);

4.在API文档中看到过滤器的使用方法

这里用第一个构造方法。

通过查找api,可以看到BuiltInCategory是一个枚举类型,其中每一个Member对应了一种Category。

那怎么把Member和Category对应起来呢?

通过 lookup中的Snoop Current Selection

查看当前选中的FamilyInstance的Category属性。

其中Built-in category属性即为所要的值。

将其复制到代码中:

ElementCategoryFilter columFilter = new ElementCategoryFilter(BuiltInCategory.OST_StructuralColumns);

那么ClassFiter也是类似的方法

ElementClassFilter familyInstanceFilter = new ElementClassFilter(typeof(FamilyInstance));

这里为什么要 CategoryFilter和ClassFilter同时使用呢?

我们最后再讲。

5.将过滤器用到收集器上

columCollection.WherePasses(columFilter).WherePasses(familyInstanceFilter);

//还有一种简便的操作 columCollection.OfCategory(BuiltInCategory.OST_StructuralColumns); 这样不用定义categoryfilter

6.选中的操作

前面添加using Autodesk.Revit.UI.Selection;

//将过滤得到的图元转化为Id

IList<ElementId>elId = new List<ElementId>();

foreach (Element el in columCollection)

{

elId.Add(el.Id);

}

//将图元设置为选中状态

uidoc.Selection.SetElementIds(elId);  


最后生成的插件效果



回到前面的问题

为什么要 CategoryFilter和ClassFilter同时使用


以图中的混凝土柱400x400为例。

在模型中 混凝土柱familyInstance的BuiltInCategory 为OST_StructuralColumns

而项目浏览器中 400x400这个familysymbol的BuiltInCategory 同样为OST_StructuralColumns

而再上层 混凝土柱这个family familycategory中的BuiltInCategory也是 OST_StructuralColumns

所以 图中有8个familyInstance柱子 , 1个familysymbol ,1个family ,只用CategoryFilter过滤器的话会得到10个结果

可以添加测试代码如图

可以看到结果果然是10个。


二、逻辑过滤器

ElementLogicalFilter


其中包括两个过滤器 and和or

LogicalAndFilter
LogicalOrFilter

用法很简单,以and的构造为例

LogicalAndFilter doorInstancesFilter = new LogicalAndFilter(familyInstanceFilter, doorsCategoryfilter);//这里将两个过滤后的集合合并

将两个过滤器写在参数列表里就行了,其他的用法和过滤器相同。

逻辑过滤器用于提高效率,减少wherepasses次数。

三、快/慢速过滤器 ElementQuickFilter/ElementSlowFilter

Revit为了性能考虑只将一部分属性加载进内存。

过滤在内存中这部分属性的是快速过滤器,过滤其他属性的是慢速过滤器。

一般优先用快速过滤器,如果一定要用到慢速,则可以先用快速过滤器缩小过滤范围。


四、选择过滤器

在执行命令的过程中,让用户自行选择构件或构建集。

//创建 WallSelectionFilter 继承自ISelectionFilter 生成默认函数

//AllowElement函数中,添加选择判断部分

主函数部分如图,只有两行

插件运行结果如图。可以看到只能框选到"400x400"的FamilyInstance

相关文章

  • Revit二次开发 - 过滤器

    2.2选择过滤 2.2.1 选择过滤器 在Revit中,经常需要通过鼠标选择一个或多个构件,Revit API 提...

  • 过滤器

    过滤器分为过滤器和选择过滤器,主要用来批量选择Revit文档里的我们所需要的图元。 下面我们开始演示过程,首先建立...

  • Revit过滤器

    视频连接v.bimcc.com/course/35/tasks 常用过滤器:过滤器、选择过滤器 一、过滤器 建立一...

  • Revit过滤器

    1.过滤器 1.1ElementClassFilter​ElementClassFilter的作用是根据类,来过滤...

  • 05.Revit2016二次开发(基础篇)——访问element

    在Revit的项目中如果创建了好多的对象的情况下,若想选中特定的对象时,我们一般采用过滤器; 一、在工程中: 如图...

  • 问题:Revit样例文件的三维没有颜色

    问题:Revit样例文件中的默认三维空间没有颜色 问题原因:该三维视图应用了阶段化过滤器 解决方案:1.在视图属性...

  • Autodesk Revit Architecture 2019

    Autodesk Revit Architecture 2019标准教程revit建筑软件操作教程 Autodes...

  • revit漫游

    revit小白,项目报奖,需要准备几个revit漫游镜头。以最简单的一个镜头为例,记录revit漫游操作。镜头要求...

  • Revit速博插件「Extensions」免费下载附安装教程

    Revit Extensions 又称Revit速博插件包,是一款可以与Revit配套使用的增强工具包,这个插件包...

  • 参数化族其实没那么难

    Revit公式的应用 Revit中的公式为参数化建模提供了很大方便。那么关于revit中的公式,你知道的有多少呢?...

网友评论

      本文标题:Revit过滤器

      本文链接:https://www.haomeiwen.com/subject/redarxtx.html