Rhino.Inside®.Revit 手册 – 中文版 1

概论

前面一章介绍了 RIR(Rhino.Inside®.Revit)的基本概念、界面与初始应用,从这一章开始我们将会详细的介绍这些内容。这一篇文章会开始介绍 Revit 的一些基本概念,特别初次接触 Revit 的用户,如果想要用好 RIR 这套工具需要了解 Revit 如何创建与储存模型信息, 如果你准备利用 Revit 建立与管理数据,这是非常关键的一步。在本教学中我们会详细讲解 Revit 数据模式,也会介绍如何利用 Grasshopper 中的专用 Revit 运算器组来处理数据模型。

Revit 图元 (Element) 

下面这个图片显示了单一 ⬢Revit 图元(Element)的 DNA,它就像一台小设备,输入数据、处理数据、建立几何物件与数据然后再输出它们。

提示: 并不是所有的图元都包含几何信息,有一些图元仅仅只是记录信息。

▲Revit 图元的 DNA
  • Category 类别:类别定义最顶层组织 ▬▬,其包含了一个图元的输入与输出属性的模板,类别的列表内置于 Revit 且不能修改。
  • Family 族:族定义第二层组织,族就像是一个函数,输入类型与实例的参数,生成元数据▬▬与几何⬢图元。族的逻辑作为系统内置于 Revit 中称之为系统族,例如楼板、墙与屋顶,也可以设置为自定义族,例如门与窗等。
  • Type(族)类型:族类型定义第三层组织,族类型还携带类型的参数值,这些值会被馈送至族函数以生成图元、计算类型参数。
  • Instance(族)实例:携带图元放置至 2D 与 3D 空间的变换信息,同时也携带实例的参数值,这些值会被馈送至族函数以生成图元、计算实例相关参数。

因此,实际上我们是将类型与族实例信息输入至族函数中,以生成图元数据(包括计算属性)与几何体。

提示: 我们在 Revit 族定义中所提供的数据、族类型、族实例参数与系列逻辑一同用于生成 BIM 数据结构。

▲Revit 图元的 DNA

然后所有建立的图元都会存储在一个 Revit 文档中,它们也由一系列的容器(Container)组成,每个容器都有各自的用途。

▲ Revit 中的容器(Container)

顺便介绍一下子类(Subcategories),看名字好像是类的下一级组织,实际上建议把它当作几何属性而不是组织层级。当一个族函数生成几何时,它可以将它们分组为主要类别的子类别,这样就能更好地控制几何图形中的各部分图形。

图元与实例

常常有被问到,到底什么是图元图元是 Revit 数字模型中的基本构建图块,图元被组织成类别类别列表内置在每个 Revit 版本内且不能修改。图元都带有参数且会保留相关数据。图元基于其所属类别可以获得一系列内置参数,也能接受用户定义的自定义参数。有些图元是几何物件,例如墙(3D)或细节组件(2D),也有一些图元不包含任何几何物件,例如项目信息(即使它也是 Revit 数据模型中的一个图元,但不可以被选择。介于 Revit 视图是围绕几何图元而设计,因此 Revit 提供了一个自定义窗口来编辑项目信息)。在 Revit 模型中图元都包含了很多定义图元行为方式的族类型。

提示:Revit API 中图元通常由 DB.Element 来表示,每个图元的参数由 DB.Parameter 来表示。DB.Element 提供多种方法以访问其属性集合。

每个图元都有一个整数值的 Id(DB.Element.Id),但图元并不是固定不变的,在更新与工作设置相关操作(例如居中保存)时会发生改变。通常通过图元唯一的 Id(DB.Element.UniqueId)更安全,特别是你准备在 Revit 模型外部引用一个图元,例如外部数据库。请注意,DB.Element.UniqueId 并不是一个UUID编号,如果你准备把这些信息发送给外部数据库时,要特别注意这个问题。

▲ Revit API

参数

图元都会包含一些参数,也会携带一些图元(参数相关的数据),例如墙体图元的高度参数,其值由高度参数来加载。让我们来看下使用 Revit 图元时所遇到的各种参数类型。

内置参数

内置参数是基于不同类型的图元且内置于 Revit 内部最明显的参数集,例如一个墙体或是房间图元含有一个名为体积的参数,这个参数不会影响 2D 填充图案图元,当然也和其无任何关联。

▲Revit 图元属性面板中显示内置参数列表

提示: Revit API 中所有的内置参数都由 DB.BuiltInParameter 枚举表示。

项目参数 / 共享参数

Revit 允许用户创建一系列的自定义参数且将其全局应用于选顶类别,图元属性面板还会显示附加的所选图元的项目参数。

▲项目参数与共享参数

全局参数

全局参数是与类别无关的参数,可以将其用于许多不同 Revit 类别中的一系列实例或类型参数。

