作者:Jessesn
Revit: 图元与实例
这是系列教学【Rhino.Inside.Revit 中文手册】的第3章,在本章会介绍 Revit 中的图元与实例,介绍如何从 Revit 中参照图元至 Revit 以及如何利用 Grasshopper 来查询与筛选 Revit 中图元等。
参照图元
有很多方法选择各种类型的 Revit 图元,在本章我们将会讲解如何手动指定一个图元且将其参照至你的 Grasshopper 文件中, 后面的章节将详细地讲解更多参照图元的方法。
以选择的方式
鼠标右键点击运算器
Graphical Element 参数,然后从 Revit 中选择你所需要的图元至 Grasshopper 文件。
以图元 ID 方式
从 Revit 中读取图元的 ID 号,然后鼠标右键点击
Element 运算器,将读取到的 ID 号填入至 Manage Revit Element Collection 即可。

实例
实例是放置在 Revit 中的单个图像/几何图元,例如单个的墙或门,或其他类型的单一图元,作为 Revit 图元的子集, 实例会从其他类别或类型继承一系列参数,也可能包含仅限于当前实例中特有的一些属性参数。
查询筛选
Grasshopper 可以通过筛选运算器并依据多种不同的属性来选择特定的 Revit 图元,也可以组合多个不同的过滤器来进行一些复杂的挑选。
类别筛选
以选择类别的方式筛选所有的选择对象。
类型筛选
以选择类型的方式筛选所有选择对象,将运算器
Built-InCategories连接至
ElementTypePicker.
TypeFilter与
QueryElements 可以查询所有选择实例中的类型,例如您可以通过它们从选择实例中筛选指定类型的窗户,如图所示:
参数值筛选
您可以将
ParameterFilter 运算器与筛选规则(例如
GreaterOrEqualRule或
EqualsRule)结合使用,按照图元的参数值来筛选所需要图元。
运算器
ParameterFilter 用来从所选图元中筛选指定的参数值,筛选规则是对指定参数执行类型的比较。
Built-In Parameters 是最好的参数筛选方式,它还会在选择器中列举出该参数的附加详细信息。
筛选规则
筛选规则可以使用
ParameterFilter 运算器来对比数值,下面这个范例示范如何使用一个图元的数值来查找模型中具有相同参数值得其他图元。
楼层筛选
可使用
LevelFilter 运算器以楼层的方式筛选项目图元,如图所示:
如果需要指定楼层来筛选图元,最好使用
LevelsPicker 运算器,如下图所示:
API Class 筛选
还可以筛选 Revit API Class 名字的方式在项目中过滤图元, 这样既可以输入图元类别进行选择也可以类别字符串,如下图所示:
更多查询筛选工具
Filter Element
FilterElement 运算器会读取之前筛选的 Revit 图元,与筛选匹配图元进行对比,然后返回一个是否匹配的 Ture/False 的列表。
例如一组在
GraphicalElement 中预先筛选的图元,可以使用
Built-InCategories输入至
Filter Element 中进行筛选,
FilterElement 运算器将会返回一个包含 True/False 的列表,这样可以使用 CullPattern 运算器对原始图元进行筛选,如图所示:
Exclusion Filter
ExclusionFilter 运算器可以从查询结果中排除一组特定的图元,下面这个范例示范了如何从查询的所有墙体中剔除两个手动选择的墙,如图所示:
Exclusion Type Filter
ExcludeTypes 运算器可以从一个列表中排除筛选某些类型,它是利用 Revit API WhereElementIsNotElementType 来实现。
Bounding Box Filter
BoundingBoxFilter 是通过几何边框匹配 Revit 图元的方式来进行筛选,初始的几何对象既可以来自 Rhino 也可以是 Revit,输入参数包括:
Bounding Box (Geometry) - 用于查询边框方块对齐世界坐标;
Union (Boolean) - 是否合并所有目标边框方块;
Strict (Boolean) - 是否严格的包含图元;
Tolerance (Number) - 查询容差范围;
Inverted (Boolean) - 是否需要反转查询结果。
Intersects Brep Filter
IntersectsBrepFilter 用于筛选与 NURBS Brep 相交的图元。
Intersects Element
IntersectsElement 用于筛选与其他图元相交的图元。
Intersects Mesh Filter
IntersectsMeshFilter 用于筛选与 Rhino 网格对象相交的图元。
Design Option Filter
DesignOptionFilter 用于匹配属于指定设计选项的 Revit 图元。
Owner View Filter
OwnerViewFilter 用于筛选隶属于某一些指定视图的图元, 这个运算器通常与从模型返回视图选择器搭配使用,如图所示:
Phase Status Filter
PhaseStatusFilter 用于匹配给定阶段状态关联的图元, 可以使用鼠标右键找到阶段与状态,如图所示:
Selectable In View Filter
SelectableInViewFilter 用于将可选择的图元匹配至给定视图中。
组合查询筛选
Logical And Filter
可以使用
LogicalAndFilter 来合并所有的筛选工具,所有的图元都必须被筛选。
Logical Or Filter
使用
LogicalOrFilter 群组多个筛选工具,图元可以从输入的任何一个筛选工具进行过滤。
保存筛选或选择
Add Parameter Filter
AddParameterFilter 可以在 Revit 模型中创建基于参数的筛选工具,也可以当作 Grasshopper 中的参数过滤工具来使用。
Add Selection Filter
AddSelectionFilter 可以在 Revit 模型中创建一个选择过滤器,也可以同时在 Grasshopper 脚本文件中使用。
提取实例几何体
ElementGeometry 可以提取实例中的几何体,例如下图中示范如何将一个堆叠墙实例中的几何体完全的提取,
DetailLevel 用来指定提取物件位于具体的楼层,如下图所示:
Instance Base Curve
基于基准线(例如基础墙) 创建的图元您可以使用
ElementCurve 来获取或设置基准线。
Instance Bounding Box
通过 Grasshopper Box 运算器轻而易举的可以获取一个实例几何体的边框方块,如图所示:
Instance Bounding Geometry
很多时候需要提取一个实例的边框几何,
ElementBoundingGeometry 运算器提取的边框几何会尽力包裹实例且会遵循实例的几何拓扑。
下面示范如何抽离一个堆叠墙的边框几何,请注意抽离出来的几何物与堆叠墙一样厚,如图所示:
修改实例类型
使用
ElementType 运算器既可以查询一个实例的类型,也可以将其修改为其他类型。
放置实例类型
使用
AddComponent(Location) 运算器可以将一个类型的实例放置至 Revit 模型空间。
对于需要指定依附主体(输入参数 Host)的类型可使用
AddComponent(Location) 运算器来实现。
AddComponent 运算器会将给定的类型尽可能的靠近其依附主体,例如下图中绿色球体是给定窗户原来的实际位置,当指定墙体为窗户的依附主体时,它会将窗户放置在距离绿色球体最近的墙体上,如图所示:
本章到此结束,如果对 Rhino.Inside.Revit 相关内容感兴趣,请您持续关注 Rhino 3D 服务号推送的相关内容。
近期 Rhino.Inside.Revit更新介绍系列
2021 面授课程
Rhino原厂2021冬季面授课程 正在招生
2022年1月 深圳 上海
Rhino原厂2021冬季面授课程正在招生,如果您希望系统和深入地掌握 Rhino 曲面造型 及 Grasshopper 参数化设计的知识可以报名参加。原厂教学注重对学员能力的培养,强化对知识点的深度理解的系统性学习,并侧重设计行业实用性解决方案的经验介绍。课程面向建筑设计、产品设计、艺术设计等相关行业。
请点击下方图片了解课程详细介绍
关注Rhino原厂微信公众号获取更多优质内容








