10.1通り芯とレベルの自動変更(データのリンク)改訂版

 ここまでのブログはツールの確認が主な目的であったので、特殊な形状のモデルが多かったが、ここでは少し実際の設計に使える事柄について検討していくことにする。
 BIMでの設計を前提としているので、できるだけ設計中の変更に対応して自動的に変形するモデルを作りたい。

 自動的な変形とは、Sketcherの拘束や、基準になる数値とのリンクを使って、基準になる線との関係を定義し、変更が発生した場合に自動的に形状が変わるシステムのことである。データのリンクには数式エディタという機能(プロパティの数値欄をクリックした時に右端に○印でf(x)がある場合に使える)を使用する。

自動的な変形が必要ない場合は、数式エディタを使わないで直接数値を入力しても同じ形になるので、数式エディタ部分の説明は自動変形が必要になるまでは無視してもよい。


 数式エディタに直接計算式を記入すると、計算式が長くなったり同じものを何度も入力することになって、あまり効率的ではないので、スプレッドシートで数値を計算し、その結果をリンクする方が簡単である。
FreeCADは、スプレッドシートの機能があり、操作はエクセルなどと同様である。関数や条件分岐の機能もあるので、必要があれば技術ドキュメントで確認してもらいたい。


 Revitの場合は、作業ビューで軸線やその端点をドラッグしたり、軸線スパンの寸法を直接変更することで、軸線の長さや位置を調整できるので細かい調整方法を考えることはない。また、部品の配置についても、軸線や壁芯に合わせて配置した部材は位置や長さが自動的にリンクされるので、位置のプロパティを毎回リンクすることも必要ない。

 FreeCADでは、データが基準線との関係が自動的にリンクされることはほとんどないので、必要なリンクを自分で設定することが必要となる。


簡単な事務所ビル(鉄骨造3階建て)のモデルを作りながら、BIMモデリングのフローを確認していく。

■通り芯とレベルの自動生成
BIMプロジェクトセットアップを使って通り芯とレベルを作成する。
建物サイズは、スパン合計の数値とする。外壁から外側への軸線の持ち出しは後で長さを調整する。

建物サイズ 11500×6500
V軸  4 × 4500 (2500,4500,4500)
H軸  2 × 6500 (6500)
高さ  6 × 3000 (0,100,3400,3000,3000,3000)GLからPHまで
水平軸を固定をONにして、水平軸オブジェクトを作成する。

以上で、通り芯とレベルが自動生成されるが、それぞれの数値はリンクしていないので、軸線の内訳を変更しても軸線の位置が変わるだけで、長さやレベルは変わらない。
軸線とレベルのプロパティでFontサイズを300に変更して、画面に文字を表示する。


数値リンクに使う変数は、オブジェクトとプロパティの名前でできている。プロパティの名前はデータタブにあるプロパティ名なのですぐわかるが、オブジェクトの名前はモデルタブにある名前ではなく、ソフトが自動的に割り付けた内部名になる。モデルタブでオブジェクトを選択した時に、ステイタスバーに内部名:〇〇〇と表示される。


主要なオブジェクトと変数の名前は次のようになっている。

建物の輪郭は、Rectangle.Length と Rectangle.Height
軸線は、Axis(縦軸)とAxis001(横軸)、Axis002(水平軸)
 .Distances[0~nのいずれか]で内訳を参照できる
レベルは、Buildingpart001~00n
 .Elevationで高さの座標を参照できる
 .Placement.Base.x(またはy,z)で位置を参照できる

数式エディタでは、大文字小文字も識別するので、頭文字が違うだけでもエラーになる。


数式エディタの例を、レベルオブジェクトで見てみる。

レベル0オブジェクトのデータタブにElevationというプロパティがある。その欄に青色( )書きで表示されているものが数式エディタの内容である。
これをクリックすると、数式エディタのアイコンが出るのでクリックして数式エディタに移動する。

数式エディタの記入欄に、仮にaと入れてみると、入力できるオブジェクト名がプルダウン形式のリストで表示される。

このプロパティで使えない変数、エラーになる可能性のある要素は自動的に除外される。

この中から使いたいものをクリックし、さらに詳細が必要なら同じ操作を繰り返して必要なプロパティまで入力する。
+ - * / の演算子を入れて計算式にすることができる。

クリアをクリックすると、設定している式が消えるので、変更しないときはESCでもどる。




■軸線の内訳を編集する
自動生成した通り芯を調整する。
各軸線をダブルクリックして内訳を表示し、横軸はそのまま、縦軸は2を2500に変更。
水平軸は、2を100(1F=GL+100)、3を3400(1F階高3400)に変更する。



■スプレッドシートで軸線のデータを整理する
数式エディタで軸線間の長さをリンクするために、スプレッドシートで集計表を作る。
ワークベンチをSpreadsheetワークベンチに変更して、ツールバー左端のスプレッドシート新規作成をクリックすると、モデルタブにSpreadsheetオブジェクトができる。
(ラベルで名前を変更することもできるが、ここでは変更しない。)

