# 编辑

Dynamo 的一个强大功能是，可以在参数化级别上编辑参数。例如，衍生式算法或模拟结果可用于驱动图元阵列的参数。这样，同一族中的一组实例可以在 Revit 项目中具有自定义特性。

### 类型和实例参数

\![Exercise](https://github.com/DynamoDS/DynamoPrimerNew/blob/master-chs/.gitbook/assets/32%20\(2\).jpg)

> 1. 实例参数定义屋顶表面上嵌板的孔径，Aperture Ratio 的范围介于 0.1 到 0.4 之间。
> 2. 基于类型的参数将应用于表面上的每个图元，因为它们的族类型相同。例如，每个嵌板的材质都可以由基于类型的参数驱动。

\![Exercise](https://github.com/DynamoDS/DynamoPrimerNew/blob/master-chs/.gitbook/assets/params%20\(1\).jpg)

> 1. 如果之前已设置过 Revit 族，请记住，需要指定参数类型（字符串、数字、尺寸标注等）。在 Dynamo 中指定参数时，请务必使用正确的数据类型。
> 2. 还可以将 Dynamo 与在 Revit 族的特性中定义的参数化约束结合使用。

在 Revit 中快速查看参数时，我们要记得有类型参数和实例参数。这两个参数在 Dynamo 中都可以进行编辑，但我们在下面的练习中使用的是实例参数。

{% hint style="info" %}
在发现了编辑参数的广泛应用后，您可能想要在 Revit 中使用 Dynamo 编辑大量图元。这可能是\_计算成本高昂\_的操作，这意味着它的速度可能会很慢。如果要编辑大量图元，可能需要使用“冻结”节点功能，以便在开发图形时暂停执行 Revit 操作。有关冻结节点的详细信息，请查看“实体”章节中的“\[冻结]\(../5\_essential\_nodes\_and\_concepts/5-2\_geometry-for-computational-design/6-solids.md)”部分。
{% endhint %}

### 单位

从版本 0.8 开始，Dynamo 基本上是无单位的。这样，Dynamo 便可保持抽象的可视化编程环境。与 Revit 尺寸标注交互的 Dynamo 节点将参照 Revit 项目的单位。例如，如果在 Revit 中设置 Dynamo 的长度参数，则 Dynamo 中的数值将对应 Revit 项目中的默认单位。下面的练习以“米”为单位。

要快速转换单位，请使用 *“Convert Between Units”* 节点。这是一个方便工具，可用于即时转换长度、面积和体积单位。

!

## 练习

> 单击下面的链接下载示例文件。
>
> 可以在附录中找到示例文件的完整列表。

{% hint style="warning" %}
下面的练习以“米”为单位。
{% endhint %}

本练习重点介绍如何编辑 Revit 图元，而无需在 Dynamo 中执行几何操作。我们在此处不会输入 Dynamo 几何图形，只需在 Revit 项目中编辑参数即可。本练习是基本练习，对于更高级的 Revit 用户，请注意这些是体量的实例参数，但可以将相同逻辑应用于图元阵列以进行大规模自定义。这全部是通过“Element.SetParameterByName”节点完成的。

### 编辑建筑体量参数

从本部分的 Revit 示例文件开始。我们已从上一部分中删除了结构图元和自适应桁架。在本练习中，我们将重点介绍 Revit 中的参数化装备，以及 Dynamo 中的操作。

在 Revit 中，选择体量中的建筑，我们可以在“特性”面板中看到实例参数的阵列。

!

在 Dynamo 中，我们可以通过选择目标图元来检索参数。

!

> 1. 使用 *“Select Model Element”* 节点选择建筑体量。
> 2. 我们可以使用 *“Element.Parameters”* 节点查询此体量的所有参数。这包括类型和实例参数。

!

> 1. 参照 *“Element.Parameters”* 节点以查找目标参数。或者，我们可以查看上一步中的“特性”面板，以选择要编辑的参数名称。在本例中，我们将查找影响建筑体量上较大几何移动的参数。
> 2. 我们将使用 *“Element.SetParameterByName”* 节点对 Revit 图元进行更改
> 3. 使用“代码块”定义参数列表，其中用引号括起来每个项目以表示字符串。我们还可以将“List.Create”节点与一系列连接到多个输入的 *“string”* 节点一起使用，但代码块更便捷。在 Revit 中，确保字符串与精确名称匹配，具体情况如下：`{"BldgWidth","BldgLength","BldgHeight", "AtriumOffset", "InsideOffset","LiftUp"};`

!

> 1. 我们还要为每个参数指定值。向画布添加六个 *“整数滑块”* ，然后重命名为列表中相应的参数。此外，根据上图设置每个滑块的值。按从上到下的顺序：62、92、25、22、8、12
> 2. 定义另一个 *“代码块”* ，其中列表与参数名称的长度相同。在本例中，我们命名变量（不带引号），这将为 *“代码块”* 创建输入。将 *“滑块”* 连接到各自的输入：`{bw,bl,bh,ao,io,lu};`
> 3. 将“代码块”连接到 *“Element.SetParameterByName”\** 值输入。在选中“自动运行”后，我们会自动看到结果。

{% hint style="warning" %}
\*此演示使用的是实例参数，而不是类型参数。
{% endhint %}

就像在 Revit 中一样，其中许多参数相互依赖。当然，在这些组合中几何图形可能会中断。我们可以在参数特性中定义公式来解决这个问题，也可以在 Dynamo 中使用数学运算设置类似逻辑（如果您想扩展练习，这也是一项额外的挑战）。

!

> 1. 此组合为建筑体量提供了功能强大的新设计：100、92、100、25、13、51

### 编辑外立面参数

接下来，我们来了解一下如何使用类似过程编辑外立面。

!

> 1. 复制图形，然后专注于将容纳桁架系统的外立面玻璃。在本例中，我们将隔离四个参数：`{"DblSkin_SouthOffset","DblSkin_MidOffset","DblSkin_NorthOffset","Facade Bend Location"};`
> 2. 此外，我们还会创建 *“数字滑块”* ，然后重命名为相应的参数。前三个滑块（从上到下）应重新映射到 \[0,10] 的域，而最后一个滑块（ *“外立面弯曲位置”* ）应重新映射到 \[0,1] 的域。这些值（从上到下）应从以下这些值开始（尽管它们是任意值）：2.68、2.64、2.29、0.5
> 3. 定义新的代码块并连接滑块：`{so,mo,no,fbl};`

!

> 1. 通过更改图形此部分中的 *“滑块”*，我们可以使外立面玻璃更加实质：9.98、10.0、9.71、0.31
