Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Dynamo を Revit に組み込んで使用すると、Revit のビルディング インフォメーション モデリング(BIM)機能を、データとロジックに基づく Dynamo の視覚的なアルゴリズム編集環境によって拡張することができます。Dynamo の柔軟性を Revit の堅牢なデータベース機能と組み合わせることにより、BIM の新しい可能性が広がります。
この章では、Dynamo を使用した BIM ワークフローについて説明します。この章の各セクションでは、演習を行いながら BIM を確認していきます。BIM の視覚的なアルゴリズム編集機能の仕組みを理解するには、サンプルのプロジェクトで実際に操作するのが最適な方法です。ただしその前に、Dynamo の歴史を簡単に説明します。
Revit と Dynamo はどちらも進化し続けているため、作業中の Revit のバージョンが、マシンにインストールされている Revit 用の Dynamo のバージョンと互換性がない場合があります。次の一覧は Revit と互換性のある Revit 用の Dynamo のバージョンの概要です。
Dynamo プロジェクトは、開発チームとコミュニティの積極的なサポートによってここまで発展しましたが、最初の目標は小さなものでした。
Dynamo は、もともと Revit の設計ワークフローを合理化するために開発されました。Revit では、プロジェクトごとに堅牢なデータベースが作成されますが、ユーザ インタフェースの制約を受けることなくこの情報にアクセスすることは、一般的なユーザにとっては難しい場合があります。Revit には包括的な API (アプリケーション プログラム インタフェース)が用意されているため、サードパーティの開発者はこれらの API を使用して、カスタマイズされたツールを作成することができます。プログラマーであればこの API には慣れていますが、プログラミングの経験がないユーザとっては、テキストベースのスクリプトを記述することは簡単なことではありません。Dynamo の開発チームは、わかりやすい視覚的なアルゴリズム エディタを提供することにより、Revit のデータを簡単に操作できるようにすることを目指しています。
カスタマイズされた Revit と Dynamo の主要なノードを組み合わせて使用すると、相互運用性、設計図書作成、解析、モデル生成などにおいて、パラメータ制御によるワークフローの範囲を大きく広げることができます。Dynamo を使用すれば、面倒なワークフロー作業を自動化し、設計作業に集中することができます。
Revit プロジェクトやファミリ エディタで、[アドイン]タブから[Dynamo]をクリックします。*
*Dynamo は、Dynamo を起動したファイル内でのみ実行されることに注意してください。
Revit で Dynamo を起動すると、Dynamo のライブラリ内に[Revit]という新しいカテゴリが表示されます。この新しいカテゴリから、Revit ワークフロー専用のノードにアクセスすることができます。
*Revit 固有のファミリを扱うノードを使用する場合、Dynamo グラフは Revit 用の Dynamo から開いたときにのみ正常に動作します。たとえば、Revit 用の Dynamo のグラフを Dynamo Sandbox で開くと、Revit ノードが失われます。
Revit は堅牢なプロジェクト管理を提供するプラットフォームであるため、場合によっては Dynamo のパラメータ操作が複雑になり、計算速度が低下することがあります。Dynamo によるノード計算で時間がかかる場合は、ノードを「フリーズ」する機能を使用して、グラフの開発中に Revit 関連操作の実行を停止することができます。
ノードのフリーズの詳細については、「ノードとワイヤ」セクションを参照してください。
Dynamo は、もともと建築設計者や構造設計者向けに開発されたツールです。Dynamo のコミュニティは、建設業界の専門家と交流しながら学ぶことができる場所として、現在も成長を続けています。Dynamo のコミュニティは、情報の共有と開発プロジェクトに積極的に参加する建築設計者、構造設計者、プログラマ、デザイナーによって構成されています。
Dynamo は、継続的に進化していくオープンソース プロジェクトであり、その開発の大部分は Revit に関係しています。ディスカッション フォーラムにアクセスし、質問を投稿してみてください。プログラマとして Dynamo プロジェクトに参加する場合は、GitHub リポジトリを参照してください。また、Dynamo package manager では、さまざまなサードパーティ製ライブラリが提供されています。提供されているパッケージの多くは、建設業界のワークフローで使用することを目的として作成されています。実際に、パネル作成用のサードパーティ製パッケージを使用してみましょう。
Dynamo 開発チームは、ブログを頻繁に更新しています。最近の記事を確認し、最新の開発情報を入手してください。
Dynamo には、パラメトリック レベルでパラメータを編集するための強力な機能が用意されています。たとえば、生成アルゴリズムやシミュレーションの結果を使用して、要素の配列のパラメータをコントロールすることができます。この方法で、同じファミリのインスタンスの集合に、Revit プロジェクトのカスタム プロパティを設定することができます。
インスタンス パラメータは、0.1 ~ 0.4 の開口率で、屋根サーフェス上のパネルの開口部を定義します。
タイプベースのパラメータは、サーフェス上のすべての要素に適用されます。これらの要素は同じファミリ タイプであるためです。たとえば、各パネルのマテリアルをタイプベースのパラメータによってコントロールできます。
Revit ファミリを設定する場合と同様に、ここで文字列、数値、寸法などのパラメータ タイプを指定する必要があります。 Dynamo からパラメータを割り当てる場合は、必ず正しいデータ タイプを使用してください。
また、Revit ファミリのプロパティで定義されたパラメトリック拘束と組み合わせて Dynamo を使用することもできます。
Revit のパラメータの簡単な復習として、タイプ パラメータとインスタンス パラメータの 2 種類があることを思い出してください。両方とも Dynamo で編集できますが、次の演習ではインスタンス パラメータを使用します。
編集するパラメータの用途は幅広いため、Revit と Dynamo を併用すると、多くの要素を編集できます。これは 計算量の多い演算 であるため、速度が低下することがあります。多くの要素を編集する場合は、ノードを「フリーズ」する機能を使用して、グラフの作成中に Revit に関連した操作の実行を一時的に停止することをお勧めします。ノードをフリーズする操作の詳細については、「ソリッド」の章の「 フリーズ 」セクションを参照してください。
バージョン 0.8 以降、基本的に Dynamo では単位が使用されなくなりました。これにより、抽象的なビジュアル プログラミング環境が実現します。Revit の寸法を使用する Dynamo のノードは、Revit プロジェクトの単位を参照します。たとえば、Revit の長さパラメータを Dynamo で設定する場合、Dynamo の数値は Revit プロジェクトの既定の単位に対応します。次の演習では、メートル単位の数値を操作します。
単位を素早く変換するには、Convert Between Units ノードを使用します。このノードは、長さ、面積、体積の単位をその場で変換できる便利なツールです。
下のリンクをクリックして、サンプル ファイルをダウンロードします。
すべてのサンプル ファイルの一覧については、付録を参照してください。
次の演習では、メートル単位の数値を操作します。
この演習では、Dynamo でジオメトリ操作を実行することなく Revit 要素を編集します。Dynamo ジオメトリを読み込まず、Revit プロジェクトで直接パラメータを編集します。これは基本的な演習です。Revit の上級ユーザであれば、次の図のパラメータはマスのインスタンス パラメータであることがわかるでしょう。同じロジックを要素の配列に適用し、大規模なカスタマイズを行うことができます。これは、すべて Element.SetParameterByName ノードで行います。
このセクションでは、最初にサンプルの Revit ファイルを使用します。構造要素とアダプティブ トラスは、前のセクションで削除されました。この演習では、Revit のパラメータ機能を確認しながら、Dynamo で操作を行います。
Revit で建物のマスを選択すると、プロパティ パネルにインスタンス パラメータの配列が表示されます。
Dynamo では、ターゲット要素を選択してパラメータを取得できます。
Select Model Element ノードを使用して、建物のマスを選択します。
Element.Parmaters ノードを使用して、このマスのすべてのパラメータのクエリーを実行できます。パラメータには、タイプ パラメータとインスタンス パラメータがあります。
Element.Parameters ノードをクリックして、ターゲット パラメータを検索します。または、前の手順のプロパティ パネルを表示して、編集するパラメータ名を選択することもできます。この場合、建物のマスの形状に大きく影響するパラメータを探す必要があります。
Element.SetParameterByName ノードを使用して、Revit 要素に変更を加えます。
Code Block ノードを使用してパラメータ リストを定義します。各項目は文字列を示す引用符で囲みます。List.Create ノードを使用して、"文字列" で示した一連のノードを複数の入力に接続することもできますが、Code Block ノードを使用すると処理が高速かつ簡単になります。文字列が Revit の名前と一致していることを確認します(大文字と小文字は区別されます)。
{"BldgWidth","BldgLength","BldgHeight", "AtriumOffset", "InsideOffset","LiftUp"};
各パラメータの値を指定します。Integer Slider ノードを 6 つキャンバスに追加し、リスト内のパラメータに合わせて名前を変更します。また、各スライダの値を上の図のように設定します。上から下に、62、92、25、22、8、12 の順で設定します。
パラメータ名の数と同じ長さのリストを使用して、別の Code Block ノードを定義します。その際、Code Block ノードの入力を作成する変数の名前を、引用符を使用せずに入力します。このリスト
{bw,bl,bh,ao,io,lu};
の各入力に スライダ を接続します。Code Block ノードを Element.SetParameterByName ノード* の value 入力に接続します。[自動実行]がオンになっている場合は、結果が自動的に表示されます。
*このデモンストレーションは、インスタンス パラメータには対応していますが、タイプ パラメータには対応していません。
Revit と同様に、これらのパラメータの多くは相互に依存関係があります。これらの中には、ジオメトリが壊れてしまう組み合わせもあります。この問題を解決するには、定義済みの式をパラメータ プロパティで使用するか、Dynamo の数値演算で同様のロジックを設定します。余裕があれば、この演習の追加の課題として取り組んでみてください。
100、92、100、25、13、51 という組み合わせにより、特徴的な新しいデザインが建物のマスに追加されます。
次に、同様のプロセスを使用してファサードを編集する方法について説明します。
グラフをコピーして、トラス システムを格納するファサードのグレージングを確認します。この場合、4 つのパラメータを分離します。
{"DblSkin_SouthOffset","DblSkin_MidOffset","DblSkin_NorthOffset","Facade Bend Location"};
また、Number Slider ノードを使用して、対応するパラメータに合わせて名前を変更します。上から 3 つのスライダは[0,10]の範囲に再マップし、一番下のスライダ(Facade Bend Location)は[0,1]の範囲に再マップします。次に、これらの値を 2.68、2.64、2.29、0.5 にそれぞれ設定します(実際は任意です)。
新しい Code Block ノードを定義し、スライダを接続します。
{so,mo,no,fbl};
グラフのこの部分の スライダ を使用して値をそれぞれ 9.98、10.0、9.71、0.31 に変更すると、ファサード ガラスがさらにがっしりとした形状になります。
Dynamo は、さまざまなプログラムで活用できるように設計された柔軟なプログラミング環境ですが、もともとは Revit と組み合わせて使用するために開発されました。ビジュアル プログラミングにより、ビルディング インフォメーション モデリング(BIM)の堅牢な設計案を作成することができます。Dynamo には、Revit 専用に設計されたさまざまなノードが用意されています。さらに建設業者のコミュニティでも、各種のサードパーティ製ライブラリが開発されています。この章では、Dynamo を Revit に組み込んで使用する際の基本的な操作方法について説明します。
Revit は、非常に豊富なデータを扱う環境です。このため、選択機能が「ポイント アンド クリック」をはるかに超えた範囲にまで拡張されています。パラメトリックな操作の実行中に、Revit のデータベースにクエリーを行い、Revit の要素を Dynamo のジオメトリに動的にリンクすることができます。
[Revit]ライブラリの[Selection]カテゴリから、さまざまな方法でジオメトリを選択できます。
Revit の要素を選択するには、Revit の要素の階層構造について十分に理解しておくことが大切です。プロジェクト内のすべての壁を選択するには、カテゴリ単位で選択します。ミッドセンチュリー モダン スタイルのロビーに配置したイームズ チェアをすべて選択するには、ファミリ単位で選択します。
Revit の階層を簡単に確認してみましょう。
生物学ではあらゆる生物が体系的に分類されており、その分類法は、上位から下位にかけて、界、門、網、目、科、属、種という階層構造から成り立っています。Revit における要素の分類法はこれに似ています。基本的には、Revit の階層構造は、上位から下位にかけて、カテゴリ、ファミリ、タイプ、インスタンスに分かれています。インスタンスは(ユニークな ID を持つ)個別のモデル要素です。カテゴリは、「壁」や「床」などの一般的なグループのことです。このようにして構成されている Revit のデータベースを使用して、1 つの要素を選択したり、階層構造の中の指定したレベルに基づいて同種の要素をすべて選択することができます。
*Revit における「タイプ」の定義は、プログラミングでいう「型」とは異なります。Revit でいう「タイプ」は、いわゆる「データ型」の「型」ではなく、分類階層における 1 つの枝を指します。
次の 3 つの画像では、Revit の要素を Dynamo で 選択するいくつかの主だった方法を紹介しています。これらのツールを組み合わせて使用すると便利です。その一部をこれ以降の演習で実際に使用してみましょう。
ポイント アンド クリック は、Revit の要素を直接選択する最も簡単な方法です。モデル要素全体であれ、そのトポロジの一部(たとえば 1 つの面や 1 つのエッジ)であれ、選択することができます。この方法では Revit オブジェクトへの動的なリンクが維持されるため、Revit ファイルの場所やパラメータが変更されると、グラフ内で参照されている Dynamo の要素が更新されます。
ドロップダウン メニュー で、Revit プロジェクト内のアクセス可能なすべての要素のリストが作成されます。ビューで確認できない Revit の要素も含めて、これで参照できます。Revit プロジェクトやファミリ エディタで既存の要素をクエリーしたり、新しい要素を作成するには、このツールが役に立ちます。
![](../.gitbook/assets/selecting _database_navigation_with_dynamo_nodes_02.png)
Revit の要素の選択方法としては、他に Revit の階層構造 から特定の階層を指定する方法もあります。この方法は、設計図書作成、インスタンスの生成とカスタマイズなどのために準備されている大規模なデータ配列をカスタマイズするのにとても役立ちます。
上記の 3 点の画像に留意して、この章の続きで説明するパラメトリック アプリケーションの作成に備えて、基本的な Revit プロジェクトから要素を選択する演習を開始しましょう。
下のリンクをクリックして、サンプル ファイルをダウンロードします。
すべてのサンプル ファイルの一覧については、付録を参照してください。
この Revit ファイルのサンプルには、3 つの要素タイプから成る 1 つの単純な建物モデルが含まれています。それでは、このモデルを見本として使用して、次に挙げる Revit の階層構造の中で Revit の要素を選択してみましょう。
建物のマス(基本形状)
梁(構造フレーム)
トラス(アダプティブ コンポーネント)
Revit のプロジェクト ビューに表示されている要素から、どのような結論を導き出すことができますか。また、適切な要素を選択するには、階層をいくつ降りていく必要があるでしょうか。言うまでもありませんが、大規模なプロジェクトで作業する際にはこの問題はもっと複雑になります。使用できるオプションはたくさんあり、カテゴリ別、レベル別、ファミリ別、インスタンス別に要素を選択することができます。
ここでは基本的な構造を扱っているので、Categories ドロップダウン ノードで[Mass]を選択して、建物のマスを選択してみましょう。これは、[Revit] > [Selection]タブにあります。
[Mass]カテゴリのノードでは、単純にカテゴリ自体が出力されるので、要素を選択する必要があります。これを実行するには、All Elements of Category ノードを使用します。
この時点では、Dynamo にジオメトリが何も表示されません。Revit の要素が既に選択されていますが、まだ Dynamo ジオメトリに変換されてはいません。この区別は重要です。多数の要素を選択する場合は、すべての動作が非常に遅くなるおそれがあるため、すべての要素を Dynamo でプレビューすることは好ましくありません。Dynamo は、ジオメトリ操作の実行を必要とせずに Revit のプロジェクトを管理することのできるツールです。そのことについては、この章の次のセクションで説明します。
ここでは単純なジオメトリを使用して演習を行っているので、Dynamo のプレビューでジオメトリを表示できるようにします。上記の Watch ノード中の「BldgMass」の隣に、緑の背景色付きで数値が表示されています。これは要素の ID を表しており、この ID からユーザが Dynamo ジオメトリではなく Revit 要素を扱っていることがわかります。次の手順で、この Revit 要素を Dynamo ジオメトリに変換してみましょう。
Element.Faces ノードを使用して、Revit のマスの各面を表すサーフェスのリストを取得します。これで、Dynamo のビューポートでジオメトリを表示し、その面をパラメトリック操作の際に参照できるようになりました。
別の方法を紹介します。この場合は、(All Elements of Category ノードを使用して) Revit の階層から選択を行い、Revit のジオメトリを指定して明示的に選択するという方法を採りません。
Select Model Element ノードを使用して、[選択] (または [変更] )ボタンをクリックします。Revit のビューポートで、目的の要素を選択します。この場合は、建物のマスを選択することにします。
Element.Faces ノードではなく Element.Geometry ノードを使用すると、マス全体を 1 つのソリッド ジオメトリとして選択できます。このノードでは、そのマスの内部に含まれるすべてのジオメトリが選択されます。
Geometry.Explode ノードを使用した場合も、サーフェスのリストを取得できます。これら 2 つのノードは、Element.Faces と同様の機能に加えて、Revit 要素のジオメトリを掘り下げるのに役立つオプションを提供します。
リストの基本的操作をいくつか行うことで、対象の面のクエリーを実行できます。
最初に、選択した要素を前のノードから Element.Faces ノードに出力します。
次に List.Count ノードを使用して、作業中のマスに 23 のサーフェスが含まれていることを確認します。
この数値を基準として、Integer Slider ノードの最大値を 「22」 に変更します。
List.GetItemAtIndex ノードを使用して、list と index に入力します(index には Integer Slider ノードを使用)。選択したスライダを index 9 まで動かして、トラスをホストしているメイン ファサードが選択表示された段階で停止します。
前の手順は少し面倒でした。Select Face ノードを使用すると、同じことをもっとすばやく実行できます。この方法では、Revit プロジェクト内ではそれ自体で 1 つの要素として扱われない面も選択できます。Select Model Element でも同様の操作を行うことができます。ただし、こちらでは要素全体ではなくサーフェスを選択します。
建物のメイン ファサードの壁を選択してみましょう。Select Faces ノードを使用してこれを行うことができます。[選択]ボタンをクリックし、Revit で 4 つのメイン ファサードを選択します。
4 つの壁面を選択した後で、必ず Revit で[終了]ボタンをクリックしてください。
これで、面が Dynamo にサーフェスとして読み込まれました。
さて、アトリウムの上の梁を見てみましょう。
Select Model Element ノードを使用して、梁のうち 1 つを選択します。
梁の要素を Element.Geometry ノードに接続すると、Dynamo のビューポートで梁が表示されるようになります。
Watch 3D ノードを使用してジオメトリを拡大表示することができます(Watch 3D で梁が表示されない場合は、右クリックしてから[全体表示]を選択します)。
Revit と Dynamo の使用中にしばしば生じる疑問として、1 つの要素を選択して、それに類似するすべての要素を取得するにはどうすればいいのか、というものがあります。選択した Revit 要素にはその要素の階層に関する情報がすべて含まれているので、そのファミリ タイプをクエリーして、同じタイプの要素をすべて選択することができます。
梁の要素を Element.ElementType ノードに接続します。
Watch ノードで、出力が Revit 要素ではなくファミリ記号になっていることが確認できます。
Element.ElementType は単純なクエリーであるため、コード ブロック内で
x.ElementType;
と入力するだけで同様の結果を得ることができます。
残りの梁を選択するには、All Elements of Family Type ノードを使用します。
Watch ノードで、5 つの Revit 要素が選択されていることを確認します。
これら 5 つの要素すべてを Dynamo のジオメトリに変換することもできます。
いずれにせよ、500 本の梁を読み込まなければならない場合、目的のパラメータ操作を実行するのにすべてのサーフェスは必要でしょうか。それとも、梁から基本情報を抽出して、基本的なジオメトリを使用して生成タスクを実行すればよいでしょうか。この問いを念頭に置きながら、この章での演習を進めていくことにしましょう。たとえば、次はトラス システムについて考えてみましょう。
同じノードのグラフを使用して、梁要素ではなくトラス要素を選択します。この操作を行う前に、ここまでの手順で使用した Element.Geometry を削除してください。
次に、トラスのファミリ タイプから基本的な情報を抽出する準備を行います。
Watch ノードで、Revit から選択されたアダプティブ コンポーネントのリストを取得していることを確認できます。基本情報を抽出するために、まずはアダプティブ点からとりかかります。
All Elements of Family Type ノードを AdaptiveComponent.Location ノードに接続します。これによってリストのリストが 1 つ作成されます。各リストは、アダプティブ点の場所を表す 3 つの点から構成されています。
Polygon.ByPoints ノードを接続すると、ポリカーブが返されます。これは Dynamo のビューポートで確認できます。この方法により、1 つの要素のジオメトリを表示し、残りの要素配列のジオメトリを抽出しました(なお、ここで扱った例よりも多くの要素を抽出することが可能です)。
ヒント: Dynamo で、Revit 要素の緑の背景色付きで表示されている数字をクリックすると、Revit のビューポートでその要素が拡大表示されます。
ここまでのセクションの演習に続けて、パラメータを編集して設計図書を作成してみましょう。このセクションでは、パラメータを編集することで、要素のジオメトリの特性を左右するのではなく、Revit ファイルから設計図書を作成できるようにする方法について紹介します。
以降の演習では、水平面からの基本的な偏差を使用して、設計図書作成用に Revit のシートを作成します。パラメータで定義した屋根構造上のパネルにはそれぞれ異なる偏差の値が与えられています。そこで、色分けによって値の範囲をわかりやすく表示し、アダプティブ点を集計表に書き出してファサード設計の監修者、設計者、または施工業者に渡すことができるようにしましょう。
水平面からの偏差を取得するノードにより、4 つの点群と最適な水平面の間の距離が計算されます。これで施工性をすばやく簡単に検討することができます。
下のリンクをクリックして、サンプル ファイルをダウンロードします。
すべてのサンプル ファイルの一覧については、付録を参照してください。
このセクション用の Revit ファイルを使用して(または前のセクションからの続きとして)演習を開始しましょう。このファイルには、屋根上の ETFE パネルの配列が収録されています。以降の演習でこれらのパネルを参照します。
Family Types ノードをキャンバスに追加し、ROOF-PANEL-4PT を選択します。
このノードを All Elements of Family Type ノードに接続することで、すべての要素を Revit から Dynamo に取得します。
AdaptiveComponent.Locations ノードにより、各要素のアダプティブ点の位置をクエリーします。
Polygon.ByPoints ノードを使用して、これら 4 点から 1 つのポリゴンを作成します。これにより、Revit 要素のジオメトリをすべて読み込むことなく、パネル システムの抽象化されたバージョンを Dynamo で取得できます。
Polygon.PlaneDeviation ノードを使用して、水平面からの偏差を計算します。
前の演習と同様に、各パネルの開口率を水平面からの偏差に基づいて設定してみましょう。
Element.SetParameterByName ノードをキャンバスに追加して、その element 入力にアダプティブ コンポーネントを接続します。開口率(Aperture Ratio) を読み取っている Code Block ノードを、parameterName 入力に接続します。
偏差の出力を直接 value 入力に接続することはできません。なぜなら、複数の値をパラメータ範囲にマッピングし直す必要があるからです。
Math.RemapRange ノードを使用して、Code Block ノードに
0.15; 0.45;
を入力することで偏差の値を 0.15 から 0.45 までの範囲にマッピングし直します。そのノードの出力を Element.SetParameterByName の value 入力に接続します。
Revit に戻ると、サーフェス全体の開口率が 多少 変化したことがわかります。
拡大表示するとはっきりわかるように、サーフェスの四隅に近付くほどパネルが閉じていく傾向にあり、また隆起の頂点へ近付くほどパネルが開いていく傾向にあります。これは、四隅のあたりでは水平面からの偏差が大きく、ふくらみの部分では水平に近くになっているためです。
[開口率]の設定では、屋根上のパネルの偏差があまりよくわかりません。また、実際の要素のジオメトリが変更されてしまいます。単に製造性の観点から偏差を検討するだけであれば、設計図書作成の際に、偏差の範囲に基づいてパネルを色分けするとよいでしょう。下記の一連の手順によってそのような色分けを行うことができます。これは上記の手順にとてもよく似ています。
Element.SetParameterByName ノードとその入力ノードを削除し、Element.OverrideColorInView ノードを追加します。
Color Range ノードをキャンバスに追加して、そのノードを Element.OverrideColorInView の color 入力に接続します。さらに、グラデーションを作成するために偏差の値を Color Range ノードに接続する必要があります。
value 入力にカーソルを合わせると、その入力の値が 0 から 1 までの範囲で表示されます。この値は、値ごとに色をマッピングするのに使用されます。偏差の値をこの範囲にマッピングし直す必要があります。
Math.RemapRange を使用して、水平面からの偏差を 0 から 1 までの範囲にマッピングし直します(注: MapTo ノードを使用してソースの範囲を設定することもできます)。
その出力結果を Color Range ノードに接続します。
ここでの出力は、数値の範囲ではなく、色の範囲です。
[手動]に設定している場合は[実行]をクリックします。これ以降の手順では、[自動]に設定しないように注意してください。
Revit に戻ると、かなり見やすいグラデーションが表示されます。これは、ユーザが指定した色の範囲に基づいて、水平面からの偏差を表しています。色分けをカスタマイズするには、どうすればよいでしょうか。いま偏差の最小値は赤色で表示されていますが、これとは逆の色分けに変更してみましょう。つまり、偏差の最大値を赤色に、偏差の最小値をもっと落ちついた色に設定することにします。Dynamo に戻ってこの修正を行ってみましょう。
Code Block ノードを使用して、
0;
と255;
という 2 つの数値を、2 行に分けて追加します。2 つ の Color.ByARGB ノードに適切な値を接続することで、赤色と青色を作成します。
これらの 2 色から 1 つのリストを作成します。
このリストを Color Range ノードの colors 入力に接続し、カスタマイズした色の範囲が更新されていることを確認します。
Revit に戻ると、水平面からの偏差が四隅の領域で最大になっていることがよりはっきり確認できます。なお、このノードはビュー内の色の優先設定に使用されます。したがって、一連の図面のなかで特定のシートが特定のタイプの解析を目的としている場合に、とても役に立ちます。
Revit で ETFE パネルを選択すると、XYZ1、XYZ2、XYZ3、XYZ4 という 4 つのインスタンス パラメータが表示されます。作成後、これらのパラメータはすべて空になっています。これらは文字ベースのパラメータであり、値を必要とします。Dynamo を使用して、各パラメータにアダプティブ点の位置を入力します。この機能は、ジオメトリをファサード設計の監修者に送信する必要がある場合に、相互運用性の確保に役立ちます。
サンプルのシートには大規模な空の集計表が含まれています。XYZ パラメータは Revit ファイルでも使用される共有パラメータであり、このファイルによってパラメータを集計表に追加することができます。
拡大表示すると、XYZ パラメータはまだ入力されていません。左側 2 つのパラメータは Revit によって処理されています。
これらのパラメータに値を入力するために、これから複雑なリスト操作を行います。グラフ自体は単純ですが、考え方はリストの章で紹介したリストのマッピングを大いに活用しています。
2 つのノードを使用してアダプティブ コンポーネントをすべて選択します。
AdaptiveComponent.Locations ノードを使用して、各点の位置を抽出します。
これらの点を文字列に変換します。なお、パラメータはテキストベースですから、正しいデータ タイプを入力する必要があることに注意してください。
変更するパラメータを定義する 4 つの文字列 XYZ1、XYZ2、XYZ3 、 XYZ4 から、1 つのリストを作成します。
このリストを Element.SetParameterByName ノードの parameterName 入力に接続します。
Element.SetParameterByName ノードを List.Combine ノードの combinator 入力に接続します。アダプティブ コンポーネント を list1 入力に接続します。String from Object ノードを list2 入力に接続します。
ここでリスト マッピングを行います。各要素に 4 つの値を書いていて、複雑なデータ構造になっているからです。List.Combine ノードはデータ階層内の 1 段階下の層で操作を定義します。Element.SetParameterByName の element 入力と value の入力が空のままになっているのはこのためです。List.Combine ノードは、入力のサブリストを、接続された順番に基づいて Element.SetParameterByName ノードの空の入力に接続します。
Revit でパネルを選択すると、各パラメータに文字列値が入力された状態で表示されます。実際のプログラミングでは、(X,Y,Z)のようにより単純な形式で 1 つの点を作成するものです。これは Dynamo の文字列操作で可能ですが、この章で取り扱う範囲から逸脱しないようにするために、その方法はここでは紹介しません。
パラメータへの入力が完了しているサンプル集計表のビューです。
各 ETFE パネルを構成するすべてのアダプティブ点について XYZ 座標が記入されています。これらが製造用の各パネルの四隅を表します。
Revit のバージョン | 最も安定する Dynamo のバージョン | サポートされる最も古い Revit 用の Dynamo のバージョン |
---|---|---|
しかし、500 本の梁を変換しなければならないとしたら、どうでしょうか。すべての要素を Dynamo ジオメトリに変換するにはたいへんな時間がかかるでしょう。Dynamo によるノード計算で時間がかかる場合は、ノードを「フリーズ」する機能を使用して、グラフの開発中に Revit 関連操作の実行を停止することができます。ノードをフリーズする操作の詳細については、「ソリッド」の章の「」セクションを参照してください。
2013
2014
2015
2016
2017
2018
2019
2020
2.1.0 - Revit 2020 以降では Dynamo が含まれるようになりました。Revit の更新がすぐに反映されます。
(動作なし)
ここまで、基本的な建物のマスを編集する方法について紹介してきました。ここからは、多数の要素を一度に編集することで Dynamo と Revit のリンクについてより深く掘り下げていきましょう。カスタマイズする対象の規模が拡大すると、リストのデータ構造においてより高度な操作が要求されるので、カスタマイズの操作がより複雑になります。ただし、それを実行する背景で駆動している原理原則は、根本的にはこれまでと変わりありません。検討のために、アダプティブ コンポーネントのセットからいくつかの事例を取り上げてみましよう。
アダプティブ コンポーネントを既に作成したという前提で、これからその点群の位置に基づいてパラメータを編集していくことにします。点群により、たとえば、要素の領域にかかわる厚みのパラメータをコントロールすることができます。また、太陽光の年間露光量にかかわる透過性のパラメータをコントロールすることもできます。Dynamo では、少ない手順で簡単に解析結果をパラメータに渡すことができます。次の演習でその基本的な手順を実践してみましょう。
AdaptiveComponent.Locations ノードを使用して、選択したアダプティブ コンポーネントのアダプティブ点のクエリーを実行します。これにより、Revit の要素を解析用に抽出したバージョンを使用して作業することができます。
アダプティブ コンポーネントを構成する点の位置を抽出することで、その要素に関するさまざまな解析を行うことができます。4 点構成のアダプティブ コンポーネントにより、たとえば指定したパネルにおける水平面からの偏差を検討することができます。
再マッピング機能を使用すると、一連のデータ セットを一定のパラメータ範囲にマッピングすることができます。これはパラメトリック モデリングで使用する基本的なツールです。これ以降の演習で実際に扱ってみることにします。
Dynamo を使用すると、アダプティブ コンポーネントを構成する点群の位置から、要素ごとに最も適した平面を作成することができます。さらに Revit ファイル内の太陽の位置を参照して、太陽に対するその平面の向きを、他のアダプティブ コンポーネントと比較しながら検討することもできます。これ以降の演習で、アルゴリズムに基づいて屋根の形状を生成することで、その設定を行っていきましょう。
下のリンクをクリックして、サンプル ファイルをダウンロードします。
すべてのサンプル ファイルの一覧については、付録を参照してください。
この演習では、前のセクションで紹介したテクニックについて詳しく説明します。このケースでは、Revit の要素からパラメトリック サーフェスを設定して、4 点構成のアダプティブ コンポーネントをインスタンス化し、太陽に対する向きに基づいて編集します。
まず、Select Edge ノードを使用して 2 本のエッジを選択します。2 本のエッジはアトリウムの長辺です。
List.Create ノードを使用して、2 本のエッジを組み合わせて 1 つのリストを作成します。
Surface.ByLoft ノードを使用して、2 本のエッジの間に 1 つのサーフェスを作成します。
Code Block ノードを使用して、0 から 1 までの範囲を 10 等分した値
0..1..#10;
に指定します。Code Block ノードから Surface.PointAtParameter ノードの *u * 入力と v 入力に接続し、Surface.ByLoft ノードを surface 入力に接続します。ノードを右クリックして、レーシング を[直積]に変更します。これで、サーフェス上の点群から構成されるグリッドを取得できるようになります。
この点群によるグリッドは、パラメータに基づいて設定されたサーフェスの制御点として機能します。これら各点の位置を u と v の値として抽出することで、その値をパラメータの式に代入し、同一のデータ構造を保持できます。これを行うには、先ほど作成した点群の位置のパラメータをクエリーする必要があります。
Surface.ParameterAtPoint ノードをキャンバスに追加し、その入力を上図のように接続します。
UV.U ノードを使用して、上記のパラメータの u の値をクエリーします。
UV.V ノードを使用して、上記のパラメータの v の値をクエリーします。
サーフェス上のすべての点に対応する u と v の値が出力されます。これで、適切なデータ構造で 0 から 1 までの範囲で各値を取得したので、パラメトリック アルゴリズムを適用する準備ができました。
キャンバスに Code Block ノードを追加して、次のコードを入力します。
Math.Sin(u*180)*Math.Sin(v*180)*w;
これは、平坦なサーフェスから正弦波状の隆起を作成するパラメトリック関数です。UV.U を u 入力に、UV.V を v 入力に接続します。
w 入力は形状の 振幅 を表します。そのため、ここには Number Slider を接続します。
ここまでの手順で、アルゴリズムによって定義された値のリストを取得することができました。この値のリストを使用して、点群を Z の正の向きに動かしましょう。Geometry.Translate を使用して、Code Block ノードを zTranslation 入力に、Surface.PointAtParameter ノードを geometry 入力に接続します。Dynamo のプレビューに新しい点群が表示されるはずです。
最後に、前の手順から NurbsSurface.ByPoints ノードの points 入力に接続することで、サーフェスを作成します。こうしてパラメトリック サーフェスができあがりました。スライダを自由に動かして、隆起面が上下するのを確認してください。
パラメトリック サーフェスを使用して、その曲面を多数の小さなパネルから成る構造に変換する方法を設定し、4 点構成のアダプティブ コンポーネントを配列していきましょう。Dynamo で提供されている既定のノードには、サーフェスを多面構造に変換する機能をもつものはありません。そこで、コミュニティにアクセスして便利な Dynamo パッケージを入手しましょう。
[パッケージ] > [パッケージの検索] に進みます。
「LunchBox」のキーワードで検索し、「LunchBox for Dynamo」をインストールします。このパッケージは、この種のジオメトリ操作にじつに役に立つツール セットです。
ダウンロードすると、LunchBox スイートに完全にアクセスできるようになります。「Quad Grid」を検索し、LunchBox Quad Grid By Face ノードを選択します。このノードの surface 入力にパラメトリック サーフェスを接続し、U 区分と V 区分を 15 に設定します。複数の長方形のパネルから成るサーフェスが Dynamo のプレビューに表示されます。
構成の詳細については、Lunch Box ノードをダブルクリックして確認してください。
Revit に戻って、ここで使用しているアダプティブ コンポーネントを簡単に確認しておきましょう。必ずしも実際に確認する必要はありませんが、いずれにせよこれからインスタンス化する対象であるこのコンポーネントは屋根のパネルです。この 4 点構成のアダプティブ コンポーネントは、ETFE システムをおおまかに表現しています。中央の開口部は ApertureRatio というパラメータによってコントロールされています。
これから Revit 内の多数のジオメトリをインスタンス化するので、必ず事前に Dynamo のソルバを[手動]に切り替えてください。
Family Types ノードをキャンバスに追加し、[ROOF-PANEL-4PT]を選択します。
AdaptiveComponent.ByPoints ノードをキャンバスに追加し、その points 入力に LunchBox Quad Grid by Face ノードの Panel Pts 出力を接続します。familySymbol 入力に Family Types ノードを接続します。
[実行]をクリックします。Revit はジオメトリの作成中に計算に 少々時間をかける 必要があります。あまりにも時間がかかりすぎている場合、Code Block ノードの「15」の値を より小さな数に減らしてください。これを行うと、屋根の部分に使用されるパネルの数が減少します。
注: Dynamo でノードの計算に膨大な時間がかかる場合は、ノードをフリーズする機能を使用して、グラフの開発中に Revit 関連操作の実行を停止することができます。ノードをフリーズする操作の詳細については、「ソリッド」の章の「フリーズ」セクションを参照してください。
Revit に戻ると、屋根の上にバネルの配列が出現しています。
拡大表示すると、サーフェスの品質を詳細に確認できます。
前の手順からさらに先へと進み、各パネルが太陽光を浴びている量に基づいてそれぞれのパネルの開き方をコントロールしてみましょう。Revit でビューを拡大表示して 1 つのパネルを選択すると、プロパティ バーに[開口率]というパラメータが表示されます。ファミリは、開口率の範囲が 0.05 ~ 0.45 になるように設定されています。
太陽の軌道の表示をオンにすると、Revit で現在の太陽の位置を確認することができます。
SunSettings.Current ノードを使用すると、この太陽の位置を参照することができます。
そのノードの SunSettings の出力を Sunsetting.SunDirection ノードの入力に接続し、太陽光のベクトルを取得します。
アダプティブ コンポーネントの作成に使用した Panel Pts からの出力を、Plane.ByBestFitThroughPoints ノードを使用して、そのコンポーネントのために平面に近づけます。
この平面の 法線 のクエリーを実行します。
内積 を使用して太陽の向きを計算します。内積に基づいて、2 つのベクトルが平行であるかどうかを判定することができます。つまり、各アダプティブ コンポーネントの平面法線を取得し、それと太陽光のベクトルを比較することで、太陽の向きをおおまかにシミュレートします。
結果の_絶対値_を取得します。これにより、平面法線が逆方向を向いている場合に正確な内積が算出されます。
[実行]をクリックします。
内積 を確認すると、複数の数値が広範囲にわたって取得されています。これからその相対分布を使用するのですが、しかしそれらの数値を集約して[開口率]の適切な範囲に収めなければなりません。
これにたいへん役立つツールが Math.RemapRange ノードです。そのノードにリストを入力し、その分布範囲を 2 つの目標値にマッピングし直します。
目標値を Code Block ノードで 0.15 と 0.45 として定義します。
[実行]をクリックします。
マッピングし直した値を Element.SetParameterByName ノードに接続します。
そのノードの parameterName 入力に、「Aperture Ratio」という文字列を接続します。
同じノードの element 入力に、AdaptiveComponent.ByPoints ノードの Adaptive Components 出力を接続します。
[実行]をクリックします。
Revit に戻って建物のマスを遠くから見てみると、ETFE パネルの開き方が太陽の向きによって変化していることが確認できます。
拡大表示すると、太陽により向き合っているパネルほどより閉じていることがわかります。太陽光の照射による過熱を抑えることがねらいです。太陽光をたくさん浴びている面ほどより多く採光するように設定するには、ただ Math.RemapRange ノードで範囲を逆に切り替えるだけで済みます。
Dynamo では、完全なパラメトリック コントロールを使用して Revit 要素の配列を作成できます。Dynamo の Revit ノードは、一般的なジオメトリから特定のカテゴリ タイプ(壁、床など)まで、さまざまな要素を読み込む機能を提供します。このセクションでは、パラメータを使用してアダプティブ コンポーネントを含む柔軟性が高い要素を読み込みます。
アダプティブ コンポーネントはオブジェクトの生成に役立つ柔軟性の高いファミリ カテゴリです。インスタンス化すると、アダプティブ点の基本的な位置でコントロールされる複雑なジオメトリ要素を作成することができます。
以下は、ファミリ エディタ上で 3 つのアダプティブ点により構成されているアダプティブ コンポーネントです。これにより生成されるトラスは、各アダプティブ点の位置によって設定されます。次の演習では、このコンポーネントを使用して、ファサード全体に一連のトラスを生成します。
アダプティブ コンポーネントは相互運用性のベスト プラクティスの好例です。基本的なアダプティブ点を設定することにより、アダプティブ コンポーネントの配列を作成できます。また、このデータを他のプログラムに転送すると、ジオメトリを単純なデータに変換できます。Excel などのプログラムに読み込んだり書き出す場合も同様です。
ファサード設計の監修者が、完全なジオメトリを詳細に解析する必要なく、トラス要素の位置を確認する必要があるとします。製造の準備段階で、コンサルタントはアダプティブ点の位置を参照することにより、Inventor などのプログラムでジオメトリを再生成できます。
次の演習のワークフローでは、このようなデータすべてにアクセスしながら、Revit 要素を作成するための設定を行います。このプロセスにより、概念化、ドキュメント作成、製造を、1 つのシームレスなワークフローに統合できます。これにより、相互運用性を実現するためのよりインテリジェントで効率的なプロセスを作成できます。
最初の演習では、Revit 要素を作成するためのデータを Dynamo が参照する仕組みについて学習します。複数のアダプティブ コンポーネントを生成するには、リストのリストを設定します。各リストには、アダプティブ コンポーネントの各点を表す 3 つの点が含まれています。Dynamo でデータ構造を管理する際は、このことを考慮します。
Dynamo のパラメトリック ジオメトリを Revit に読み込む別の方法として、DirectShape を使用する方法があります。つまり、DirectShape 要素と関連クラスは、外部で作成されたジオメトリ形状を Revit ドキュメントに保存する機能をサポートしています。ジオメトリには閉じたソリッドやメッシュを含めることができます。DirectShape の主な目的は、「実際」の Revit 要素を作成するための情報が不足している IFC や STEP などの他のデータ形式の形状を読み込むことにあります。DirectShape 機能は、IFC や STEP のワークフローのように、Dynamo で作成されたジオメトリを Revit プロジェクトに実際の要素として読み込むことに優れています。
2 番目の演習で、Dynamo ジオメトリを DirectShape として Revit プロジェクトに読み込む方法を学習しましょう。この方法を使用すると、Dynamo グラフへのパラメトリック リンクを維持しつつ、読み込んだジオメトリのカテゴリ、マテリアル、名前を割り当てることができます。
下のリンクをクリックして、サンプル ファイルをダウンロードします。
すべてのサンプル ファイルの一覧については、付録を参照してください。
このセクションでサンプル ファイルの使用を開始した場合(または、前のセッションの Revit ファイルを継続して使用した場合)は、同じ Revit のマスが表示されます。
これはファイルを開いた状態です。
これは、Dynamo で作成したトラス システムです。高度な方法で Revit のマスにリンクされています。
これまで Select Model Element ノードと Select Face ノードを使用しました。ここでは、ジオメトリ階層の 1 段階下の層で Select Edge ノードを使用します。Dynamo ソルバを 自動 で実行するように設定すると、グラフは Revit ファイルの変更に応じて継続的に更新されます。選択したエッジは Revit 要素トポロジに動的に関連付けられます。トポロジ* が変更されない限り、Revit と Dynamo 間の接続はリンクされ続けます。
グレージング ファサードの最上部の曲線を選択します。これは建物の全体の長さに及びます。Revit でエッジを選択するには、エッジにカーソルを置いて、目的のエッジがハイライト表示されるまで [Tab] を押し続けます。
2 つの Select Edge ノードを使用して、ファサード中央の傾斜を示す各エッジを選択します。
Revit でファサードの最下部のエッジに対して同じ操作を行います。
Dynamo に線が設定されたことが Watch ノードによって示されます。エッジ自体は Revit 要素ではないため、自動的に Dynamo ジオメトリに変換されます。これらの曲線は、ファサード全体にわたるアダプティブ トラスをインスタンス化する際に使用する参照です。
*トポロジの一貫性を保持するため、面やエッジが追加されないモデルを参照しています。パラメータを使用して形状を変更することはできますが、トポロジの作成方法を変更することはできません。
まず曲線を結合して 1 つのリストに統合する必要があります。これにより、曲線を「グループ化」して、ジオメトリ操作を実行できます。
ファサードの中央にある 2 つの曲線のリストを作成します。
List.Create コンポーネントを Polycurve.ByJoinedCurves ノードに接続して、2 つの曲線を 1 つのポリカーブに結合します。
ファサードの最下部にある 2 つの曲線のリストを作成します。
List.Create コンポーネントを Polycurve.ByJoinedCurves ノードに接続して、2 つの曲線を 1 つのポリカーブに結合します。
最後に、3 つの主要な曲線(1 つの直線と 2 つのポリカーブ)を 1 つのリストに結合します。
直線になっている最上部の線を使用して、ファサードのスパン全体を表します。この線に沿って平面を作成し、リストでグループ化した曲線のセットと交差させます。
Code Block ノードで、構文
0..1..#numberOfTrusses;
を使用して範囲を設定します。Integer Slider ノードを Code Block ノードの入力に接続します。お分かりのとおり、これはトラスの数を表します。スライダは項目の数を 0 から 1 の範囲でコントロールします。
Code Block ノードを Curve.PlaneAtParameter ノードの param 入力に接続し、最上部のエッジを curve 入力に接続します。これにより、10 個の平面がファサードのスパン全体にわたって均等に配置されます。
平面はジオメトリの抽象的なピースであり、無限の 2 次元空間を表します。平面は輪郭や交差の作成に適しています。実際に行ってみましょう。
Geometry.Intersect ノード(レーシングのオプションを直積に設定)を使用して、Curve.PlaneAtParameter を Geometry.Intersect ノードの entity 入力に接続します。メインの List.Create ノードを geometry 入力に接続します。Dynamo のビューポートには、設定した平面と各曲線の交点が表示されます。
出力にはリストのリストのリストが表示されます。操作目的に対してリストの数が多すぎます。リストの一部をフラットにしましょう。リストの 1 段階下の層で結果をフラットにします。これを行うには、Dynamo Primer のリストに関する章で説明したように、List.Map 操作を使用します。
Geometry.Intersect ノードを List.Map の list 入力に接続します。
Flatten ノードを List.Map ノードの f(x) 入力に接続します。この結果、リストは 3 個になり、各リストにはトラスと同じ数の項目が含まれます。
このデータは変更する必要があります。トラスをインスタンス化する場合は、ファミリで設定されているアダプティブ点と同じ数を使用する必要があります。これは 3 つの点で構成されているアダプティブ コンポーネントです。このため、それぞれ 10 個の項目(numberOfTrusses)が含まれている 3 個のリストではなく、それぞれ 3 個の項目が含まれている 10 個のリストが必要になります。これにより、10 個のアダプティブ コンポーネントを作成できます。
List.Map ノードを List.Transpose ノードに接続します。これで目的のデータ出力を得ることができます。
データが正しいことを確認するには、Polygon.ByPoints ノードをキャンバスに追加して、Dynamo プレビューで再確認します。
ポリゴンを作成するのと同じ方法で、アダプティブ コンポーネントを配列します。
AdaptiveComponent.ByPoints ノードをキャンバスに追加し、List.Transpose ノードを points 入力に接続します。
Family Types ノードを使用して、AdaptiveTruss ファミリを選択し、これを AdaptiveComponent.ByPoints ノードの FamilyType 入力に接続します。
Revit では、10 個のトラスがファサード全体にわたって均等に配置されています。
グラフを柔軟に調整することができます。Integer Slider ノードを変更して numberOfTrusses を「30」にします。トラスの数が尋常でなく増えますが、パラメトリック リンクは機能しています。確認したら、numberOfTrusses を 15 に設定します。
最後の確認として、Revit でマスを選択してインスタンス パラメータを編集することにより建物の形状を変更して、トラスがこれに従って変更されるかを確認します。この更新を確認するには、この Dynamo グラフを開いておく必要があります。閉じた場合、リンクはすぐに切断されます。
下のリンクをクリックして、サンプル ファイルをダウンロードします。
すべてのサンプル ファイルの一覧については、付録を参照してください。
このレッスンのサンプル ファイル ARCH-DirectShape-BaseFile.rvt を開きます。
3D ビューには、前の演習で使用した建物のマスが表示されます。
アトリウムのエッジに沿って見えるのは 1 つの参照曲線です。これは Dynamo で参照する曲線として使用します。
アトリウムの反対側のエッジに見えるのは別の参照曲線です。これも Dynamo で参照します。
Dynamo でジオメトリを参照するには、Revit の各要素に対して Select Model Element ノードを使用します。Revit でマスを選択し、Element.Faces ノードを使用して Dynamo にジオメトリを読み込みます。これで、マスが Dynamo プレビューに表示されるようになります。
Select Model Element ノードと CurveElement.Curve ノードを使用して、一方の参照曲線を Dynamo に読み込みます。
Select Model Element ノードと CurveElement.Curve ノードを使用して、もう一方の参照曲線を Dynamo に読み込みます。
縮小して画面をサンプル グラフの右に移動すると、大きなノードのグループが見えます。これらはジオメトリを操作し、Dynamo プレビューで表示される格子状の屋根構造を生成します。これらのノードは、Dynamo Primer の コード ブロックに関するセクション で説明されている[ ノードをコード化 ]機能を使用して生成されます。
この構造は、Diagonal Shift、Camber、Radius という 3 つの主要なパラメータでコントロールされます。
このグラフのパラメータをクローズアップします。これらを調整して、さまざまなジオメトリを出力できます。
DirectShape.ByGeometry ノードをキャンバス上にドロップすると、geometry、category、material、name という 4 つの入力が表示されます。
ジオメトリは、グラフのジオメトリ作成部分から作成されるソリッドになります。
category 入力は、ドロップダウン Categories ノードを使用して選択されます。ここでは、[Structural Framing]を使用します。
上記のノードの配列から material 入力が選択されます。この場合は、より単純に「既定値」として設定できます。
Dynamo を実行した後に Revit に戻ると、プロジェクト内の屋根に読み込まれたジオメトリが表示されます。これは生成モデルではなく構造フレーム要素です。Dynamo へのパラメトリック リンクは維持されます。