Spreadsheetをダブルクリックすると、スプレッドシートのウインドウになる。
(画面下にspreadsheetのタブができているので、それをクリックしてもよい。)

各軸の値と累計を集計するために、1行目のセルに V Line, H Line, Levelと入力する。
累計に相当する部分には0を入力しておく。
2行目以下にそれぞれの通りの数値が入るようにすれば、通りの数とセルの番号が一致するので後で迷わない。

縦軸、横軸、水平軸の内訳を入力する。
縦軸(V Line)は、A2からA4まで =Axis.Distances[1]から[3]
横軸(H Line)は、D2に =Axis001.Distances[1]
レベル(Level)は、G2からG6まで =Axis002.Distances[1]から[5]

不適当な式(存在しない数値を参照している場合など)を入力すると赤く表示される。
10行目にEX 3000とあるのは、軸線を通り芯から外側に延長する長さを決めておく。

B,E,H欄の累計は、最初の通りからの距離の合計とする。 
=上セル+左セル で各通りに累計が入る。 =B1+A2のようになる。
・スプレッドシートの式は、必ず=から始める。
・計算式の中に空欄のセルがあるとエラーになる。
・リンクするデータの単位の有無が違ってもエラーになる。

下の図で軸のスパンを数値入力とある部分は、上の計算式を入力する。



■レベルの文字位置を調整する
水平軸の内訳を変更したので、レベルの文字位置が水平軸とずれている。水平軸の移動に合わせて移動できるように設定を変更する。

レベル0は、GL=0なので変更しない。
レベル1は、Placementをクリックして内訳を出し、Z値をクリック。数式エディタ使用可能なので、クリックして数式エディタに移動する。

レベル1の高さはH2なので、これを数式エディタに入力する。
Spと入力すると、下にSpreadsheetが出るのでクリックする。さらにH2と入力すると、下にH2が出るのでクリック、正しく入力できると上に結果:100となるのでOKで戻る。

レベル1からレベル5まで、同様にして、Spreadsheet.H2~H6を入力して、水平軸とレベルのPlacement.Z値をそろえる。3500、6500、9500、12500


■建物の輪郭のサイズをリンクする
自動生成したデータの建物の輪郭サイズは、セットアップで設定した建物の大きさが入っている。
ここで、軸線の内訳をspreadsheetで集計したものを建物の輪郭にリンクしようとしたが、建物の輪郭は軸線の長さにリンクしているので、呼び出すことができなかった。
(強制的に計算式を入力すると循環エラーになる。)

したがって、建物の輪郭にはspreadsheetの計算結果をリンクはしない。
建物の輪郭は数値入力になっているので、建物のサイズを大きく変更して軸線が短くなった場合は、輪郭の数値を手動で正しい数値に変更する。


■軸線の長さと位置を調整する
横軸の長さを調整する。
自動生成したデータは、LengthはRectangle.Length*1.1となっている。建物の幅×1.1であるが、これを外側に3000ずつ延長することにして、設定を変更する。

Lengthの数式エディタのアイコンをクリックして数式エディタに移動する。
Spと打ち込んでもSpreadsheetを呼出すことができない。

軸線の内訳数値をSpreadsheetにリンクし、計算した結果を軸線に戻すと循環エラーになるため、ソフト側で除外しているようである。

したがって、軸線の長さ、位置は建物の輪郭(Rectangle)との関係で設定する。
Lengthには、Rectangle.Length+3000*2mmと入力する。17.5m
建物幅+延長長さ×2 mm単位を付ける。

横軸の位置を調整する。
Placementの内訳で、X値の数式エディタに移動して、Rectangle.Length+3000mと入力する。14.5m
(横軸は90度回転しているので、X方向に建物輪郭幅+外壁からの延長分だけ移動する。) 

縦軸も同様にして、軸線の長さを Rectangle.Height+3000*2mmと入力する。12.5m 
位置は、Placementの内訳で、Y値の数式エディタに移動して、-3000と入力する。
(縦軸はY方向に-3000だけ移動すればよい。)数値だけの時は、単位は自動的に付加される。



水平軸は、X軸と同じ位置関係になるので、軸線の長さとPlacementのX値を横軸と同じになるように設定する。
長さは、Lengthには、Rectangle.Length+3000*2mmと入力する。17.5m
位置は、XをRectangle.Length+3000*2mmと入力する。14.5m

最後に、レベルの文字位置を水平軸の端点になるように移動する。
レベルをまとめて選択し、PlacementのX値を-3000に変更する。



リンク関係の操作をしている時に循環エラーと警告が出た時は、関係するオブジェクトの間でリンクをしていないかチェックする必要がある。

それまでは、問題なく動作していた場合でも、新しいリンクを設定することで循環エラーになることもあるので、関連部分のリンクを確認した方がよい。

コメント

このブログの人気の投稿

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

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