# 2.6 - Dynamo FormIt 节点

*FormIt 附带了一个 Dynamo 节点库，可在 FormIt 和 Dynamo 之间传输几何图形。在前面的章节中，我们已了解了如何在 FormIt 中创建和动态调整 Dynamo 对象。在本章中，我们将编辑提供的 Dynamo 图形，以创建 OOTB 楼梯图形的修改版本。*

*在本章中，我们将使用* ***“Encode Campus Sample Model.axm”*** *模型* *和* ***“Stairs by Top Edge.dyn”*** *Dynamo 脚本。如果尚未找到，可以通过下载* ***“FormIt Primer Part 2 数据集”** 找到这两个文件。*

*如果您不熟悉如何在 FormIt 中使用 Dynamo，建议您完成本入门手册* ***“第 I 部分”*** *中的* ***“1.10 -*** ***使用 Dynamo 计算组”*** *一章。尽管本章将涉及 Dynamo 图形编辑，但我们实际上仅会介绍 Dynamo 的图元，因为它们与 FormIt 特定节相关。如果您不熟悉 Dynamo，可以通过访问* [***Dynamo Primer***](https://primer.dynamobim.org/01_Introduction/1-2_what_is_dynamo.html)***，了解更多信息。***

***本部分需要 FormIt for Windows 2022.0 或更高版本。***

## **添加 Dynamo 库位置**

*虽然 FormIt 附带的一个 OOTB 图形库位于 **“Dynamo 样例”** 文件夹中，但我们需要一个位置来创建和保存我们自己的自定义图形。为此，我们先要向 FormIt 的 **Dynamo 库位置**中添加新文件夹。这类似于将文件夹添加到 FormIt 的内容库；因此，如果您需要复习，请查看入门手册第 I 部分的 **“1.11 - 使用内容库输入模型”** 一章。*

1 - 添加新的 **Dynamo 库位置**的步骤：

1. 打开 **“Encode Campus Sample Model.axm”** 后，转到 **“Dynamo 选项板”** 。
2. 单击左上角的 **“链接 Dynamo 目录”** 按钮。
3. **“首选项”** 窗口将打开，并自动选中 **“Dynamo”** 选项卡。单击 **“添加新的 Dynamo 库位置”** 加号图标。
4. 导航到 **“编码模型数据集”** 下载到的任意位置，然后选择 **“支持文件”** > **“FormIt Primer 图形”** 文件夹。
5. 单击 **“选择文件夹”** 、单击 **“确定”** ，然后系统会您将带回到 FormIt。
6. 在 **“Dynamo 选项板”** 顶部的文件夹下拉列表中，选择刚刚添加的 **“FormIt Primer 图形”** 文件夹。

![](https://3938562663-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC2d4N7VJ5cPBb6LvhH2k%2Fuploads%2Fgit-blob-57eef08012ed90a0da31117b7c9b2b0f0e462d5b%2F0%20\(21\).png?alt=media)

## **SendToFormIt** **节点**

*为了使任何 Dynamo 图形都能够使用 FormIt 进行处理，至少需要有一个* ***SendToFormIt*** *节点。*

1 - 首先，我们尝试按原样使用刚刚添加的文件夹中的 **“楼梯(顶边)”** 图形。

1. 首先转到“截面 - 纵向”场景。

2 - 我们会将 **“SendToFormIt”** 节点添加到图形中。为此，我们将在新的 FormIt 模型中使用“编辑源图形”，这样就不会因图形编写更改而影响工作模型。

1. 在任务栏中的 **“FormIt 图标”** 上单击鼠标右键，然后选择 **“FormIt”** 以启动新的空 FormIt 窗口（或仅在 FormIt 图标上单击鼠标中键）。
2. 在 **“Dynamo 选项板”** 中，找到 **“楼梯(顶边)”** 磁贴，然后单击磁贴右边缘上的下拉小箭头，或在磁贴上单击鼠标右键。
3. 选择 **“编辑源图形”** 。这将自动启动 Dynamo，并打开要编辑的图形。

![](https://3938562663-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC2d4N7VJ5cPBb6LvhH2k%2Fuploads%2Fgit-blob-45c7ca6f01ae7b6e79fffc1f3904b1771548d597%2F2%20\(22\).png?alt=media)

2 - 在 Dynamo 和图形打开后，放大下面所示的区域，其中包含最右侧的绿色和紫色组。

![](https://3938562663-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC2d4N7VJ5cPBb6LvhH2k%2Fuploads%2Fgit-blob-f09fdaf98d4007dc69d379227ac0ae580f1cdfb9%2F3%20\(19\).png?alt=media)

***注意：*** *Dynamo 图形从左到右流动，因此通常将在图形的最右侧找到输出节点。*

3 - 现在，我们需要添加 **“SendToFormIt”** 节点，以将在背景中所看到的楼梯几何图形发送到 FormIt 模型：

1. 在左侧的“附加模块(软件包)”区域中，展开 **“FormIt”** 下拉列表，然后单击 **“SendToFormIt”** 。**“SendToFormIt”** 节点将显示在屏幕中心。
2. 通过选择紫色组和新的 **“SendToFormIt”** 节点，然后在 **“SendToFormIt”** 节点上单击鼠标右键并选择 **“添加到组”** ，从而将新节点添加到紫色的 **“将楼梯几何图形发送到 FormIt”** 组。将新节点移动到类似下图中所示的位置。
3. 在 **“SendToFormIt”** 节点上单击鼠标右键，并确保 **“是输出”** 处于选中状态。它应处于默认状态，如果不处于默认状态，将不会向 FormIt 发送任何几何图形。
4. 将 **“SendToFormIt”** 节点重命名为 **“SendToFormIt.Stairs”** 。
5. 连接新的 **“SendToFormIt.Stairs”** 节点的两 (2) 个输入，如下图所示。

![](https://3938562663-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC2d4N7VJ5cPBb6LvhH2k%2Fuploads%2Fgit-blob-7b50affceaab1277b88ce55dc05a32e7a45f1101%2F4%20\(18\).png?alt=media)

***注意：*** *尽管我们仅使用* ***“SetAsMesh”*** *选项节点（该节点确定将几何图形作为对象还是网格发送到 FormIt），* *但是有许多* ***“FormItGroupOptions”*** *节点可用。每个节点控制发送到 FormIt 的几何图形的各种特性；可以尝试使用其他一些节点！*

4 - 我们返回 FormIt，看一看它是否起作用：

1. 保存并关闭 Dynamo。更新的图形将自动重新加载回 FormIt。
2. 切换回含有 **“编码校园样例文件”** 的 FormIt 窗口，然后在 **“Dynamo 选项板”** 中，再次单击 **“楼梯(顶边)”** 。
3. 将楼梯放置在模型中，类似如下图所示。
4. 选择楼梯，并注意其组名称与 Dynamo 图形的名称匹配。
5. 现在，双击以编辑组，然后选择嵌套的楼梯几何图形组。请注意，该组的名称与我们在 Dynamo 中为节点指定的名称匹配。

![](https://3938562663-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC2d4N7VJ5cPBb6LvhH2k%2Fuploads%2Fgit-blob-b4f5b4739f1f208006ad1d68456cf5107f186471%2F5%20\(17\).png?alt=media)

***注意：*** *不必担心楼梯的确切位置，我们将在以下部分中对其进行微调。*

![](https://3938562663-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC2d4N7VJ5cPBb6LvhH2k%2Fuploads%2Fgit-blob-c2c757e3c9f0ca166cf88bd0d7e5b0ec102c1444%2F6%20\(14\)%20\(2\).png?alt=media)

***注意：*** *在本例中，我们只需要一个* ***“SendToFormIt”*** *节点，但可以创建多个节点。每个组都将在 FormIt 中基于其源自的* ***“SendToFormIt”*** *节点的名称创建一个新组。*

## **SelectFromFormIt 节点**

*正如我们在前几章中所见，Dynamo 图形可以提示用户选择后续图形会使用的特定几何图形。现在，我们会将其中两 (2) 个节点添加到楼梯图形中，以便楼梯方向、宽度和高度可以基于 Dynamo 内选定的 FormIt 几何图形进行计算。*

1 - 删除刚刚放置的楼梯。

2 - 切换回空的 FormIt 窗口。

3 - 在 **“Dynamo 选项板”** 中，单击 **“楼梯(顶边)”** 磁贴的下拉列表、选择 **“编辑源图形”** ，然后它将再次在 Dynamo 中打开。

***注意：*** *如果通过单击* ***“编辑嵌入式图形”*** *直接从* ***“特性选项板”*** *（而不是从* ***“Dynamo 选项板”** ）编辑 Dynamo 图形，则将仅编辑该组的嵌入式图形，而不会编辑保存在之前添加到 FormIt 的 Dynamo 库的文件夹中的源图形。*

4 - 这次，我们要添加一些选择节点，这些节点通常位于图形的开头或左侧附近。放大如下所示区域。

![](https://3938562663-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC2d4N7VJ5cPBb6LvhH2k%2Fuploads%2Fgit-blob-b8a3aa5238a486a73504406300718f1158270290%2F7%20\(9\).png?alt=media)

5 - 添加新选择节点的步骤：

1. 在 **“附加模块”** 区域中，展开 **“FormIt”** ，然后单击 **“SelectFromFormIt”** 两次，这应该会在屏幕中心创建两 (2) 个新节点。
2. 如下图所示，将它们一个接一个地排列、为它们创建一个橙色组，并将其命名为 **“选择自 FormIt 的几何图形”** 。提示用户在 FormIt 中选择图元的顺序基于 Dynamo 中选择节点的垂直位置；最上方的节点将首先显示，而底部节点将最后显示。
3. 将顶部节点重命名为 **“选择顶部边”** ，将底部节点重命名为 **“选择底部楼板”** 。在 FormIt 中运行此图形时，“Dynamo 选择向导”将显示，并使用这些节点的名称作为要选择的几何图形的提示。
4. 在每个节点上单击鼠标右键，并确保 **“是输入”** 处于选中状态。它应该是默认状态，但如果不是默认状态，FormIt 将无法识别这些节点。
5. 关联新选择节点，如下图所示。它们每个都只有一 (1) 个连接。

![](https://3938562663-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC2d4N7VJ5cPBb6LvhH2k%2Fuploads%2Fgit-blob-6986ab3ab42b7314975d4d4bb90e7797bc6c7759%2F8%20\(11\).png?alt=media)

***注意：*** *新节点可能包含警告，导致它们变为黄色，如上所示。现在，可以忽略这些警告。出现警告是因为节点需要 FormIt 中的几何图形，但尚未收到任何几何图形（因为我们刚刚添加了它们！）。*

6 - 现在，我们需要对图形进行更多更改，以便从选择节点的几何图形创建楼梯。首先，我们需要更改 **“楼板到楼板高度”** 和 **“楼梯宽度”** 输入，以便它们从选定几何图形（而不是从输入滑块）获取值：

1. 按住 **Shift** 键的同时，单击橙色 **“滑块输入”** 组内 **“楼板到楼板高度”** 节点的输出，然后将这些线移动到 **“计算楼板到楼板高度”** 节点输出的正上方。
2. 使用相同的方法，将输出线从橙色 **“滑块输入”** 组中的 **“楼梯宽度”** 移动到 **“计算楼板到楼板高度”** 节点输出的上方。
3. 删除旧的 **“楼板到楼板高度”** 和 **“楼梯宽度”** 节点，因为我们不再需要它们。

![](https://3938562663-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC2d4N7VJ5cPBb6LvhH2k%2Fuploads%2Fgit-blob-28537eb02e9819161fa6cd3d2722be3db90929fd%2F9%20\(8\)%20\(2\).png?alt=media)

***注意：*** *如果要将任何* *Dynamo 输入节点添加到图形，这与添加* ***SelectFromFormIt*** *节点非常类似。只需确保它们标记为* ***“是输入”** ，对它们重命名并重新排序，但您希望它们显示在 FormIt 中，它们将显示在 FormIt 的* ***“特性选项板”** 中！*

7 - 最后，放大到图形的右端，其中有我们之前添加的 **“SendToFormIt.Stairs”** 节点。我们要切换此输出节点，以使用已基于 FormIt 位置中选定的几何图形移动和旋转的楼梯几何图形。只需将连接从 **“楼梯几何图形”** 组切换到 **“旋转和转换的楼梯几何图形”** 组。

![](https://3938562663-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC2d4N7VJ5cPBb6LvhH2k%2Fuploads%2Fgit-blob-d2efa336db4aaefb33b94ad3e6ec543caeee5021%2F10%20\(8\)%20\(2\).png?alt=media)

## **使用图形**

1 - 现在，我们已添加选择和烘焙节点，图形已准备就绪。保存并关闭 Dynamo，然后切换回包含 **“Encode Campus Sample Model.axm”** 的 FormIt 窗口，并通过以下方式进行尝试：

1. 确保仍处于 **“剖面 - 纵向”** 场景中，然后沿第一层楼梯洞口的右边缘绘制一条 6’ 的线。这将定义楼梯的宽度和角度。
2. 在 **“Dynamo 选项板”** 中，单击 **“楼梯(顶边)”** 磁贴以开始绘制图形。
3. “Dynamo 选择向导”将显示，并指导您使用我们之前为该选择节点指定的名称进行第一个选择：**“选择顶边”**。在选择刚刚绘制的边后，在“Dynamo 选择向导”中单击向前箭头。
4. 下一个提示是我们另一个选择节点的名称：**“选择底部楼板”**。选择主编码建筑物的底层楼板，然后单击复选标记。
5. 在创建楼梯后，请注意，在 **“特性选项板”** 中现在可以为任一选择节点重新选择几何图形。另请注意，与我们删除的输入节点（即 **“楼板到楼板高度”** 和 **“楼梯宽度”** ）对应的滑块不再存在 - 它们现在基于选定的几何图形进行计算。

![](https://3938562663-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC2d4N7VJ5cPBb6LvhH2k%2Fuploads%2Fgit-blob-1a6a0ea50b03e875cbc6786bad9fd5945ada946d%2F11%20\(8\).png?alt=media)

***注意：** 如果更改顶边的位置或底部楼板的高度并重新运行图形，则楼梯将相应地更新。通常，最好避免手动移动 Dynamo 生成的任何几何图形（具体取决于 FormIt 选择），因为这可以更改其与用于创建该几何图形的选定几何图形的关系。有时，将 Dynamo 组和选择几何图形分组在一起，将有助于让它们保持连接并避免出现任何问题。*

2 - 为了完成操作，可以添加您自己的相接。我们使用前几章中介绍的各种工具执行了以下操作：

1. 在每个楼层之间创建了楼梯。
2. 稍微旋转了底部楼梯的顶边，以创建与地板稍微呈斜角的楼梯。
3. 稍微调整了每个楼梯的一些输入滑块，以实现我们所需的设置。
4. 使用了 Dynamo 的 **“沿路径栏杆扶手”** 图形，楼梯洞口周围创建平台。
5. 使用 **“扫掠”** 为每个楼梯添加了中心梯边梁。
6. 将所有楼梯、绳索和栏杆扶手都放置在名为 **“编码主建筑物 - 楼梯”** 的新图层上。

![Finished stairs, views in section.](https://3938562663-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC2d4N7VJ5cPBb6LvhH2k%2Fuploads%2Fgit-blob-498ae9dae43de453b1355709604b48caf2e13b7e%2F12%20\(7\).png?alt=media)

![Finished stairs, as visible from the Eye Level – Plaza scene.](https://3938562663-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC2d4N7VJ5cPBb6LvhH2k%2Fuploads%2Fgit-blob-a5e4cb577ab10e4302600fd3de3ebe00427896bd%2F13%20\(7\)%20\(2\).png?alt=media)
