> For the complete documentation index, see [llms.txt](https://primer2.dynamobim.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://primer2.dynamobim.org/ja/5_essential_nodes_and_concepts/5-5_dictionaries-in-dynamo/4-dictionary-use-cases.md).

# Revit での使用例

Revit 内で、そこに含まれるデータの一部を使って検索しようとしたことがありますか?

次の例のような作業を行ったことがあるのではないでしょうか。

下図では、Revit モデル内のすべての部屋を収集し、必要な部屋のインデックスを(部屋番号で)取得し、最終的にそのインデックスにある部屋がわかります。

![](https://4202566639-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJPSLCt5YLZNNPlPsMyh4%2Fuploads%2Fgit-blob-57ee2173304ed18fe380ba90ddf9f31665e7dd25%2Fdictionary%20-%20collect%20room%20in%20revit%20model.jpg?alt=media)

> 1. モデル内のすべての部屋を収集します。
> 2. 検索する部屋番号。
> 3. 部屋番号を取得し、その番号のインデックスを見つけます。
> 4. インデックスで部屋を取得します。

## 演習: 部屋のディクショナリ

### パート I: 部屋のディクショナリを作成する

> 下のリンクをクリックして、サンプル ファイルをダウンロードします。
>
> すべてのサンプル ファイルの一覧については、付録を参照してください。

次に、ディクショナリを使用して、これを再作成してみましょう。まず、Revit モデル内のすべての部屋を収集する必要があります。

![](https://4202566639-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJPSLCt5YLZNNPlPsMyh4%2Fuploads%2Fgit-blob-4f93fd657908d08d5fe64d8e8a9f2d37a06e8f0e%2Fdictionary%20-%20exercise%20I%20-%2001.jpg?alt=media)

> 1. 操作する Revit カテゴリを選択します(ここでは部屋を操作します)。
> 2. Dynamo に対して、これらの要素すべての収集を指示します。

次に、このデータを検索するために使うキーを決定する必要があります。(キーに関する情報は、「[ディクショナリとは](/ja/5_essential_nodes_and_concepts/5-5_dictionaries-in-dynamo/1-what-is-a-dictionary.md)」セクションを参照してください)。

![](https://4202566639-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJPSLCt5YLZNNPlPsMyh4%2Fuploads%2Fgit-blob-1ec0f12a502edf4cea266e84cbef36bc69bb4cf4%2Fdictionary%20-%20exercise%20I%20-%2002.jpg?alt=media)

> 1. 使用するデータは部屋番号です。

ここでは、指定されたキーと要素でディクショナリを作成します。

![](https://4202566639-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJPSLCt5YLZNNPlPsMyh4%2Fuploads%2Fgit-blob-2293c774b2396d2f4f01dfa23b073f1c58813ce0%2Fdictionary%20-%20exercise%20I%20-%2003.jpg?alt=media)

> 1. **Dictionary.ByKeysValues** ノードは、適切に入力されるとディクショナリを作成します。
> 2. `Keys` は文字列であることが必要ですが、`values` はさまざまなオブジェクト タイプにすることができます。

最終的に、部屋番号を使って、ディクショナリから部屋を取得することができます。

![](https://4202566639-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJPSLCt5YLZNNPlPsMyh4%2Fuploads%2Fgit-blob-f4e7a958d123c0119fa00b3eebe2054f92ceea93%2Fdictionary%20-%20exercise%20I%20-%2004.jpg?alt=media)

> 1. `String` は、ディクショナリからオブジェクトを検索するために使用しているキーです。
> 2. **Dictionary.ValueAtKey** ノードで、ディクショナリからオブジェクトを取得します。

### パート II: 値の検索

ディクショナリによるこの同じ方法を使用して、グループ化されたオブジェクトでディクショナリを作成することもできます。指定されたレベルですべての部屋を検索する場合、上のグラフを次のように修正できます。

![](https://4202566639-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJPSLCt5YLZNNPlPsMyh4%2Fuploads%2Fgit-blob-f5680fd0df22a9a1add6ef0e5b5b07ccf0baa0bd%2Fdictionary%20-%20exercise%20II%20-%2001.jpg?alt=media)

> 1. キーとして部屋番号を使用するのではなく、パラメータの値(ここではレベル)を使用できます。

![](https://4202566639-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJPSLCt5YLZNNPlPsMyh4%2Fuploads%2Fgit-blob-5b4595a2050e731526ab4494549c40175516e9e1%2Fdictionary%20-%20exercise%20II%20-%2002.jpg?alt=media)

> 2. これで、部屋をそのレベルごとにグループ化することができます。

![](https://4202566639-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJPSLCt5YLZNNPlPsMyh4%2Fuploads%2Fgit-blob-38c09a4621fd9d92d96a77c6bce3b1252d549bac%2Fdictionary%20-%20exercise%20II%20-%2003.jpg?alt=media)

> 3. レベルごとにグループ化された要素を使用することで、共有のキー(固有のキー)をディクショナリのキーとして使用し、部屋のリストを要素として使用できるようになります。

![](https://4202566639-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJPSLCt5YLZNNPlPsMyh4%2Fuploads%2Fgit-blob-2a2d40fc51954159b92ab916f1090e9617cfe953%2Fdictionary%20-%20exercise%20II%20-%2004.jpg?alt=media)

> 4. 最終的に、Revit モデル内のレベルを使用して、ディクショナリ内で、そのレベルに配置されている部屋を検索できます。`Dictionary.ValueAtKey` は、レベル名を取得して、そのレベルの部屋オブジェクトを返します。

\[Dictionary]カテゴリのノードを使用する機会は、実際には無限にあるのです。Revit 内の BIM データを要素自体に関連付けることができるので、さまざまな使用例が考えられます。
