2018年3月18日日曜日

ダイナモ白熱教室(13)~壁の造作材の体積

壁のスイープの数量

幅木を「壁のスイープ(造作材)」で作成した場合、そのマテリアルのマテリアル別の体積は算出できるでしょうか?
壁のスイープで作成した幅木の数量は?
残念ながら答えはNoです。壁の造作は[表示]タブ>[作成]パネル>[部材拾い出し]では、そのマテリアルを拾い出すことはできません。壁のスイープは長さしか拾えません。普通に集計表を作成すると、マテリアル別の長さを集計することが可能です。
集計表で長さは拾える
実際のところ、幅木や廻り縁であれば、数量としては長さがわかればよいので実質的な問題はないといえます。

ここでダイナモ

そうはいっても、マテリアル別の体積を計測することはできないのでしょうか?断面積×長さでもよさそうなものですが、ダイナモを使って実際の体積をマテリアル別に求めてみましょう。

要素を選択する部分

ダイナモを立ち上げて、下の図のようにカテゴリで要素を選択します。
カテゴリで選択

[Revit]>[Selection]>[Categories]ノードと、[Revit]>[Selection]>[All Element of Category]ノードを追加し、図のように結びます。これですべての壁のスイープを選択できます。

Solidの取り出し体積を測定

壁のスイープからSolidを取り出します。

  1. [Revit]>[Element]>[Element]>[Geometry]
  2. [Geometry]>[Solid]>[Volume]
  3. [Core]>[Units]>[Convert between units]
を追加し、[All Element of Category]に接続します。
Solidを取り出して体積を抽出
Watchノードを追加し結果を確認します。

マテリアルの取り出し

マテリアルの名前を取り出します。
  1. [Revit]>[Elements]>[Element]>[GetMaterials]
  2. [Revit]>[Elements]>[Material]>[Name]
を追加し、これも[All Element of Category]に接続します。
マテリアル名のリストを取得
Watchノードで結果を確認します。

マテリアルと体積をリストに編成

Watchノードをよく見てください。マテリアルの名前も体積も選択した要素と同じ並び順になっています。これらの情報をエクセルに出力しましょう。

  1. [Builtin]>[Flatten]を二つ追加
  2. [Core]>[List]>[List.Create]を追加し、[+]で[Item1]を増やす
  3. それぞれ[Materiarl.Name]と[Convert Between Unit]に接続
    マテリアルと体積をリストにする
Watchで確認して、リストを確認します。

行列を入れ替えてExcelに出力

結果をエクセルに出力する前に行列を入れ替えます。
  1. [Core]>[List]>[Transpose]
  2. [Office]>[WriteToFile]
  3. [Core]>[Input]>[FilePath],[String],[Number],[Boolean]
  4. エクセルを開き、空のブックを作成して保存し、[FilePath]の[参照]を押して選択します。
  5. 下の図のように接続
    エクセルへ出力
これで、エクセルに容積が出力されます。
エクセルに出力
Revitは基本的にSolidモデラーですので、ネイティブの要素であれば、地形を除いて体積を持っています。したがって体積を求めることが可能であるというわけです。