N値の半自動計算とwallstatへのCSV移行ができる木造BIMオブジェクトを作ってみた。その1
以前から、N値の自動計算と、VectorWorksからwallstatへの移行ができるようになればいいなと思っていました。
N値計算はある程度、ワークシートとスクリプトで省力化はしてたのですが、wallstatはその建物の地震時の挙動をアニメーションで見れ、説得力が桁違いなのでずっと利用したいと思っていました。(2年ほど前、BIM導入する時に、ソフトの選定にあたってVectorworksにwallstatとの連携機能がないのがけっこうなネックになってました。)
仕方がないのでつくることに
もともと、木造軸組用のBIMツールは本家から提供されているのですが、柱や梁、筋交などを関係付ける機能が(おそらく)なくて、それを僕の技術で補うのは難しそうなのと、柱の高さを上階の梁に合わせて手動で変えないといけないなど、使い勝手としてこうなってたら、というのが結構あったので、結局作ることにしました。
基本的なコンセプトは計算しやすいように各オブジェクトを共通の基準点をベースにして描く、というものです。
その際、搭載したい機能は
・柱や筋交の高さを梁の高さに合わせて自動で設定する。
・N値計算をほぼ自動化する。
・wallstatへ軸組のデータを移行できるようにする。
の3つ。
プラグインオブジェクトの方が使い勝手は良いのかも知れませんが、上記事の理由でマリオネットオブジェクトにしました。
柱や筋交の高さを梁の高さに合わせて自動で設定する。
これは、柱を設定したり再描画の際に、柱の上部にある梁のうち、一番低いものに合わせて高さを自動調整する、というもの。
全ての梁に対して、梁の両端の座標と、柱の柱脚の座標から上記ルールに当てはまるかを判定しています。
これは、ほぼ思惑どおりにいきました。
ただし、素人のコードで無駄が多いので、オブジェクトが増えてくるともっさりしてきます。
なので、自動計算のオン・オフができるようにしました。
(実はここのオン・オフのいい方法が分からず、しっくりきてないです。)
N値計算をほぼ自動化する
これも、各柱に接する筋交等を検索して、X方向、Y方向、それぞれに、プラス座標側の壁倍率とマイナス側座標側の壁倍率を別でピックアップして、壁倍率差と補正値を計算させています。(実際はX方向のときにcos()>0.5,cos()<-0.5の時にピックアップしてるので60°未満はヒットします。)
一通りの柱の壁倍率差と補正値を計算した後、下階の柱の柱頭の座標と上階の柱の柱脚の座標が一致するものがあるかを検索して、それをもとに最終的にN値を出しています。(例外的に、上下階に同じ壁倍率4以上の筋交等がリャンコに入っているときのみ上階の壁倍率差をマイナスに補正しています。)
ただし、柱がずれていることもあるので、上階が乗っているかどうか、と、隅柱かどか、の2点は柱オブジェクトで手動選択してます。また、間柱等も非構造材として選択してN値計算から除外しています。
これもなんとかうまくいったと思います。(ただし、構造にかかわるところなので、間違いがないかもう少しチェックします。)
金物用のデータタグを作っているので、伏図や軸組図で、該当する柱に対して一括で記号を配置できます。
データの可視化で入力間違いがないかをチェックする
デザインレイヤでデータの可視化ができるようになったので、入力間違いがないかもチェックしやすくなりました。
↓上階ありを強調表示
↓隅柱を強調表示
↓構造柱を強調表示
↓四分割で色分け(青はエリアA)
データの可視化は他のファイルにも持っていけるので、ミスが起こりそうなものは共通して作っておくと良いかも知れません。
wallstatへ軸組のデータを移行できるようにする
wallstatのデータ構造が思ったよりも単純だったのと、当初から移行を目的にデータ構造を考えていたので比較的楽に出来ました。(csvの書き出し等、ファイルの扱いが初めてだったので試行錯誤は必要でしたが。)
まだ、色々なケースを試していませんが、無事移行できました。
早速、適当にモデリングしたものをwallstatで神戸の地震波でアニメーションにしてみました。
すると、屋根も床と同じ荷重のままだったので多少重めの設定とは言え速攻でぶっ倒れました(汗)
どこか単位でも間違えたかなと散々調べた結果、N値計算を再計算してなくて、ほとんど(ろ)の設定になっていました。先の動画も柱が抜けるように倒れています。
N値計算で金物設定させたら倒れなかった。
意図せず、金物の大切さを実感しました。
その2へ続く