Dynamoでパラメータを操作する
躯体天端レベルをタグに表示するにはどうすればよいでしょうか?残念ながら床タグでは床レベルのパラメータはありませんし、ましてや躯体の天端レベルというパラメータはありません。「レベルからのオフセット」すらタグに表示できないのです。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWE_goyrfhdue8f5DSQAHH38G07wVWtbdEOSiHcrZQm8WRoFEWYyXJsgTLcLY5T60Z6IQz_OiLYPl6UFQkp6onjsK84AUruvsscZljiCLTIoTwt5LvwSIycbnDbxLEKknyZTJO90MTjMI/s400/sl002.png) |
躯体天端レベルをタグに表示するには? |
「上部躯体の高さ」というパラメータが使用可能ですが、惜しいかなこの値は高さ(Z)の座標値で、レベルからの相対距離ではありません。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfCknyl1cnlczjCNsgqKz0nij6jBJ074pLTEtBS9u_TJG-hjZTnd4ww2PXO6CRZHv3FpLT7NIeTvu05JGaotFqvrBeJ1J-MC2PU3dB-rAb67kGC3wN2fPvzZ0yavXJstz8zd0toNkXu_c/s400/sl001.PNG) |
床の「上部躯体の高さ」はzの値でレベルからの相対距離ではない |
APIを使えはもちろん可能ですが、この「床の躯体天端レベルをタグに表示する」というお題をダイナモで解いてみます。
共有パラメータの準備
タグに値を表示するのですから、まずは床に躯体天端レベルの値を表示するインスタンスパラメータを共有パラメータとして作成します。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjh6UtKkxglgis_CsV6F1Wl5Clgi-gyvijmraw-EUluK3FPe0do5quIwfPZQa1Rjkvve7k3a_Lf4NqI24_FJdn47qUWTSe5z13xoVSU0PEIuVve-M9fdusppqsDLKV4-w4JKRiEMZW7sXk/s400/sl003.png) |
共有パラメータを作成し、床のインスタンスパラメータとして設定する。 |
ここでは「スラブレベル」という共有パラメータを作成し、床のインスタンスプロパティとして設定しました。
Dynamo:構造の床を集める
まず、すべての床を集めます。ただし、床のインスタンスプロパティ「構造」にチェックが入っているものだけです。そうでないと「上部躯体の高さ」の値が「なし」になってしまうからです。
- [Revit]>[Selection]>[Categories]を追加し「床」を選択。
- [Revit]>[Selection]>[All Elements of Category]を追加し、1と接続。
- [Revit]>[Element]>[GetParameterValurByName]を追加し、2のElementsをElementに接続。
- [Input]>[Basic]>[String]を追加し「構造」と入力、3のParameterNameに接続。
- [Math]>[Operaters]>[==]を追加し、Xに4のvar[]..[]を接続。
- [Input]>[Basic]>[Number]を追加し、値を1とし、==のyに接続。(これによりパラメータの値の1/0をTrue/Falseに変換する)
- [List]>[Modify]>[FilterByBoolMask]を追加し、==のvar[]..[]とmaskを接続。
- 7のlistと2のElementsを接続。
これでFilterByBoolMaskの[in]に、パラメータ「構造」にチェックが入った床のインスタンスを集めることができました。
Dynamo:スラブレベルを計算する
スラブレベルを「上部躯体の高さ-床の参照レベルの高さ」で計算します。床のレベルの高さはまず床の参照レベルをパラメータでもとめ、さらにレベルの高さパラメータの値を取得します。
- [Revit]>[Element]>[GetParameterValurByName]を追加し、[in]と[element]を接続。
- [Input]>[Basic]>[String]を追加し「レベル」と入力、2のParameterNameに接続。
- [Revit]>[Element]>[GetParameterValurByName]を追加し、1のvar[]..[]と接続。
- [Input]>[Basic]>[String]を追加し「高さ」と入力、3のParameterNameに接続。これで床の参照レベルの高さを取得できました。
- [Revit]>[Element]>[GetParameterValurByName]を追加し、[in]と[element]を接続。
- [Input]>[Basic]>[String]を追加し「上部躯体の高さ」と入力、5のParameterNameに接続。
- [Math]>[Operators]>[-]を追加し、[x]には5(上部躯体の高さ)のvar[]..[]、[y]には3(レベルの高さ)を接続
ここでWatchノードなどで値を確認してください。
Dynamo:スラブレベルの値を床にセットする
最後に、求めたスラブレベルを床のインスタンスプロパティ「スラブレベル」にセットします。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-5PRoPVqB_pEi66PBwXTZUwL4aaG5nnktQBH9krp-tOSYJm1d0WjIP9WCQKnwkXeMbi61V5_oyfAyURv_Gi-wz4v6QOowD0hJH7yG8Z6IUWtcv6pR7JNcMUSLR9bYCSGQ8LSWW7vdM2Y/s400/sl007.png) |
スラブレベルの値を床にセットする |
- [Revit]>[Element]>[SetParameterValurByName]を追加し、
- elementsを[List.FilterByBoolMask]の[in]へ接続。
- valueを[-]のvar[]..[]に接続
- [Input]>[Basic]>[String]を追加し「スラブレベル」と入力し、1のParameterNameに接続。
以上で床にスラブ(躯体)レベルを設定することができました。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI37vVleObYLdPVb5ocbRl7I9RztsoFNE_uRe3lrwnzCbxrHKPDwiVMMr7-NZOYyanS00Gxn2EwTW9o3Jzc2nkuZYriyRkuCHnGMxywP93rsNhAeRjlbHkJaK2ayZuMURM0iH8Pao239o/s400/sl008.png) |
スラブレベルの値が設定された |
あとは、共有パラメータ「スラブレベル」を使った床タグを配置すればスラブレベルが表示されます。Dynamoを開いておけば、床の変更にリアルタイムに追随します。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTuI1a__jhLC11itx6QaN8mSt94HaKfGYTs3kfTcPMo8QocSOBt-bD59vTIdRJzbINKR9UZI5827Sa1ShAe6iVfxclRfNpqsjrEOPOZS8tg7V_AL1D7-vRqYEQZHBI8R0INUxXCluCGSI/s400/sl009.png) |
モデルの変更にリアルタイムに追随する |
躯体の天端なので、仕上があってもスラブレベルを表示します。
また、躯体境界よりも上にレイヤがあっても問題ありません。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaHT3lismMA7zCIUvw8UjYCD-AGi4TnBdbE3ohjFnLJPfFQAw74o_djytiiVpQb9VEjWbc6SZus1x3UHL3iz2gjnVhKgWtxaQF0qqhT4Sr7AXpQMnT8aj08YnE-vZ6s-SXjVNdRtVjO_Q/s400/sl010.png) |
仕上が入っても躯体レベルを表示する |
このグラフはこちらからダウンロードできます。