編集
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 で建物のマスを選択すると、プロパティ パネルにインスタンス パラメータの配列が表示されます。
- Select Model Element ノードを使用して、建物のマスを選択します。
- Element.Parmaters ノードを使用して、このマスのすべてのパラメータのクエリーを実行することができます。 パラメータには、タイプ パラメータとインスタンス パラメータがあります。
- Element.Parameters ノードを参照して、対象のパラメータを探します。 または、前の手順のプロパティ パネルを表示して、編集するパラメータ名を選択することもできます。この場合、建物のマスの形状に大きく影響するパラメータを探す必要があります。
- Element.SetParameterByName ノードを使用して、Revit 要素に変更を加えます。
- Code Block ノードを使用して、対象のパラメータのリストを定義します。その際、各項目を引用符で囲み、その項目が文字列であることを指定します。 List.Create ノードの複数の入力に string ノードを接続して使用することもできますが、 Code Block ノードを使用する方が簡単で、時間もかかりません。文字列が、次のように大文字小文字を含めて Revit の正確な名前と一致していることを確認します。
{"BldgWidth","BldgLength","BldgHeight","AtriumOffset","InsideOffset","LiftUp"};
- 各パラメータの値を指定します。Integer Slider ノードを 6 つキャンバスに追加し、リスト内のパラメータに合わせて名前を変更します。 また、各スライダの値を上の図のように設定します。上から下に、
62、92、25、22、8、12
の順で設定します。- パラメータ名の数と同じ長さのリストを使用して、別の Code Block ノードを定義します。 その際、Code Block ノードの入力を作成する変数の名前を、引用符を使用せずに入力します。**Integer Slider ノードを
{bw,bl,bh,ao,io.lu};
の各入力に接続します。- Code Block ノードを Element.SetParameterByName ノードに接続します。 [自動実行]をオンにすると、結果が自動的に表示されます。
注: このデモンストレーションは、インスタンス パラメータには対応していますが、タイプ パラメータには対応していません。
Revit と同様に、これらのパラメータの多くは相互に依存しています。 これらの中には、ジオメトリが壊れてしまう組み合わせもあります。この問題を解決するには、定義済みの式をパラメータ プロパティで使用するか、Dynamo の数値演算で同様のロジックを設定します。余裕があれば、この演習の追加の課題として取り組んでみてください。
100、92、100、25、13、51.4
という組み合わせにより、特徴的な新しいデザインが建物のマスに追加されます。
- グラフをコピーして、トラス システムを格納するファサード ガラスを確認してみましょう。この場合、次の 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};
というコード行を指定して各スライダを結合します。
- グラフのこの部分の各 Number Slider ノードの値をそれぞれ
9.98、10.0、9.71、0.31
に変更すると、ファサード ガラスがさらにがっしりとした形状になります。