0 背景
在 Revit 中可以利用 Rhino.Inside®.Revit所提供的 Grasshopper 专用运算器,来创建原生的 Revit 图元,包括墙体、幕墙、轴网、空间图元、标高、楼板、屋顶、开口件、楼梯、扶手…等一些列的原生物件。在本系列教学中都将会详细讲解如何利用 Rhino.Inside®.Revit 来创建这些 Revit 原生图元。
请注意
- 建议阅读本手册之前建议至这里了解 Rhino.Inside.Revit ® 入门指南
- 这是一套偏向教学本地化手册,可以系统的学习也可以针性搜索查询某个功能;
- Rhino.Inside®.Revit 必备内容请浏览 Rhino.Inside®.Revit 中文手册1 - 必备内容
- 关于 Revit的文档、容器与设置请浏览 Rhino.Inside®.Revit中文手册3 - 文档/容器/设置
- 关于 Revit 中的 Python 组件使用方法请浏览 Rhino.Inside®.Revit中文手册4 - Python 脚本
- Rhino.Inside®.Revit 是一个继续开发中的项目,手册内容也会随着开发持续更新 ;
- Rhino.Inside®.Revit 手册英文版-请浏览这里,本地化中如果发现任何疑问、错误、遗漏,请直接回帖讨论,谢谢你的参与
1 Walls 基础墙与叠层墙
1.1 查询墙体类型
API
Revit API 中墙体类型由 DB.WallType 来表示,墙有三个主要的系统族,经由 DB.WallKind 来进行枚举且由 DB.WallKind 来检查与确定,Revit.Inside.Revit为了保持一致性,使用了墙体系统族这一术语, Element Type 可以代表一个墙体类型。
可以使用 Category Filter 与 Query Types 来查询 Revit 模型中所有有的墙体类型
1.2 查询墙体
API
在 Revit 的API 中使用 DB.Wall 来表达墙体,Rhino.Inside.Revit 中的 Wal 可以表达所有类型的墙体。
1.2.1 查询所有墙体
联合 Category Filter 与 Query Elements 运算器来查询一个 Revit 模型中所选择的墙体实例,
提醒 :使用上面的流程 Revit API 也会返回 Stacked Wall 上的各部分墙
1.2.2 墙系统族
建议基于墙系统族的方式来查询基础墙,使用 Wall System Family 运算器来挑选Revit 中内置的基础墙、叠层墙或是幕墙或是组合墙,然后输入至 Query Walls 进行查询,结果如下图所示:
1.2.3 墙体类型
墙体类型的查询非常容易,例如 数据模型:图元&实例 中介绍过的流程:
1.3 墙体类型分析
1.3.1 读取类型参数
一旦你使用上面的一些工作流程完成了墙体类型的筛选,你就可以查询其参数与修改参数,在 文档模型:参数 这一章会详细的介绍如何修改一个图元类型的参数。
1.3.2 分析基础墙
基础墙是 Revit 中一种特殊的墙系统族,由一组定义为墙类型的图层构成,也有一些独特的选项,例如 Wrapping at Inserts . 使用 Analyze Basic Wall Type 运算器可以显示与分析 Revit 文档中基础墙类型信息:
有些特定的输出项(例如 Wrapping at Inserts 与 Wrapping at Ends )会返回一个与Revit API 枚举像对应的整数值, 你可以使用 Wall Wrapping 与 Wall Function 运算器(位于上图中参数数值面板前)来确定在参数上设置的值且能给筛选源墙类型, 例如下面示范如何利用这些运算器来进行 Wrapping 与 Function 筛选:
1.3.3 基础墙结构
API
在 Revit API 中使用 DB.CompoundStructure 来表示允许配置类型的结构定义,例如基础墙、地板、屋顶与复合天花板等,DB.CompoundStructure 可以访问 DB.CompoundStructureLayer 的每个独立层。
前面示范了 Analyze Basic Wall Type 运算器如何访问基础墙 类型的复合结构定义 ,也可以使用 Deconstruct Compound Structure 运算器来显示与提取 复合结构定义 ,和上面的比较相似, Opening Wrapping Condition 与 End Cap Condition 运算器可以用来比较与筛选结构图层,
如上面所示,图层从外部 到内部 排序,与 Revit GUI 图层结构匹配,下面示范如何以序号索引来访问每一个图层:
1.3.4 基础墙结构层
使用 Deconstruct Compound Structure Layer 运算器提取每个复合结构层的信息,还可以使用 Layer Function 与 Deck Embedding Type 运算器来进行对比:
1.3.5 叠层墙结构
当前的 Revit API 并不支持直接访问叠层墙结构数据, 但你可以使用 Analyse Stacked Wall 运算器来提取内置的 基础墙实例,且能解析每一个图层结构:
1.4 分析墙体
1.4.1 读取实例参数
如果你使用上面的一些方法筛选到所需的墙体实例,继而可以查询器参数值且可以赋予新的参数值,在 文档模型:参数 中会介绍如何编辑一个图元的参数值
1.4.1 常见墙体属性
如下图所示使用 Analyze Wall 运算器可以获取所有墙系统族的常见属性, Wall System Family 与 Wall Structural Usage 运算器还可以对比参数值
API
Slant Angle 属性仅在 Revit 2021 或更高的版本上能支持
下面示范如何使用 Wall Structural Usage 值列表 运算器来筛选 Shear 墙:
输出选项 Orientation 用来显示墙的原始向量
1.4.2 墙定位线
API
在 Revit API 中使用 DB.WallLocationLine 来枚举一个基础墙或叠层墙的定位线,且其墙体实例中的参数储存在DB.BuiltInParameter.WALL_KEY_REF_PARAM
参数中
基准墙与叠层墙有一个称之为定位线的概念,用来定义墙体实例的垂直参考平面,当墙被翻转或它的结构被修改时会被维持固定在这个垂直参考平面上。运算器 Analyze Wall Location Curve 可以提取墙体的定位线信息,它会返回墙体的中心线、位置线设置、位置线、偏移与偏移方向等信息,
Wall Location Line 运算器也提供基于定位线(Location Line )筛选功能,
如果你仅需要提取墙体的中心线,Grasshopper 中最简单的方法是直接使用 Curve 运算器来筛选即可:
1.4.3 墙体截面
使用 Analyze Wall Profile 运算器也可以提取基础墙与叠层墙图元的界面取消, 请注意这些截面曲线会沿着中心平面提取:
1.4.4 墙体几何
你可以通过 Element Geometry 运算器来获取一个墙体实例的基础几何内容:
1.4.5 墙体几何结构
通常在 Revit API 中任何一个图元的几何信息都可以使用 DB.Element.Geometry 来提取,对于墙而言,提取的几何信息并不包括墙体结构层, 这里提供一些临时的快速方法,请浏览这里了解提取几何图层信息的更多方法。
Element Parts Geometry 运算器可以用来提取一个基础墙的图层几何信息:
这个运算器也可以作业于叠层墙,它可以提取给定叠层墙的所有基础墙的结构图层信息,
比较推荐的方法是先从叠层墙抽离基础墙,然后再充基础墙中提取其图层几何图形,这个方法所得到的数据结构能更吻合其图层顺序结构,
为了让图层中提取的几何列表于处理图层的其他运算器保持相同顺序,你可以依据墙体方向向量的距离对几何列表进行排序,这个方法最适合平台的墙体, 也可以使用类似的方法对其他墙体几何进行排序(想象下堆叠在不同结构的叠层墙实例中的基本墙体):
1.4.6 修改截面
API
当前版本 Revit API 中并不支持修改墙体截面曲线
1.4.7 创建叠层墙类型
当前版本 Revit API 并不支持创建叠层墙类型
1.5 创建墙体
1.5.1 基于基线
使用 Add Wall (Curve 运算器可以基于给定的曲线创建新的墙体, 下图中 Graphical Element 运算器用来从 Revit 模型中抓取一些直线,
1.5.2 基于截面
使用 Add Wall (Profile) 运算器基于给定的截面线来创建新的墙体,请注意截面线必须是封闭且与工作平面垂直的平面曲线,下图中使用了 Join Curve 运算器来组合拾取到的曲线, Graphical Element 运算器从 Revit 中抓取了一些直线, 这些直线都是与当前工作平面垂直且是处于同一个平面上,
2 CurtainWalls 幕墙系统
这一章将讨论一组特殊的墙系统族 - 幕墙,对墙(基础墙与叠层墙)基础认知有助于更好的理解 Revit 中的幕墙系统。
2.1 幕墙网格
幕墙 是 Revit 中的一类特殊墙系统族,这些墙的几何形状都是基于底层的UV网格来创建,网格配置是设置在幕墙类型中:
幕墙网格 分为 U、V两个轴(方向),在 Revit API 中U方向是墙体的垂直轴、V方向是墙体的基先(U线扫过V线且通常相互垂直):
网格 也可以是非90度(在曲面幕墙上比较常见):
幕墙竖梃 都附加至每个网格段上,且都基于幕墙类型内的设置组合链接:
幕墙水平与垂直边框线上也会附加幕墙竖梃 ,但请注意这些边框线虽然是墙体结构定义的一部分,但并不是墙体网格,墙体网格仅指幕墙边框内的线段;
由网格构成的四边区域称之为网格单元 :
可以将幕墙嵌板(系统族)或幕墙族(设计用于插入幕墙单元充当自定义面板的特殊灵活族)实例插入到这些单元中完成几何图形的定义,幕墙嵌板还可以自定义为实心嵌板、模板嵌板,甚至是空置 (!) 区域:
可以在幕墙类型中定义幕墙竖梃与嵌板,也可以直接覆盖在墙体实例。
2.2 墙体 vs 系统
在定义上幕墙 与幕墙系统 几乎相同,唯一的区别是幕墙 是垂直且具有方向性的,因此网格定义设置为水平与垂直的网格线,幕墙系统可以基于大量的曲面来创建尔不会限制下垂的方向,因此其网格配置了 Grid1 与 Grid2 两个轴向。
API
在 Revit API 中 幕墙由 DB.Wall 来表达,幕墙系统由 DB.CurtainSystem 表达. Rhino.Inside.Revit 中 Wall 代表各类墙体,也有一些特定的图元中含有与幕墙相关数据的数据,例如 Curtain System , Curtain Grid , Curtain Cell 等
2.3 查询幕墙
拾取基础墙与叠层墙至 Wall System Family 运算器, 可以帮助筛选幕墙类型与类别;
下面的截图示范如何利用 , Category Filter , 与 Query Types 运算器来过滤模型中幕墙嵌板、幕墙竖梃的类型与实例,当然这个方法不会反馈幕墙网格信息,在后续的分析幕墙 章节会介绍如何获取幕墙网格信息:
选择实例也相同:
2.4 分析幕墙类型
可以使用 Analyze Curtain Wall Type 对收集的幕墙类型进行属性分析, Wall Function , Curtain Grid Layout 与 Curtain Grid Join Condition 等运算器可以帮助过滤相关的参数值:
2.5 分析幕墙
2.5.1 提取幕墙几何
利用 Element Geometry 运算器可以提取任何一个幕墙的实例的全部几何:
如下图所示 Element Bounding Geometry 运算器可以提取给定的幕墙实例的边框几何内容:
2.5.2 嵌入幕墙
幕墙可以嵌入其他墙体内,前面示范过 Analyze Curtain Wall 运算器可以提供对主墙体的访问,将给定的幕墙嵌入其中,如果没有给定嵌入幕墙会返回 null 值:
2.5.3 提取网格
API : Revit 中使用 DB.CurtainGrid 来表达幕墙网格
前面示范过 Analyze Curtain Wall 运算器还可以访问给定幕墙实例的幕墙网格,基于幕墙网格可以获取网格的准确信息,也可以访问每一个幕墙单元、竖梃和嵌板的相关内容:
2.6 分析幕墙网格
利用下面这些运算器可以进一步的分解幕墙网格的属性与构成原件:
- Curtain Cells : 返回所有的幕墙单元信息,单元为网格线之间的有界区域
- Curtain Mullions : 返回所有单独的幕墙竖梃信息
- Curtain Panels : 返回所有嵌入在幕墙的幕墙嵌板或系统实例(例如幕墙门)
-
Curtain Grid Lines: 返回所有沿网格U与V方向的幕墙网格线及其属性信息
2.7 分析单元
API : Revit 中使用 DB.CurtainCell 来表达幕墙单元
可以使用下面的运算器来分析每个幕墙单元,且能提取单元曲线与嵌板的曲线:
请注意单元曲线(下图左侧)与嵌板曲线(下图右侧)并不相同
如下图所示单元曲线与墙体曲率一致,但墙板曲线是单元框内的平面曲线:
嵌板曲线可用来创建面板,请注意每一个单元都可以标记其自身的序号且是从底行往顶行排序:
2.8 分析竖梃
API : Revit 中使用 DB.Mullion 来表达幕墙竖梃
经由 Analyze Curtain Wall 运算器来提取给定幕墙的幕墙竖梃,再链接 Element Geometry 运算器提取相关的几何信息:
可以使用下面的这些运算器来提取每一个幕墙竖梃:
Axis Curve 输出端会输出每一个竖梃的轴向曲线,请注意水平线与垂直线相交与否,由竖梃连接设置来决定:
还可以继续接入曲线运算器来提取竖梃的位置曲线,请注意带有零长度的竖梃线,这些线在幕墙上并不可见:
2.8.1 分析竖梃类型
API : Revit 中使用 |DB.MullionType| 来表达幕墙竖梃类型
使用 Analyze Mullion Type 运算器来分析经由 Analyze Mullion 运算器提取的竖梃类型:
Curtain Mullion System Family 运算器可以依据系统族的值用来筛选竖梃,例如 L Corner Mullions
2.9 分析嵌板
幕墙可以承载两种类型的对象,既可以是幕墙嵌板,也可以是设计用于与幕墙一起使用的自定义族实例,例如幕墙门实例。这里的一些运算器可以帮忙来用于分析幕墙嵌板。 也可以使用数据模型、元素与实例指南中所提供的方法和运算器来分析族实例。
API : Revit 中使用 DB.Panel 来表达幕墙嵌板
使用 Analyze Curtain Wall 运算器与 Element Geometry 运算器来提取幕墙嵌板的几何物件:
请注意嵌板的排序是从底部往顶部逐行排序:
因为 嵌板输出参数可以返回嵌板 Panel 与自定义族 Custom Family Instances, 这样也可以提取所有插入类型的几何物件:
请注意,如果要提取每一个独立的幕墙嵌板,嵌板 Panels 输出需要进行筛选,否则 Analyze Panel 运算器会报错
使用 Filter Elements + v1.0 运算器联合其他类似 Category Filter 过滤运算器来筛选嵌板 (DB.Panel
):
使用 Analyze Panel 运算器也会提供访问嵌板的基准点(Base Point)与法线/方向向量(Orientation):
2.9.1 分析嵌板类型
API : Revit 中使用 |DB.PanelType| 来表达幕墙嵌板类型
Analyze Panel Type 运算器可以提取经由 Analyze Panel 运算器抓取的幕墙嵌板的嵌板类型:
注意 Panel Type 输出参数会返回的是一个 System Panel Type (DB.PanelType
) 还是一个 a Custom Family Symbol (DB.FamilySymbol
) 这取决于插入至幕墙网格的嵌板的类型,因此我们首先需要筛选嵌板:
2.10 分析幕墙网格线
API : Revit 中使用 DB.CurtainGridLine 来表达幕墙网格线
Analyze Curtain Grid 运算器可以提取幕墙网格线,然后接入至 Curve 运算器:
进一步的提取还可以提取每一条幕墙网格直线:
要注意幕墙网格线与线段的区别,在 Curve 输出选项提供输出每一段幕墙网格U、V轴向线段的选项:
Segments 输出端除了输出每条幕墙网格线还包括幕墙边框外未使用的线段:
幕墙网格线与线段显示如下:
2.10.1 提取关联竖梃与嵌板
Analyze Curtain Grid Line 运算器也可以提取与每个幕墙网格线段关联竖梃与嵌板的功能,请注意,不包含边框上的竖梃与嵌板,因为它们不是幕墙网格定义的一部分:
嵌板关联与竖梃稍有不同,每一个竖梃都关联一个网格线段,但一个嵌板(因为它又两条边)会同时与一条沿着U轴向和V轴向的网格线关联:
2.11 创建幕墙
2.11.1 以定义断面
可以快速的根据一个定义断面来创建一段基础墙体,然后经过 Add Wall (Profile) 运算器的 Curtain Wall Type 来创建一个简单的幕墙:
2.12 查询幕墙系统
API : Revit 中使用 DB.CurtainSystemType 来表达幕墙系统类型,幕墙系统由 DB.CurtainSystem 来表达
可以使用 Category Filter , Query Types , 与 Query Elements 等运算器来查询幕墙系统类型与实例:
2.13 分析幕墙系统
利用 Analyze Curtain System Type 运算器可以提取幕墙系统类型的所有信息,但要注意幕墙系统 与幕墙系统类型 的差别:
从幕墙系统实例中提取信息与幕墙实例非常类似,最简单的的方法是使用 Analyze Curtain Wall 运算器, Analyze Curtain System Type 运算器可以访问幕墙网格脚本:
注意幕墙系统可以包含多个幕墙网格,且每个都和源几何关联一个单一的面板,这些幕墙网格都有独立的边框且基于幕墙系统类型脚本来生成
一旦建立访问幕墙网格脚本,你就可以通过 Analyze Curtain Grid 来提取信息,这和提取幕墙信息很类似:
3 Spatial Elements 空间图元
API
在 Revit API中使用 DB.SpatialElement 来表示,它也可以用于创建自定义空间类,例如 Rooms (DB.Architecture.Room), Spaces (DB.Mechanical.Space), 与 Areas (DB.Area) 等,DB.Space
可以被 HVAC Zones (DB.Mechanical.Zone) 所群组。
3.1 查询空间图元
可以使用 Category 运算器组合 Category Filter + Query Elements 对指定的空间图元进行筛选:
Separation Lines
下载后放置至 Grasshopper User Objects folder 下,可以在从 Revit > Custom Panel 找到
3.2 查询区域计划
区域计划 是所有区域图元的容器, 每个区域计划 都包含多个区域图元,托管在不同的级标高上。区域 平面图与一个标高(和其他的平面图一样)或一个指定的区域计划直接关联,这就是为何你总会在区域计划 名称前面的括弧中看到区域 平面名称,例如 我的区域计划(总建筑)
使用这里分享的 Get Area Schemes 运算器来查询可用的区域计划,请注意区域计划是多个图元你可以使用 Element Name 来获取这些图元的名称,
如上图获取到区域计划 中图元的名字,也可以利用他们的名字来过滤区域计划
Separation Lines
下载后放置至 Grasshopper User Objects folder 下,可以在从 Revit > Custom Panel 找到
已知错误 Issue #89 : Category picker missing OST_AreaSchemes builtin category
3.3 查询HVAC区域
HVAZ 区域可以和其他的图元一样被查询:
3.4 分析空间图元
这里分享 Analyse Spatial Element 运算器,可以用来查询空间图元的常用属性;
Analyse Spatial Element
下载后放置至 Grasshopper User Objects folder 下,可以在从 Revit > Custom Panel 找到
3.4.1 使用标高筛选空间图元
上面分享的工具也可以用于楼层筛选空间图元:
3.5 获取空间图元几何
如果要准确的获取空间图元的几何元件,需要搭配 Analyse Spatial Elemen t(上面已经分享)与 Boundary Location 来实现,
Boundary Location
下载后放置至 Grasshopper User Objects folder 下,可以在从 Revit > Custom Panel 找到
提醒:当前 Revit API 无法返回 CoreBoundary 与 CoreCenter 边界位置的几何信息
请确保在 Revit 模型的‘面积与体积计算 ’配置下选中 ‘面积和体积 ’,否则房间几何无法正确的与顶部和底部绑定。
这里示范一个获取房间几何的作业流程,
3.5.1 空间元件容器化
有时候需要将空间元件当作空间容器来处理,例如使用一个单一的曲面将两个容器彼此分开,这样就不至于在提取空间图元几何时得到两个重叠的表面。
这里有一个从空间元件提取几何的范例,每一个空间都是封闭的几何,例如下图中的橙色与浅灰色的方块表示两个独立的空间图元:
使用 NonManifold Merrge 运算器(在下面的分享可以下载),你可以合并将上图中的几何物件合并为一个带有单面分割容器的单一的 Brep,如下图所示的红色曲面来分割橙色与浅灰色的容器:
为了确保能使用空间容器抓取中心位置,请提取几何图像后使用 NonMainfold Merge 运算器来进行合并:
NonManifold Merge
下载后放置至 Grasshopper User Objects folder 下,可以在从 Revit > Custom Panel 找到
3.6 分析面积区域计划
可以使用下面分享的 Analyse Area Scheme 运算器来分享面积区域计划图元:
Analyse Area Scheme
下载后放置至 Grasshopper User Objects folder 下,可以在从 Revit > Custom Panel 找到
3.7 分析面积
可以使用下面分享的 Analyse Area 运算器来分析面积图元:
Analyse Area
下载后放置至 Grasshopper User Objects folder 下,可以在从 Revit > Custom Panel 找到
3.8 创建分割线
3.8.1 面积边框线
可以使用下面分享的 Create Area Boundaries 运算器来创建创建面积边框线,请注意这个运算器需要输入一个面积平面图 与线 ,
Create Area Boundaries
下载后放置至 Grasshopper User Objects folder 下,可以在从 Revit > Custom Panel 找到
4 Grid 轴网
API
Revit API 中使用 DB.Grid 来表达所有的 轴网类型,Rhino.Inside.Revit 中使用 Grid 来表达一个轴网。
4.1 查询现有的轴网
可以使用 Query Grids 运算器查询项目中的所有轴网,可以重新定义其名字、高度与输入过滤等。
可以使用轴网参数来进行筛选,右键点击 Grid 运算器可以选择不同的轴网参数,
4.2 查询轴网类型
请浏览修改类型的章节来了解如何查询轴网类型信息
4.3 分析提取轴网曲线
将一个 Grid 运算器连接至 Curve 运算器,可以直接提取这个 Grid 的曲线
4.4 创建轴网
可以利用 Add Grid 运算器来创建一个轴网,需要输入一条直线或圆弧、定义名字与类型等参数即可;
5 Levels 标高
API
Revit API 中使用 DB.Level 来表达所有的标高类型, Rhino.Inside.Revit 中使用 Level 运算器来表达一个标高。
5.1 选择现有的标高
可以使用 Levels Picker 运算器来选择项目中的所有标高,
也可以使用 Level 运算器的标高参数来进行筛选,鼠标右键点击 Level 选择不同的标高功能参数即可;
5.1.1 以条件筛选标高
使用 Query Levels 运算器可以依据标高系统参数来筛选,
5.2 查询标高类型
请浏览修改类型的章节来了解如何查询标高类型信息
5.3 分析标高
5.3.1 标高标识
可以使用 Level Identity 运算器来检查标准标高属性,
5.3.2 获取标高平面
可以将 Level 运算器链接至工作平面运算器以获取标高所在高度的XY平面
5.4 创建标高
可以使用 Add Level 运算器在项目中新增一个标高,
6 楼板、天花板与屋顶
6.1 添加天花板
可以在项目中使用 Add Ceiling 运算器来添加天花板,
6.2 添加屋顶
可以在项目中使用 Add Roof 运算器来添加屋顶,
6.3 添加楼板
项目中可以使用 Add Floor 运算器来添加楼板,
7 Openning 开口(洞口)
API
在 Revit API 中用 DB.Opening. 来表达开口类型,在 Rhino.Insider.Revit 中使用 Opening 运算器 来表达
7.1 查询开口
如果需要选择适当的开口类型,可以使用 Query Elements 运算器+ Category Filter 配合 Built-In Categories : 中过滤且选择 矩形直墙开口 或 矩形弧墙开口 (针对计算不同的直墙与弧墙几何图形而提供的两个类别)与竖井洞口 ;
如果想找到曾经在有些Revit 图元上所创建的有趣的开口,可以使用 Host Inserts 运算器来查找一个 Revit 图元上带有的开口;
请注意上面的方法并不适合于竖井开口,因为竖井是以相邻的两个楼板为界垂直的图元,它会贯穿其间的任何楼板、天花板与屋顶图元。所以使用 Host Inserts 运算器不会返回任何竖井开口;
7.2 分析开口
可以使用 Inspect Element 运算器来检索一个开口件的类别属性,例如下面示范的检索 矩形墙开口实例;
你也可以使用 Opening Boundary Profile 运算器来提取一个给定开口的边框轮廓:
使用 Element Host 运算器来侦测一个带有指定开口实例的主体图元,例如一个带有指定开口的墙体,
API
当前天窗并没有在 Revit AIP 中完整覆盖, 所以当你检查天窗时除了 Phases 之外没有其他的属性信息:
但天窗开口轮廓依然可以使用 Opening Boundary Profile 运算器来提取
7.2.1 由竖井切割的图元
如前面所提及的无法指定任何的图元为竖井开口的主体,为了检测图元(下面以楼板为例)是否被竖井开口所切割,我们可以使用 BoundingBox Filter 运算器来过滤那些与竖井边框发生碰撞的图元, Opening 运算器包含竖井开口;
7.2.2 竖井开口轮廓
为了提取一个主体图元(例如下面范例中的楼板)边框轮廓,可以使用 Host Faces 运算器配合提取BREP顶部或底部的曲面,解构BREP也会得到轮廓曲线,
7.3 创建墙体开口
建立一个墙体开口如同当你在 Revit 内建立一个开放的墙体,你需要在墙体上指定两点,用来定义切割矩形的最大与最小的点, Add Wall Opening 运算器载入输入的墙体与点,以创建如下图所示的一个开口图元;
7.4 建立竖井
可以使用 Add Shaft Opening 运算器来创建竖井, Levels Picker 用来选择竖井的顶部与底部边框楼板,Boundary 输入项载入一条曲线作为竖井的截面轮廓;
也可以使用 Level Constraint 运算器来构造一个指定的楼板,配合不同的偏移值得到顶部 与底部 输入值;
7.4 建立竖直开口
可以使用 Add Vertical Opening 运算器配合主体图元与边框曲线在屋顶、天花板与楼板(当前 Revit API 仅支持非倾斜楼板)上建立竖直开口件;
请注意当前 Revit API 仅支持非倾斜楼板上建立竖直开口,所以主体楼板如果带有斜度时无法建立任何开口件;
8 楼梯、坡道与栏杆
8.1 新建栏杆
可以使用 Add Railing 运算器在项目中新建栏杆;
9 结构件图元
百度盘链接: 百度网盘 请输入提取码 提取码: 5cew
10 Materials 材质
Revit 中的材质是一种比较复杂的数据类型,通常被用于 :
- 赋予给Revit图元的图形属性(例如浴室墙壁上的瓷砖图案),
- 模型中嵌入建筑施工信息以便于不同阶段读取使用,
- 建筑可视化的建筑外表面显示属性,
- 用于各种模拟分析的物理与热度属性,
因从 Revit 中的每一个材质都会具备下面5个主要的特性:
- Identity 标识,
- Graphics 图形,
- Appearance Properties 外观,
- Physical Properties 物理,
- Thermal Properties 热度,
在 Revit 材质编辑器窗口中有对应的选项卡:
在 Rhino.Inside.Revit 中我们也提供了对应的5个主要的运算器;
- Material Identity
- Material Graphics
- Analyze Appearance Asset (Generic)
- Analyze Physical Asset
- Analyze Thermal Asset
Extract Material’s Assets 运算器用于提取材质的相关特性(外观物理与热度),且可以使用上面列出的运算器对每一项特性进行深入的分析,在后面的材质特性(Material Assests) 中会介绍更多的相关内容;
在下面的章节我们将会讨论如何使用 Rhino.Inside.Revit 来处理这5个方面的相关问题
百度盘链接: 百度网盘 请输入提取码 提取码: erps
10.1 查询材质
API
在 Revit API 中使用 DB.Material 来表示材质,这个类别用来处理材料的标识与图形,且提供查询与修改外观、物理与热度属性的方法。
第一个挑战是能在一个模型中查询可用的材质或是找到一个想要使用的材质,通常建议使用 Query Materials 运算器, 默认情况下这个运算器能找到且输出一个模型中所有的材质,也可以选择性的输入不同的过滤方式、名称与类的方式来过滤现有材质,也可以自定义更多的过滤方法,
提醒: 在 Class 与 Name 输入项中还可以使用字串来进行过滤定义
<
Starts with
>
Ends with
?
Contains, same as a regular search
:
Wildcards
;
Regular expression
10.2 材质标识
可以使用 Material Identity 运算器来获取材质标识:
也可以它来修改一个材质的标识属性:
10.3 材质图形
使用 Material Graphics 运算器来获取材质图形:
也可以利用它来修改图形属性,
10.4 创建材质
在Revit 模型中使用 Add Material 文档感知运算器来创建一个新的材质,记住要为新建材给定一个唯一的名字;
然后可以继续使用 Material Graphics , Material Identity 或 Replace Material’s Assets 来为新的材质定义图形属性等;
10.5 材质资产 Material Assets
前面介绍了如何分析材质标识与图形,如何创建简易材质,如果要充分的掌握 Revit 中的材质,还需要进一步了解材质背后的其他三个基本概念:外观、物理与热度。
10.5.1 资产Assets
资产 是 Revit 中材质的外观、物理与热度方面背后的基本概念,Rhino.Inside.Revit 也提供了一些对应的运算器以Grasshopper 的方式来创建、修改与分析这些资产 ,也提供了一些用于提取与替换一个材质中的这些内容的运算器。
请注意资产 与材质 是不同的数据类型,每一个 Revit 的材质都包含标识与图形属性,也会赋予用于外观 、物理 与热度 等资产至材质,热度资产 是完全可以选的。
API
Revitalizing API 对资产的支持非常有限,我们尝试在这个章节描述清楚 Revit Visual API 的内部工作原理外观资产
所有的外观资产都是 DB.Visual.Asset 类且是一个带有一个名称(例如generic_diffuse)、一个类型和一个值的视觉属性的集合。 DB.Visual.Asset 具有查找和返回这些属性的方法,这些属性都经由 Revit API 中的 DB.Visual.AssetProperty 类封装,这个类型也支持从属性中提取值。
Revit 中有很多不同的外观资产, 例如 Generic , Ceramic , Metal , Layered , Glazing 等,每个资产都有一个不同的属性设置。要使用这些外观资产,我们就需要一种方法来了解每种资产类型可用的属性名称。 Revit API 提供具有静态只读字符串属性的静态类,这些属性提供了一种简单的方法来获取这些属性的名称,例如 DB.VisualGeneric 的 GenericDiffuse 属性返回名称 generic_diffuse, 它是 Generic 财产的漫反射属性的名称。物理与热度资产
物理资产与热度资产完全不同,经过其运作方式都和外观资产非常相似,它们依然是属性的集合,这些属性都会作为 Revit 参数(DB.Parameter)模型且由 DB.PropertySetElement实例收集, 不是将静态类作为名称的访问器,而是必须通过内置的 Revit 参数来访问,例如 DB.BuiltInParameter的 THERMAL_MATERIAL_PARAM_REFLECTIVITY。Revit API 提供 DB.StructuralAsset 与 DB.ThermalAsset 类以提供对物理与热属性的快速访问,但并非所有属性都包含在这些类型中,而且也不会检查属性值的有效性。
Grasshopper as Playground
这里提供包含 Python 的 Grasshopper 脚本文件, 可以帮助你查询这些资产的属性:
下载 Assets Playground (使用 Rhino.Inside.Revit 中的 Grasshopper 打开)
使用 Extract Material’s Assets 来提取一个材质的资产:
10.6 外观资产
外观资产在其他一些产品中叫渲染材质,Rhino.Inside.Revit 中 Grasshopper 提供许多运算器来处理外观资产,
下载链接: 百度网盘 请输入提取码 RIR1
Revit API 中有很多外观资产,例如你可以使用 Create Appearance Asset 来创建一个 Generic 外观资产且通过 Replace Material’s Assets 赋予给一个 Revit 材质:
Analyze Appearance Asset (Generic) 与 Modify Appearance Asset (Generic) 可以用于简化一个当前资产,或分析与提取其已知属性值:
10.7 纹理资产
外观资产具有一系列可以接受嵌套资产(本指南把它叫纹理资产)的属性,例如一个 Generic 外观资产既然可以包含一个颜色值,也可以是链接至另外一中位图类型的资产(或其他纹理资产)。
Rhino.Inside.Revit 提供一些运算器来构建与拆解这些资产类型,外观资产也可以接受适当的纹理资产,例如使用 Construct Bitmap Asset 与 Deconstruct Bitmap Asset 来构造与拆解位图资产:
请注意 Generic 外观运算器的 Glossiness 与 Bump 参数分别接受浮动值与颜色值或纹理贴图, 请注意显示浮点值或颜色值与棋盘格图的参数图标,
API
请注意 构建与拆解纹理运算器仅传递包含纹理资源的数据结构,并不会在 Revit 模型中建立任何内容,实际上创建纹理资源(当接入输入参数时)且将其链接到正在创建外观资源属性的是 Create Appearance Asset 运算器,这个行为反映了 Revit API 中‘链接’(嵌套)资源的内部工作方式。
10.8 物理资产
使用 Create Physical Asset 文档行为运算器来创建物理资产且使用 Replace Material’s Assets 运算器赋予给一个材质,使用 Physical Asset Class 与 Physical/Thermal Asset Behaviour 作为输入,然后分别设置物理资产的类型与行为:
和前面讨论的修改与分析运算器类似, Analyze Physical Asset 与 Modify Physical Asset 运算器可以用来修改与分析当前物理资产
10.9 热度资产
和前面讨论的修改与分析运算器类似, Analyze Thermal Asset 与 Modify Thermal Asset 用来修改与分析当前的热度资产。
11 Element Geometry 图元几何
11.1 反转
可以使用下面分享的 Flipped 运算器来检查一个图元是否被反转(Revit 支持不同的反转类型),
这里下载 Flipped ,然后拷贝至 Revit > Custom 面板下的 Grasshopper User Object 文件夹下
11.2 查询反转过的图元
你可以使用收集运算器来查询任何类别的图元,将它们接入至 Flipped 运算器且根据需要的过滤结果:
12 DirectShapes
在 Revit 文档中 DirectShape 图元用于存储几何形状,包括点与封闭的线、实体或是网格。DirectShapes 可以在模型中快速放置非预置族的图元,也可以部分的包含一些可加载族、类型的信息,这里提供一个别表供你参考,
Property | DirectShape | DirectShape Type | Component Family |
---|---|---|---|
Nested Families | |||
Parameter Driven Shape | |||
Material Parameter | |||
Align Material | |||
Placed in Assembly | |||
Name Appears in Schedules | |||
Multiple Instances for Schedules | |||
View Based Representation | |||
Instance Parameters | |||
Edit Geometry in Revit | |||
Appears in Browser | |||
Assign Subcategory | |||
Can be Hosted | |||
Workplane Based | |||
Place by Origin |
提示:所有 选项需要再增加材质,需要使用可以计划的方式来创建额外的共享参数,这些参数都没有内置至默认的 Directshapes 中。
12.1 DirectShapes 类别
使用 DirectShape Categories 运算器来获取 DirectShape 类别,
12.2 增加 点DirectShape
可以使用 Add Point DirectShape 运算器增加点Directshape至项目中,
12.3 增加 网格DirectShape
使用 Add Mesh DirectShape 运算器来增加 网格DirectShape至项目,
12.3 增加 DirectShape
使用 Add DirectShape 运算器在项目中增加 DirectShape,
12.4 增加 几何DirectShape
使用 Add Geometry DirectShape 在项目中增加 几何DirectShape,
12.5 增加 曲线DirectShape
使用 Add Curve DirectShape 运算器在项目中增加 曲线DirectShape,
12.6 增加 Brep DirectShape
使用 Add Brep DirectShape 运算器增加 DirectShape 类型至项目,
12.7 增加 DirectShape 类型
使用 Add DirectShape Type 运算器增加 DirectShape 类型至项目,
13 Compound Structures 复合结构
13.1 拆解复合结构
可以使用 Deconstruct Compound Structure 运算器来拆解项目中的复合结构,
13.2 拆解复合结构图层
使用 Deconstruct Compound Structure Layer 运算器可以拆解复合结构图层,
13.3 构建复合结构图层
项目中可以使用 Construct Compound Structure Layer 运算器来构建复合结构图层。
13.4 构建复合结构
使用 Construct Compound Structure 运算器可以在项目中构建复合结构,
13.5 主体类型复合结构
可使用 Host Type Compound Structure 运算器在项目中创建主体类型复合结构,
14 Site Topography 场地地形
14.1 增加地形(网格)
项目中使用 Add Topography (Mesh) 运算器来增加一个场地(网格),
14.2 增加建筑板
使用 Add BuildingPad 运算器在项目中增加建筑板,
14.3 增加地形(点)
使用 Add Topography (Points) 运算器在项目中增加地形(点),
15 Sketching 草图
… Work In Progress…