IU Tips

Plateauデータを使って市街モデルを作る④ Dynamo編

2025.01.21

こんにちは。
IU BIM STUDIOの原田です。
前回までPlateauのデータを使ってGrasshopper、Archicadで市街モデルを作成してきました。

Grasshopper、Archicadときたので、今回はRevitでビジュアルプログラミングをすることができるDynamoを使って市街モデルを作りたいと思います。

Dynamoの起動

Dynamoを起動するにはRevitの管理メニューからDynamoのアイコンをクリックします。

画像の右から2個目です。

Dynamoのウィンドウが表示されたら新規作成を選択すると編集画面が表示されます。

今回は細かい使い方は説明しませんが、左側のメニューからノードを選択しデータを処理していきます。

Jsonファイルの読み込み

まず、JSONファイルを読み込んでいきます。
JSONファイルを読み込むにはファイルパスを指定しファイルを取得、中身のテキストをParseJSONノードでパースすることで読み込みできます。

JSONを読み込めたらキーを指定して頂点座標と高さを取り出します。

リストの整理

頂点を作成するために座標をXYZごとに仕分けする必要があります。
ただ、頂点は建物ごとにまとめられているため、下記の画像のようにリストが少し深くなっています。

このようなリストから値を取り出すには少し設定が必要です。
インプットの部分の>マークをクリックすると設定が出てくるので、それらの「レベルを使用」、「リスト構造を保持」にチェックを入れます。

レベルは元のリストに応じて適宜調整します。
そうすることで、建物ごとのまとまりを保ったままXYZそれぞれの座標の値をリストとして取り出すことができます。

頂点座標・底面の作成

頂点座標のリストが取り出せたら、それを元に頂点を作成していきます。


頂点はPoint.ByCoordinatesを使ってXYZの座標を指定することで作成できます。

頂点をそれぞれXYZに入れ、できた頂点のリストをPolygon.ByPointsに入れます。
これで底面図形を作成することができました。

図形の押出

底面ができたらSolid.BySweepを使って建物形状を作成します。

底面を押し出すにはパスとなる曲線が必要なので、曲線を作ります。
曲線はポリゴンの中心点とそれをJSONから取得した高さ分上に動かした点を結ぶものにします。

Revitへの配置

できた建物形状をRevitの要素として作成します。

今回はカテゴリはマスで、マテリアルは”塗装 – 象牙色”としました。
DirectShape.ByGeometryを使ってRevitのプロジェクト上に配置します。

Revit上でモデルを確認

Revit上にモデルが作成されました。

ただ、何か線が太いですね…?

調べたところ単位の問題でした。
Revit側はミリメートルで、JSON側はメートルなので、変換が必要でした。
なので、Revit形状を作成する前に単位を変換します。

これでRevitで市街モデルを作成することができました。

Dynamoのスクリプトは下記のとおりです。

色々なソフトで市街モデルを作ってきましたが、ツールはあくまでツールなので、自分が欲しい情報が何でどのように取得し加工すればそれが得られるかを考えるのが大切ですね。

今回は以上です。
最後までお読みいただきありがとうございました。