Rhino.Inside.Revit 全新建模组件。

几年前,有人提出了一个功能请求,希望改进通过 Rhino.Inside.Revit 使用自适应族(Adaptive Families)的方式。示例包括桥梁、隧道、沟槽、栏杆以及其他需要多个自适应点(Adaptive Points)和多个剖面的几何体。在这些情况下,族的创建和设置往往会变得相当繁琐。

(Element Geometry Reference - Adaptive Families Features Request - #4 by M.Tarabishy)

这也是我们在 Rhino.Inside®.Revit Community 社区中探索了相当长时间的一个方向,尤其是针对基于轴线(Axis-based)的结构。

这里真正的挑战并不一定是如何在 Rhino 或 Grasshopper 中创建几何体,而是如何将这些几何体带入 Revit,同时尽可能保持工作流程的原生性(Native)和可编辑性(Editable)。

现有的方法

一种常见的方法是在 Rhino 中创建所有需要的剖面,然后在 Grasshopper 中生成放样(Loft)几何体,最后在 Revit 中创建一个 FreeForm Element。

这种方法对于传递复杂几何体来说效果相当不错。然而,当几何体变得更加复杂时,在 Revit 内部对最终形态的控制就比较有限。大部分几何逻辑已经在 Revit 之外完成了。

另一种方法是使用自适应族(Adaptive Families)。在这种情况下,我们可以在 Revit 的族环境中创建所需的剖面、自适应点以及形体(Forms)。

这样得到的结果会更加符合 Revit 的原生工作方式,但同时也会增加几个额外步骤。

首先需要创建并配置自适应族,然后生成剖面,在族内部创建形体,最后再将族加载回项目中。

因此,我想看看是否可以利用 Rhino.Inside.Revit 的原生组件,直接通过 Grasshopper 自动完成整个流程。

1. 创建自适应剖面

第一个组件是 New Adaptive Family。

它的思路非常简单:提供一个在 Rhino 中绘制的二维剖面,指定自适应点的位置,然后为族提供一个名称。

例如,在这里展示的隧道工作流程中,隧道横截面只需要在 Rhino 中以曲线的形式绘制即可。

该组件会将这些曲线转换成一个原生 Revit 自适应剖面族,用户无需手动创建和配置族。

2. 创建轴线和定位位置

下一步是定义轴线(Axis)。

我们已经可以通过 Add DirectShape (Curve) 将 Rhino 曲线传递到 Revit 中。

但是,对于这种工作流程来说,仅仅创建一条曲线是不够的。我们还需要知道剖面应该沿着这条曲线布置在哪里。

因此,我进一步扩展了这个思路,增加了 Add Curve (Solid) 和 Add Location。

通过 Add Curve (Solid),轴线可以拥有自己的名称以及 Revit 子类别(Subcategory)。

这个子类别还可以用来控制轴线在 Revit 中的线宽、线条颜色和线型。

更重要的是,我们可以沿着曲线指定多个定位位置(Locations)。

例如,我们可以沿着隧道轴线,在特定位置定义 PL1、PL2、PL3 和 PL4。

这些定位信息会与曲线一起存储,并且之后可以在生成实际族几何体时使用。

这样,我们得到的 Revit 轴线就不仅仅包含曲线几何体本身,同时还携带了后续步骤所需要的位置(Location)信息。

3. 创建实体族

当我们已经拥有轴线、定位位置以及自适应剖面之后,就可以使用 New Component Family (Solid) 将这些输入组合起来。

该组件接收:

  • 曲线(Curve)

  • 所需的定位位置(Locations)

  • 族名称(Family Name)

  • 之前创建的自适应族类型(Adaptive Family Type)

如果需要,还可以提供材质(Material)。

随后,它会创建一个新的 Revit 族,并使用自适应剖面沿着指定的位置生成实体几何体。

这里最重要的一点是:最终的几何体是在 Revit 族环境内部生成的。

族生成完成后,它会自动重新加载到当前激活的 Revit 项目中。

之后,就可以使用 Revit 原生的 Add Component (Adaptive) 组件来放置生成的族。

因此,我们不再是在 Rhino 中创建完整的放样几何体,然后把最终结果传递到 Revit。

相反,Grasshopper 被用于定义:

  • 轴线

  • 定位位置

  • 剖面

  • 族设置

而真正的族几何体则是在 Revit 内部生成。

4. 沿同一轴线创建多个分段

这些定位信息还可以让我们将结构划分成多个相互独立的分段。

例如,如果轴线上包含四个定位位置,那么可以将这些位置重新组织成连续的点对:

PL1 → PL2

PL2 → PL3

PL3 → PL4

然后,可以为每一对位置指定一个独立的族名称,例如:

  • MainTunnel-S01

  • MainTunnel-S02

  • MainTunnel-S03

同一个 New Component Family (Solid) 组件就可以处理这些输入,并沿着同一条轴线创建多个 Revit 族。

对于较长的基础设施构件,这可能非常有用,因为我们不一定希望将整个结构创建成一个连续的族,而是可以将模型划分成多个更容易管理的分段。

当前的限制

目前,这个工作流程存在一个比较重要的限制。

现阶段,New Component Family (Solid) 仅支持沿曲线保持**恒定截面(Constant Cross Section)**的情况。

也就是说,目前还不支持:

  • 不同剖面之间的过渡

  • 可变截面(Variable Cross Section)

如果你对这些组件感兴趣,欢迎给我发送私信(DM)。

1 个赞