2018年9月2日日曜日

計算式を含んだタグ

面積を切り捨てて表示する部屋タグを作る

Revitの数字の表示は「丸め」を行っています。今回は面積を小数点以下第3位で切り捨てて表示する部屋タグを作って、切り捨て、切り上げ、四捨五入の処理の仕方を学習してみましょう。使用する計算式は

  • rounddown(x)---x 以下の最も小さい自然数に丸める→切り捨て
  • roundup(x)------x 以上の最も大きな自然数に丸める→切り上げ
問題はround関数は自然数しか扱えないことです。そのままでは任意の桁を処理することはできません。一工夫必要です。

タグの作成

  1. [ファイル]>[新規作成]>[ファミリ]
  2. [注釈]フォルダ>[部屋タグ(メートル単位).rft]
  3. [作成]>[文字]>[ラベル]
  4. [プロパティウィンドゥ]で[タイプを編集]
  5. [名前を変更]をクリックし、名前を[Yu Gothic UI 1.3mm]に設定。
  6. 次の図のようにプロパティを設定する。
    Yu Gothic UI 1.3mm
  7. [複製]を押して名前を[Yu Gothic UI 1.5mm B]として、下の図のようにプロパティを設定する。
    Yu Gothic UI 1.5mm
  8. 参照面の交点付近をクリックして、1.5mmのラベルを配置する。
  9. [ラベルを編集]ダイアログボックスで、カテゴリパラメータから[名前]を選択して[→]ボタンを押してラベルパラメータに追加しOK。
    ラベルパラメータを追加
  10. ラベルの位置を調整する。
  11. 同様に、タイプ[Yu Gothic UI 1.3mm]で、名前の上方に「番号」のラベルを作成する。
    名前の上に番号
  12. 名前をつけて保存する。

面積を小数点以下第3位で切り捨てて表示する

面積を小数点以下第3位で切り捨てて、小数点以下第2位まで表示するラベルを作成します。面積のパラメータをそのまま使わず、計算式のラベルパラメータを作成します。
  1. [作成]>[文字]>[ラベル]
  2. 名前の下方をクリックしてラベルを配置。
  3. [fx]ボタンをクリック。
    計算されたパラメータをラベルに追加
  4. 計算値ダイアログボックスで次の操作を行う。
    • 名前を「部屋面積」
    • 専門分野を「共通」
    • タイプを「面積」
    • 計算式を「rounddown((面積 / 1 ) * 100) * 1  / 100」
    • [OK]
      計算値
  5. [サンプル値]に「100」、[末尾表記]に「㎡」とし、[#]ボタンを押す。
    パラメータの単位書式を編集
  6. 形式ダイアログボックスで次の操作を行う。
    • プロジェクト設定を使用のチェックをOFF
    • 丸めを「小数点以下の桁数 2」
    • 単位記号は「なし」
    • 末尾0を省略をOFF
    • 桁区切りを使用をOFF
    • OK
      形式設定
  7. さらにOKして、ラベルの位置を調整します。
    計算式を含んだタグ
これをプロジェクトにロードしてみると、次の図のように、面積が小数点以下第3位で切り捨てられていることがわかります。
面積を小数点以下第3位で切り捨てて表示

round関数の取り扱いのポイント

ポイント1 : 引数に単位があってはならない。

roundup(x)、rounddown(x)、round(x)の三つの関数の引数Xは実数であり、面積や長さなど単位のある値を設定することができません。そのため、面積を1㎡で割って単位を取り去った値を設定しています。
rounddown(面積/1)

ポイント2 : 処理できるのは小数点以下第1位だけ

round関数が返す値は自然数です。3.1→3のようにけた処理できるの小数点以下第1位に限定されています。そこで、目的の桁数をnとすると10を(n-1)乗した値をxにかけて、結果を10をn-1乗した値で除算します。
rounddown((面積/1)*100)/100

ポイント3:結果は自然数(単位無し)である

round関数の計算結果は自然数なので100で除算しても単位がありません。そこで1㎡をかけて単位を揃えます。
rounddown((面積/1)*100)*1/100
部屋面積のラベルを選択して[ラベルを編集]をクリックし、計算されたパラメータを編集ボタンをクリックすると、式には
rounddown((面積 / 1 ) * 100) * 1 / 100
という、単位が自動的に補われた式が設定されています。

round関数はタグだけではなく、集計表のフィールドにも使えるので、以上三つのポイントに気をつけて使いこなしてください。