2019年2月9日土曜日

ダイナモ白熱教室~床の躯体天端レベルをタグに表示する

Dynamoでパラメータを操作する

躯体天端レベルをタグに表示するにはどうすればよいでしょうか?残念ながら床タグでは床レベルのパラメータはありませんし、ましてや躯体の天端レベルというパラメータはありません。「レベルからのオフセット」すらタグに表示できないのです。
躯体天端レベルをタグに表示するには?
「上部躯体の高さ」というパラメータが使用可能ですが、惜しいかなこの値は高さ(Z)の座標値で、レベルからの相対距離ではありません。
床の「上部躯体の高さ」はzの値でレベルからの相対距離ではない
APIを使えはもちろん可能ですが、この「床の躯体天端レベルをタグに表示する」というお題をダイナモで解いてみます。

共有パラメータの準備

タグに値を表示するのですから、まずは床に躯体天端レベルの値を表示するインスタンスパラメータを共有パラメータとして作成します。
共有パラメータを作成し、床のインスタンスパラメータとして設定する。
ここでは「スラブレベル」という共有パラメータを作成し、床のインスタンスプロパティとして設定しました。

Dynamo:構造の床を集める

まず、すべての床を集めます。ただし、床のインスタンスプロパティ「構造」にチェックが入っているものだけです。そうでないと「上部躯体の高さ」の値が「なし」になってしまうからです。


  1. [Revit]>[Selection]>[Categories]を追加し「床」を選択。
  2. [Revit]>[Selection]>[All Elements of Category]を追加し、1と接続。
  3. [Revit]>[Element]>[GetParameterValurByName]を追加し、2のElementsをElementに接続。
  4. [Input]>[Basic]>[String]を追加し「構造」と入力、3のParameterNameに接続。
  5. [Math]>[Operaters]>[==]を追加し、Xに4のvar[]..[]を接続。
  6. [Input]>[Basic]>[Number]を追加し、値を1とし、==のyに接続。(これによりパラメータの値の1/0をTrue/Falseに変換する)
  7. [List]>[Modify]>[FilterByBoolMask]を追加し、==のvar[]..[]とmaskを接続。
  8. 7のlistと2のElementsを接続。
これでFilterByBoolMaskの[in]に、パラメータ「構造」にチェックが入った床のインスタンスを集めることができました。

Dynamo:スラブレベルを計算する

スラブレベルを「上部躯体の高さ-床の参照レベルの高さ」で計算します。床のレベルの高さはまず床の参照レベルをパラメータでもとめ、さらにレベルの高さパラメータの値を取得します。
  1. [Revit]>[Element]>[GetParameterValurByName]を追加し、[in]と[element]を接続。
  2. [Input]>[Basic]>[String]を追加し「レベル」と入力、2のParameterNameに接続。
  3. [Revit]>[Element]>[GetParameterValurByName]を追加し、1のvar[]..[]と接続。
  4. [Input]>[Basic]>[String]を追加し「高さ」と入力、3のParameterNameに接続。これで床の参照レベルの高さを取得できました。
  5. [Revit]>[Element]>[GetParameterValurByName]を追加し、[in]と[element]を接続。
  6. [Input]>[Basic]>[String]を追加し「上部躯体の高さ」と入力、5のParameterNameに接続。
  7. [Math]>[Operators]>[-]を追加し、[x]には5(上部躯体の高さ)のvar[]..[]、[y]には3(レベルの高さ)を接続
ここでWatchノードなどで値を確認してください。

Dynamo:スラブレベルの値を床にセットする

最後に、求めたスラブレベルを床のインスタンスプロパティ「スラブレベル」にセットします。
スラブレベルの値を床にセットする
  1. [Revit]>[Element]>[SetParameterValurByName]を追加し、
    1. elementsを[List.FilterByBoolMask]の[in]へ接続。
    2. valueを[-]のvar[]..[]に接続
  2. [Input]>[Basic]>[String]を追加し「スラブレベル」と入力し、1のParameterNameに接続。
以上で床にスラブ(躯体)レベルを設定することができました。
スラブレベルの値が設定された
あとは、共有パラメータ「スラブレベル」を使った床タグを配置すればスラブレベルが表示されます。Dynamoを開いておけば、床の変更にリアルタイムに追随します。
モデルの変更にリアルタイムに追随する
躯体の天端なので、仕上があってもスラブレベルを表示します。
また、躯体境界よりも上にレイヤがあっても問題ありません。

仕上が入っても躯体レベルを表示する
このグラフはこちらからダウンロードできます