ZeroTouch Nodeを使ってDynamoをカスタマイズしよう4_コンポーネントファミリ配置編

皆様こんにちは
AMDlabの秋山です。

前回に引き続きZeroTouch Nodeの第4弾です。
今回は、ZeroTouch Nodeを使用して、Revitエレメント(コンポーネントファミリ)を配置する方法をお話していきます。

今回作成するノードは
1.壁ホストに窓配置
2.床ホストに家具配置
3.ホストなしで柱配置
の3つになります。

1.壁ホストに窓配置


以下が今回作成するコードになります。

上記のコードを簡単に解説していきます。
まず初めに名前空間をインポートします。ライブラリやフレームワークの特定部分を参照するために記述します。

クラスを定義します。

メソッドの定義をします。
このメソッドは、指定された壁と位置に窓を配置します。

次に、Revitエレメントを取得していきます。
Dynamoで受け取ったWindowTypeとWallをRevitAPIのオブジェクト(Autodesk.Revit.DB.FamilySymbolやAutodesk.Revit.DB.Wall)に変換します。
詳しくは前回の記事で説明しているので確認ください。

次に、doc.Create.NewFamilyInstance()メソッドを使用して窓を配置します。このメソッドは様々な引数を設けることができますが、今回は窓の位置、窓のファミリタイプ、窓をホストする壁である赤枠を使用します。
こちらで詳細を確認できます。


コーディングが完了したら、Visual Studioでプロジェクトをビルドします。ビルドが成功すると、指定したプロジェクトフォルダ内の「bin\Debug」または「bin\Release」ディレクトリにDLLファイルが生成されます。
Dynamoを開き、[ファイル] タブから「ライブラリを読み込む」を選択し、生成したDLLファイルを選択してインポートします。
インポート後、新しいノード(カスタムノード)として「WindowPlacement.PlaceWindow」が利用可能になりましたので、配置してみます。

壁をホストに窓が配置されました。
続いては床をホストに家具を配置していきます。

2.床ホストに家具配置


以下が今回作成するコードになります。

上記のコードを今回も簡単に解説していきます。窓の配置と内容が同じ箇所は省略します。
まず初めにクラスとメソッドの定義をします。
このメソッドは、家具を指定された床と位置に配置します。引数はDynamoのインプットになります。

次に家具を配置していきます。使用するメソッドは先ほどと同じもので、ホストとする対象を壁から床に変更します。

コーディングが完了したら、先ほど同様ビルドをし「FurniturePlacement.PlaceFurnitureOnFloor」を配置してみます。

床をホストに家具が配置されました。
最後にホストなしで柱を配置していきます。

3.ホストなしで柱配置


以下が今回作成するコードになります。

クラスとメソッドの定義をします。
このメソッドは、柱を指定された基準レベルと位置に配置し、設定した上部レベルまで伸ばします。

次に柱を配置していきます。使用するメソッドは先ほどと同じNewFamilyInstance()ですが引数が異なります。今回は赤枠のレベルを使用して基準レベルを設定します。

次に上部レベルを設定します。
Autodesk.Revit.DB.ParameterというRevitのパラメータを扱うクラスのインスタンスをtopLevelParam という変数にし、 FAMILY_TOP_LEVEL_PARAM パラメータを格納します。
get_Parameter()メソッドはcolumn(柱のインスタンス)から特定のパラメータを取得するものです。
今回引数とするパラメータはビルトインパラメータ※1の1つですが、添付の様にRevitには多くのビルトインパラメータが存在します。その中から今回は赤枠のFAMILY_TOP_LEVEL_PARAM を使用します。
こちらで詳細を確認できます。
柱や壁などのRevit要素において、その上部がどのレベルまで到達するかを示すパラメータになります。

パラメータには読み込み専用のパラメータも存在するので読み込み可能なパラメータかどうかを判定をしています。
Revitのパラメータのプロパティ上でグレー表記になっているものは読み込みオンリーのパラメータです。


※1 ビルトインパラメータは組み込みパラメータとも呼ばれ、Revitに組み込まれている標準のパラメータのこと。

コーディングが完了したら、先ほど同様ビルドをし「ColumnPlacement.PlaceColumn」を配置してみます。

柱が作成されました。

今回は、ZeroTouch Nodeを使用して、Revitエレメント(コンポーネントファミリ)を配置する方法を説明しました。
次回は、第5弾で、ZeroTouch Nodeを使用してRevitドキュメント・パラメータを操作するお話をしていきます。

BIM
Dynamo Revit
Tech
C#
ARTICLES