入門ガイド5.3 リンクするための数式エディタの設定方法

 モデルの自動変形に関しては、FreeCADの操作やデータ構造を把握していないと理解できない部分が多数あります。FreeCADを使い慣れないとモデルの自動変形は必要ないかもしれませんが、今わかっている範囲で、概要だけまとめておきます。

以下の説明は、「入門ガイド4.2 通り芯とレベル BIMプロジェクトのセットアップ」で作成した軸線とレベルを使います。


軸線のリンク
横軸のプロパティを見ると、Lengthに(Rectangle.Length*1.1)とあります。
この( )内の部分が数式エディタで入力された計算式です。
 Rectangleは建物の輪郭オブジェクトで、Lengthはそのプロパティです。横軸の長さは建物輪郭長さの1.1倍ということです。

このように他のオブジェクトのプロパティを使用するときは、「オブジェクト.プロパティ」の形で参照します。
オブジェクトは内部名(オブジェクトを選択するとステイタスバーに表示されます。)とします。
軸線の内部名は、横軸、縦軸、水平軸の順にAxis001、Axis、Axis002と作成順に連番が付きます。

Distancesは、[0,4500,4500,0]となっています。この数値を呼び出す場合はDistances[n]と書きます。

Lengthを他のプロパティとリンクすることもできますが、このままにしておきます。

レベルのリンク
レベルオブジェクトの内部名はBuildingPart001から004です。

高さに関するプロパティはいくつかあって、Placementは座標、Heightは下層の建築オブジェクトに適用する高さ、Elevationは高さの数値で、.Placement.Base.zでPlacementのZ値を参照しています。

Placementの数値欄には数式エディタのマークがありませんが、[...]でPlacementの内訳を表示すると、XYZの入力欄には数式エディタのマークがあります。

Placementがあれば、数式エディタでリンクできるということです。


レベルのZ値は、水平軸のDistancesの累計となるので、スプレッドシートを使って階高を集計し、結果をレベルのPlacementに戻します。

spreadsheetワークベンチに切り替えて、スプレッドシート新規作成をクリックすると、モデルタブにspreadsheetができます。画面下にspreadsheetのタブができるので、これを選択するとスプレッドシートの画面に移動します。

詳細は省略しますが、A、D、Gのセルに軸線オブジェクトのDistancesプロパティから各部分の数値をリンクします(=Axis00n.Distances[n])。計算式を入力して各通り、各階までの高さを集計します。BとEとHが累計の数値になります。

レベル0は、高さ0なので設定しません。
レベル1のPlacementのZをダブルクリックして数式エディタを出し、spreadsheet.H2と入力して、1階床レベルH2とリンクします。
式を入力した時に正しければ、結果の部分に数値が表示されます。
同様に、レベル2、3についても、H3とH4とリンクします。
これで、水平軸の高さを変更すると、レベルオブジェクトの高さも自動的に変更します。

柱のリンク
BIMワークベンチに戻り、レベル1をダブルクリックして作業平面をレベル1に合わせます。上面ビューに移動、WPスナップをONにして始めます。

柱オブジェクトで500x500 高さ3000に設定して、基準点(0,0)に柱を配置します。
柱の軸プロパティのリストから軸(軸システム)を選択して、通りの交点に柱を配置します。

前面ビューにすると、柱がレベル2に届いてないことがわかります。
柱のHeightプロパティの数式エディタをクリックして、spreadsheet.G3と入力します。柱の高さが階高にリンクされて、前面ビューでレベル1から2の間に正しく表示されます。







梁のリンク
上面ビューにして、レベル2をダブルクリックして作業平面を移動します。
梁はひとつずつ設定すると数が多くて手間がかかるので、連続梁にします。梁のオプションで、幅300高さ600として、A通りの1-3間に梁を配置します。ラベルを2F1Gとします。
(ラベルの最後を数字にすると、複写した時の連番がその数字を更新してしまいます。)
2F1Gを選択し、PlacementでZを300下げて、2階床レベルにそろえます。

梁の位置は、起点のPlacementと長さ、方向、角度で決まります。方向と角度は配置した時に決まるので、起点位置と長さをリンクすれば、梁は自動変形します。
2F1GのLengthプロパティの数式エディタをクリックして、spreadsheet.B3と入力して梁の長さを1から3までの合計値とリンクします。起点の位置は(0,0)なのでそのままです。

2F1GをA通りからB、C通りにコピーします。2F1G001と002ができます。
長さのリンクはコピーされています。
起点の縦軸Xは1通りなので変更の必要はありません。横軸YはそれぞれB、C通りにリンクします。
2F1G001のPlacementのYをダブルクリックして数式エディタを出し、spreadsheet.E2と入力して梁のY座標をリンクします。
2F1G002のYも、spreadsheet.E3と入力します。

これで、縦軸横軸の内訳を変更した時に柱と梁の位置と長さが自動変形することになるので試してみてください。
縦軸の梁についても同様に作成して、長さと起点位置をリンクします。

柱はレベル1、梁はレベル2の下層に移動し、Move with HostをONにすれば、水平軸の内訳を変更するとレベルの移動に併せて柱や梁が移動します。

壁、床、屋根はSketcherでベースオブジェクトを作図し、軸線との関係を拘束すれば自動変形します。壁の高さのリンクは柱と同じ方法です。

コメント

このブログの人気の投稿

はじめに FreeCADでBIMはできるのか(2022/8/8追記)

オブジェクトを着色する(3) パースのレンダリングに挑戦