▲ 全局参数

类别、族与类型

现在我们知道 Revit 将建筑组件组织为类别类型,下面将详细讨论一下它们。

类别 (Categories )

类别是最高级别的组织,这些类别都内置于 Revit 中,根据各自不同的功能松散地组织各自的组件。一个 Revit 模型中通常都会同时存在多组不同的类别:

  • 模型类别,例如墙、门、楼板与屋顶等。
  • 分析类别,例如表面分析与结构载荷等。
  • 注解类别,例如标签、尺寸等。
▲ Revit 类别(Categories)

其实每个类别中都存在多种不同的类别,有人认为类别其实是比较高级别的组织。实际上,遵循类、族与类型的组织系统能更好地理解和记住它们。

提示: Revit API 中所有的内置类别都由 DB.BuiltInCategory 枚举表示, 所有内置类型都由 DB.CategoryType 枚举表示。

类型(Types)

在讨论族之前需要先了解什么是 Revit 中的类型,正如前面提及到的每个 Revit 类别下面都会包含多种类型的图元,例如一个 3ft*7ft 的单开门是位于门类别下的一个类型,一个 2*4 的木柱是结构柱类别下的柱类型。

▲ Revit 类型 (Types)

每个类型都有一系列的类型相关参数,这些参数用来修改该特定类型的相关操作。在使用 Revit 时我们更加倾向定义或修改各种类型,并且将这些类型实例放入模型中。例如我们可以定义一个 3ft*7ft 单页门的类型,然后在模型中的不同位置放置多个这样类型的实例,所有的这些实例都会遵循其特定类型的指定逻辑,当然类型定义也允许修改某些实例参数以调整指定实例的图形等。

族 (Families)

理解什么是类型后我们开始讨论族,初次接触 Revit 的用户都很难理解什么是类别与类型,Revit 模型中存在很多不同的类型,而且他们彼此之间差异很大。例如我们可以拥有数百种具有不同设计尺寸的门,其中车库门与单页门完全不同,因此我们需要一个方法来组织这些类型至相关群组:

  • 系统族:命名为群组,例如 风管系统、基本墙体等…
  • 自定义族(或可加载族):可以使用多种自定义的方式来自行设计与创建,更为复杂。例如你可以创建一个看起来像太空飞船一样的新桌子族,可以将其悬空在地板上,然后根据场景设计需要摆放6到12张椅子。Revit 中的族编辑器可以根据族模板文件 (*.rfa) 来定义一个新的自定义族自定义族可以存储在外部文件(*.rfa)中,而且可以与其他 Revit 用户共享。内建族是自定义族的简化版,用于模型中使用一些受限的几何图形。
▲ Revit 族(Families)

提示: 系统族这个名字容易让 Revit 用户混淆,请记住系统族只是相关类型的一个名字,它们与自定义族完全不同且不能储存在外部文件中。通常 Revit 用户或是开发人员都不需要处理系统族,而且 Revit 的 API 至今也不支持创建或是修改任何的系统族,因此通常 Revit 用户讨论族时都是指的自定义族

在 Revit API 中,自定义族由 DB.Famiy 来表示,它们衍生的各种类型由 DB.FamilySymbol 来表示,其每个实例都由 DB.FamilyInstance 来表示。

定义一个新的自定义族并不是一件容易的事情,尤其当它需要适应智能、灵活的多种模型条件时,自定义族无疑是 Revit 中最重要的自动化主题之一。很多公司都会为模型中经常使用的各种组件创建一套专有的自定义族,当然也有一些第三方的公司专门从事定制自定义族的业务。

Revit 为了方便用户入门,会在安装时根据用户的系统配置建立一组默认的自定义族,例如公制与英制,还提供了很多模板以帮助用户一步步创建自己的自定义族

容器 Containers

Revit 容器(例如工作集、设计选项等)是一种将一系列图元进行逻辑分组的机制,每个容器都有特定的用途,例如工作集允许导入部分的建筑物,因此协调与碰撞检测变得更加方便。加载指定的工作集时不会加载不属于该工作集的其它图元。

▲ Revit 中的容器

文档与链接

Revit 的文档其实就是 Revit 图元的合集,Revit 文档既可以是建筑模型(Revit 项目)也可以表示为自定义族 (Revit族)。

▲ Revit 的文档

如果您对本系列更新的内容感兴趣,请关注 Rhino 原厂微信服务号 Rhino3d 和微信订阅号 Shaper3D,我们将在近期继续推出相关内容!

本文完。

此条目发表在Rhino, Rhino 7, Rhino.Inside®, Rhino.Inside®.Revit, v7 新功能, 参数化设计, 建筑, 教学分类目录。将固定链接加入收藏夹。