Dynamo 2.0 带有各种词典节点供我们使用。这包括 创建、操作和查询 节点。
Dictionary.ByKeysValues
会使用提供的值和键创建词典。(条目数将是最短列表输入内容)
Dictionary.Components
会生成输入词典的组件。(这与创建节点相反。)
Dictionary.RemoveKeys
会生成一个新的词典对象,其中输入键已删除。
Dictionary.SetValueAtKeys
会根据输入键和值生成新词典,以替换相应键处的当前值。
Dictionary.ValueAtKey
会返回输入键处的值。
Dictionary.Count
会告诉您词典中有多少键值对。
Dictionary.Keys
会返回当前存储在词典中的键。
Dictionary.Values
会返回当前存储在词典中的值。
与词典建立整体关联数据是对使用索引和列表的旧方法的重大替代。
您是否曾想过使用 Revit 中包含的数据查找内容?
如果您已经完成了类似以下示例的操作,则有可能出现这种情况。
在下图中,我们会收集 Revit 模型中的所有房间、获取所需房间的索引(按房间编号),最后在索引处抓取房间。
收集模型中的所有房间。
要查找的房间编号。
获取房间编号并查找它所在的索引。
获取索引处的房间。
单击下面的链接下载示例文件。
可以在附录中找到示例文件的完整列表。
现在,让我们使用词典重建这个想法。首先,我们需要收集 Revit 模型中的所有房间。
我们选择要处理的 Revit 类别(在本例中,我们处理的是房间)。
我们告诉 Dynamo 收集所有这些元素
接下来,我们需要决定要使用哪些键来查找此数据。(键的相关信息位于“什么是词典?”部分中。)
我们将使用的数据是房间编号。
现在,我们将使用给定的键和元素创建词典。
节点 “Dictionary.ByKeysValues” 将根据相应的输入创建词典。
Keys
需要是字符串,而values
可以是多种对象类型。
最后,我们现在可以使用房间编号从词典中检索房间。
String
将是用于从词典中查找对象的键。现在,“Dictionary.ValueAtKey” 将从词典中获取对象。
使用相同的词典逻辑,我们还可以使用分组对象创建词典。如果我们要查找给定级别的所有房间,可以按如下所示修改上图。
我们现在可以使用参数值(在本例中,我们将使用标高),而不是将房间编号用作键。
现在,我们可以按房间所在的标高对房间进行分组。
按标高对图元进行分组后,我们现在可以使用共享键(唯一键)作为词典的键,以及将房间列表作为元素。
最后,使用 Revit 模型中的标高,我们可以在词典中查找位于该标高的房间。
Dictionary.ValueAtKey
将获取标高名称并返回该标高处的房间对象。
使用词典的机会确实是无限的。在 Revit 中将 BIM 数据与元素本身关联的功能可用于各种使用案例。
词典表示与另一数据(称为主键)相关的数据集合。词典可以搜索、删除数据并将数据插入到集合中。
我们基本上可以将词典看作真正智能的查找内容的方式。
虽然在 Dynamo 中提供词典功能有一段时间了,但 Dynamo 2.0 引入了管理此数据类型的新方式。
原始图片来源:sixtysecondrevit.com
Dynamo 2.0 不仅引入之前针对词典讨论的节点,还在代码块中提供了新功能!
可以使用如下所示的语法或基于 DesignScript 的节点表示。
由于词典是 Dynamo 中的对象类型,因此我们可以对其执行以下操作。
在将 Revit 数据与字符串相关联时,保持这些交互类型尤其有用。接下来,我们将了解一些 Revit 使用案例。
Dynamo 2.0 引入了将词典数据类型与列表数据类型进行分隔的概念。此更改可能会对您在工作流中创建和使用数据的方式作出一些重大改变。在 2.0 之前,词典和列表已组合为一种数据类型。简而言之,列表实际上是带有整数键的词典。
词典是由一组键值对组成的数据类型,其中每个键在每个集合中是唯一的。词典没有顺序,基本上可以使用键而不是类似列表的索引值来“查找”内容。在 Dynamo 2.0 中,键只能是字符串。
列表是由有序值集合组成的数据类型。在 Dynamo 中,列表使用整数作为索引值。
词典与列表之间的分离会使词典成为“一等公民”,可以使用词典快速、轻松地存储和查找值,无需记住索引值或在整个工作流中保持严格的列表结构。在用户测试期间,当使用词典而不是多个 GetItemAtIndex
节点时,我们看到图形大小显著减小。
语法 已发生更改,改变了初始化以及使用代码块中的词典和列表的方式。
词典使用以下语法:{key:value}
列表使用以下语法:[value,value,value]
库中引入了 新节点,以帮助您创建、修改和查询词典。
加载脚本时,v1.x 代码块中创建的列表会自动迁移为使用方括号 [ ]
(而不是大括号 { }
)的新列表语法 \
在计算机科学中,词典(如列表)是对象集合。虽然列表按特定顺序排列,但词典是 无序 集合。它们并不依赖于顺序编号(索引),而是使用 键。
在下图中,我们演示了词典的潜在使用案例。通常,词典用于关联两个可能没有直接相关性的数据。在本例中,我们将单词的西班牙语版本连接到英文版本,供以后查找。
构建词典来关联两条数据。
获取给定键的值。