2014年4月13日日曜日

面積の桁処理方法

面積を切り捨てる方法

Revitの数値の表示は「丸め」という手法が用いられますが、明快に小数点以下第○位を切り捨てることは可能でしょうか?集計表を用いて試してみましょう。Revitに付属しているサンプルファイル「rac_basic_sample_project.rvt」で部屋面積をレベル順にならべた集計表を作成しました。
面積は「0.000000001」で丸めています。
面積表

面積を実数化する

面積を小数点以下第三位で切り捨てるには、次の手順を実行します。

  1. 面積を実数にする
  2. 実数を100倍する。
  3. 最も近いその値以下の整数に丸める
  4. 3を100で割って実数に戻す
多少面倒ですが、順を追って説明します。Revitは属性値の型にシビアなので面積のままでは3の切捨て処理ができないので一旦実数にします。実数にするのは簡単で、計算式のパラメーターを追加して面積を1で割るだけです。


面積/1で実数化される

100倍する

小数点以下第3位を切り捨てるために、小数点以下第2位を1の位にします。そのため値を100倍します。
切捨て前の準備として100倍する

切り捨てる

切り捨てるには次の関数を使用します。

rounddown(x)

この関数は、x以下でxに最も小さい整数を返します。

実数を100倍した値を切り捨てる

切り上げる場合は

roundup(x)

を使います。

100で割る

桁処理のために100倍したので100で割って元に戻します。

100で割って桁を元に戻す

面積に戻す

計算式のフィールドは表示形式が設定できませんが、面積のフィールドにすれば形式を設定することができます。それには1を掛けるだけです。

タイプを面積にして1を掛けると面積化できる

タイプを面積にすると形式の設定が可能
無事に切捨て処理を行うことができました。合計値もそれぞれの切り捨てた値を合計した値になっています。

まとめ

ここまでは手順を追って説明したため、列が増えてしまいましたが、これらをまとめることもできます。フィールドの計算式は次のようになります。

((rounddown(((面積 / 1 m²) * 100))) / 100) * 1 m²

集計表は次のようになります。
面積を小数点以下第三位で切り捨てた面積表
合計値が桁処理前と後で異なっています。これは合計値が合計値を桁処理したのではなく、きちんと桁処理した数値を合計しているためです。