ディクショナリ - Revit での使用例
Revit 内で、そこに含まれるデータの一部を使って検索しようとしたことがありますか?
その際、次のような操作を行ったかもしれません。
上図では、Revit モデル内のすべての部屋を収集し、必要な部屋のインデックスを(部屋番号で)取得し、最終的にそのインデックスにある部屋がわかります。
次に、ディクショナリを使用して、これを再作成してみましょう。
この演習に付属しているサンプル ファイルをダウンロードしてください(右クリックして[名前を付けてリンク先を保存]を選択): RoomDictionary.dyn。すべてのサンプルファイルの一覧については、付録を参照してください。
まず、Revit モデル内のすべての部屋を収集する必要があります。
- 操作する Revit カテゴリを選択します(ここでは部屋を操作します)。
- Dynamo に対して、これらの要素すべての収集を指示します。
次に、このデータを検索するために使うキーを決定する必要があります(キーに関する情報は、セクション「9-1 ディクショナリとは」を参照してください)。
- 使用するデータは部屋番号です。
ここでは、指定されたキーと要素でディクショナリを作成します。
Dictionary.ByKeysValues
ノードは、適切に入力されるとディクショナリを作成します。キー
は文字列であることが必要ですが、値
はさまざまなオブジェクト タイプにすることができます。
最終的に、部屋番号を使って、ディクショナリから部屋を取得することができます。
文字列
は、ディクショナリからオブジェクトを検索するために使用しているキーです。Dictionary.ValueAtKey
ノードで、ディクショナリからオブジェクトを取得します。
ディクショナリによるこの同じ方法を使用して、グループ化されたオブジェクトでディクショナリを作成することもできます。指定されたレベルですべての部屋を検索する場合、上のグラフを次のように修正できます。
- キーとして部屋番号を使用するのではなく、パラメータの値(ここではレベル)を使用できます。
- これで、部屋をそのレベルごとにグループ化することができます。
- レベルごとにグループ化された要素を使用することで、共有のキー(固有のキー)をディクショナリのキーとして使用し、部屋のリストを要素として使用できるようになります。
- 最終的に、Revit モデル内のレベルを使用して、ディクショナリ内で、そのレベルに配置されている部屋を検索できます。
Dictionary.ValueAtKey
は、レベル名を取得して、そのレベルの部屋オブジェクトを返します。
[Dictionary]カテゴリのノードを使用する機会は、実際には無限にあるのです。Revit 内の BIM データを要素自体に関連付けることができるので、さまざまな使用例が考えられます。