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 に変更すると、ファサード ガラスがさらにがっしりとした形状になります。