ラベル 計算式 の投稿を表示しています。 すべての投稿を表示
ラベル 計算式 の投稿を表示しています。 すべての投稿を表示

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

2018年1月13日土曜日

/1の効用

単位にうるさい計算式

集計表の計算式は便利なのですが、「単位」について非常に厳格です。ちゃんと筋が通っていないとエラーになります。たとえば、換気計算の式に次のようなものがあります。

必要換気量(㎥/h) = 20(㎥/h・人)×床面積(㎡)÷一人当たりの専有面積(㎡)

この計算式では20は固定値で、一人当たりの専有面積は部屋の用途に応じて一定の値が定められています。(必要換気量の求め方:三菱電機参照
例えば、Excelであれば、数値だけの操作になるので、この計算表を作ることは簡単です。しかしRevitの集計表で作ろうとすると、単位をそろえなければならないので一工夫必要です。

計算式で自動的に単位を補ってくれる場合

(1) 床面積:㎡

これは素直に部屋の面積を使えばいいです。

(2) 一人当たりの専有面積:㎡

新たに単位を面積としてインスタンスパラメータを作成します。こちらの値は部屋の用途に応じて手動でインプットします。

(3) 必要換気量:㎥/h---計算式

必要換気量を求める式を作成します。式の結果としては㎡/hの単位が必要なので専門分野[HVAC]で[風量]を使います。[風量]の単位は㎥/hですからこれがそのまま使えます。

そして式ですが、素直に「20*面積/一人当たりの専有面積」としてOKします。
OKしてもエラーは起きない
何もエラーは起きないはずです。
もう一度編集ボタンをおして式をチェックしてみる。

もう一度計算式フィールドを編集ボタンで見てみると

  • 20 m³/h * 面積 / 一人当たりの専有面積

となっており、定数20の後に自動的に単位「m³/h」が補われています。「面積/一人当たりの専有面積」の部分が「㎡/㎡」で単位がなくなってしまうので、定数部分の20に「㎥/h」が補われているのです。

自動的に単位を補ってくれない場合

必要換気量の計算として以下のような式もあります。

必要換気量(㎥/h)=毎時必要換気回数(回/h)×部屋の容積(㎥)

部屋の容積はRevitからそのままいただくとして、毎時必要換気回数の「回/h」はどうしたものでしょうか?Revitでは「回/h」という単位は扱えないので、「整数」としてパラメータを作成します。整数は無単位です。(少数がある場合は「実数」を使います。)計算式に

  • 毎時必要換気回数*容積

としてOKを押すと、以下のようなエラーが表示されます。
エラーが表示される
式の中に定数があればRevitが不足する単位を補ってくれるのですが、今回は定数がないので、単位を補完することができず、エラーとなってしまいました。

定数 /1

そこで、無理やり式に定数を加えます。毒にも薬にもならない「÷1」つまり「/1」を式に加えます。Revitが/1に適切な単位を加えてくれるはずです。

  • 毎時必要換気回数/1*容積

としてOKを押します。こんどはエラーが表示されません。もう一度編集ボタンをおして式の様子を見てみると
s(秒)が補完されている

  • 毎時必要換気回数 / 1 s * 容積

となって、時間の単位[s]が補充されてます。今回の時間の単位は秒ではなく時間なので、この「s」を「h」に書き換えてOKします。
「s」を「h」に書き換える

  • 毎時必要換気回数 / 1 h * 容積

これで目的の必要換気量を求めることができます。

*1でもOK

毒にも薬にもならないといえば/1以外にも*1(×1)でも値が変化しないという点では同じですよね。試しに、

  • 毎時必要換気回数*容積*1

としてみると計算式は
「Hz」が補完される

  • 毎時必要換気回数 * 容積 * 1 Hz

と「翻訳」されます。Hzは回/秒ですから理にかなってますね。この式に「/3600」を加えて
  • 毎時必要換気回数 * 容積 * 1 Hz / 3600
とすれば、結果は同じになります。
計算式を作成するときに起こりがちな単位に関するエラーですが、「/1」や「*1」を加えることで、Revitが単位を適切に処理してくれます。

2017年5月27日土曜日

条件式を使ったファミリ

条件式 IF

前回のファミリを引き続き題材にします。下の図を見てみると、面取距離(A)の値は取りうる値に制限があることがわかります。0より大きくないといけないし、またX、Yの値の半分より小さくないと押し出しフォームを作ることができません。
前回の面取りファミリ
まとめますと
  • 条件1: 面取距離>0
  • 条件2: 面取距離<0.5*X かつ  面取距離<0.5*Y
面取距離=面取長*sin(45°)ですから、二つの条件は
  • 条件1:面取長*sin(45°)>0
  • 条件2:面取長*sin(45°)<0.5*X かつ 面取長*sin(45°)<0.5*Y
となります。この二つの条件をすべて満たしたとき、Aの値を受け入れるようにしてみましょう。
条件式は if 文を使います。書式は

if(条件式, TRUEの場合の値, FALSEの場合の値)


となります。条件式は数字の判断が使えますが、文字列の判断は使えません。

入力用のパラメータを追加

ファミリを開いて、面取りの長さを入力するためのパラメータを追加します。

  1. 作成タブ>プロパティパネル>ファミリタイプ
  2. 新しいタイプ ボタンをクリック
  3. 名前を「面取長」とし、パラメータタイプを「長さ」、パラメータグループを「寸法」としOK
    パラメータ「面取長」を追加

条件を追加

条件1と条件2を評価するためのパラメータを追加します。

  1. 作成タブ>プロパティパネル>ファミリタイプ
  2. 新しいタイプボタンをクリック
  3. 名前を「条件1」としてパラメータタイプを「はい/いいえ」、パラメータグループを「その他」
  4. 同様に、「条件2」を追加
  5. 条件1の式を「面取長 * sin(45) > 0」
  6. 条件2の式を「and(面取長 * sin(45°) < 0.5 * X, 面取長 * sin(45°) < 0.5 * Y)」
    条件1と条件2を追加して式を設定する
    条件2の式は「面取長 * sin(45°) < 0.5 * X」, 「面取長 * sin(45°) < 0.5 * Y」の両方の式が満たされていればTRUE(☑)、そうでなければFALSE(□)を返します。

Lの値を制御する

Lの値をifを使った計算式で制御します。
  1. Lの計算式に「if(and(条件1, 条件2), 面取長, 0.1 * X)」と入力

これは 条件1と条件2がどちらもTRUEならば面取長にLの値をそうでなければXの0.1倍の値をLに設定する という意味です。なお、どちらかがTRUEの場合はandではなくorを使います。
Lの式を設定するとグレーになる

面取長の値をいろいろ変えて適用ボタンをおしてみてください。あまり大きな値を入力するとX*0.1の値になります。
安全なファミリ

これで安全な値しか入力できないようになります。

2017年5月20日土曜日

計算式を使ったファミリ

計算式を活用しよう

ファミリのパラメータは、計算式を使うことでいろいろな制限ができます。今回は計算式に関するいくつかのヒントをご紹介します。

面取りの長さ

下の図のような角が面取りされたファミリを考えてみます。面取りの距離(下の図ではA)ではなく、面取りの長さで距離を指定したい場合はどうすればいいでしょうか?
面取りの長さで指定するには?

まずは次の手順でファミリを作成してみます。ここで大事なのは、面取り部分のスケッチラインの拘束方法です。
  1. [R]>新規作成>ファミリ
  2. 「一般モデル(メートル単位).rfa」
  3. 下の図のように参照面を作成し、寸法をつけ、寸法にラベルをつけてパラメータ化します。
    参照面に寸法を作成し、寸法にラベルを付ける
  4. 作成タブ>フォームタブ>押し出し
  5. オプションバーのロックにチェックを入れる。スケッチラインを確実に参照面にロックしましょう。
  6. 描画パネル>選択(緑色の線のアイコン)
  7. 上下左右の参照面を選択してスケッチラインを参照面にロック
    スケッチラインを参照面にロック
  8. 修正パネル>位置合わせ
  9. 内側の参照面①を選択、スケッチラインの端点②を選択(端点●がハイライトされます)
    位置合わせ
  10. 鍵アイコンをクリックしてロック。
    ロックする
  11. これを繰り返して、残りの端部を参照面にロック。
    端部をロック
  12. 描画パネル>線分で面取り部をつなぐ。
    スケッチ完成
  13. モードパネル>✔
  14. プロパティウインドウの押し出し終端のボタンを押して、新しいパラメータボタンを押し、T1というパラメータを作成。
    パラメータT1を関連付け
  15. 同様に押し出し始端にT2というパラメータをつける。
  16. プロパティパネル>ファミリタイプ
  17. Aの値を200に変更して適用し、正しく機能するか確認します。

面取りの長さLをパラメータにする

面取りの長さをLとして計算式で表すと
  • A=L*sin(45)
  • A=L/sqrt(45)
などと表すことができます。面取りの長さをLとしてパラメータを追加します。
  1. プロパティパネル>ファミリタイプ
  2. 新しいパラメータボタンをおし、「L」パラメータを追加
    パラメータLを追加
  3. パラメータAの「式」の欄に L * sin(45) と入力、「°」は自動的に付加されます。半角で入力して下さい。パラメータの大文字小文字は区別されます。
    L*sin(45)
  4. Lの値を100として適用、Aの値が変わることを確認します。
    面取りの長さを100に
  5. 式の中に変数(この場合はL)が一つしかないので、Aの値を変更してもLの値を変えることができます。

厚さをコントロール

厚さにはT1、T2のパラメータをつけました。総厚をTとして、それぞれ0.5*Tを設定してみます。
  1. プロパティパネル>ファミリタイプ
  2. 新しいパラメータボタンをおし、「T」パラメータを追加
  3. T1の計算式に 0.5*T 、T2の計算式に -0.5*Tとする。
  4. T の値に 400 と入力し適用ボタンを押し、T1,T2の値が変わることを確認
    T1とT2の値を計算式で設定

使える関数

このようにファミリの値を制御するために計算式を使うことができます。以下のような関数が使えますが、どのように使うかはヘルプ(2017 2018)を参照してください。
  • 加算: +
  • 減算: -
  • 乗算: *
  • 除算: /
  • 指数: ^: x^y、xの y 乗
  • 対数: log
  • 平方根: sqrt: sqrt (16)
  • 正弦: sin
  • 余弦: cos
  • 正接: tan
  • 逆正弦: asin
  • 逆余弦: acos
  • 逆正接: atan
  • 10 の x 乗—exp(x)
  • 絶対値: abs
  • Pi—pi (3.1415926...)
  • 最も近い自然数に丸め:round(X)
  • x 以上の最も大きな自然数に丸め:roundup(X)
  • x 以下の最も小さい自然数に丸め:rounddown(X)

2016年12月25日日曜日

建具リストチュートリアル(3)~タグで数式を使う

その前に

Revitに関する一般的な質問があるときはAutodesk CommunityのフォーラムにAutodeeskIDを使って、質問を投げると誰かが答えてくれます。私も時々見ていますので、Revitの操作で疑問に思うことがあれば気楽に投稿してみてはいかがでしょうか?きっと答えが見つかると思います。

質問はこちら、または右のAutodesk Communityのリンクをクリックしてみてください。

準備


今回はドアタグを改造して、建具キープランを使って建具のプロパティをチェックしながら、建具リストを編集します。まずは下のリンクから練習用ファイルをダウンロードして開いてください。

練習用ファイルをここからダウンロード

共有パラメータファイル

このドアだけ変更する

建具キープラン1階を開き、右上の部分を拡大します。階段(2)から外部に出るドアがあるので、これを外部建具に設定します。SD-2はほかにもたくさんあるので、このドアだけを外部建具にします。タイププロパティを変更するので、タイプを複製してから変更します。

(1) 階段室から外に出るSD2のドア(ドアタグではない)を選択。
外部建具を選択
(2) プロパティウィンドゥの[タイプを編集]
(3) [複製]を選択し、名前を「900x2100 外部」とする。
タイプを複製する
(4) タイププロパティ「建具・外部」がグレーの✔なので、これをクリックして、白地に✔の状態とする。グレーの場合は「値が設定されていない」とう意味です。
(5) 建具番号を「2E」とする。
建具番号と建具・外部を設定

こうすることで、他のドアに影響を与えず、指定したドアだけのタイププロパティを変更することができます。
指定のドアのプロパティのみが変更される
ドアタグに情報を表示する
タイププロパティの情報をタグに表示します。

(1) ドアタグを選択し、[ファミリを編集]をクリック。
ファミリを編集
(2) [作成]タブ-[文字]パネル-[ラベル]
(3) [修正|配置]タブ-[書式]パネルで[左に位置合わせ]
書式を指定
(4) 任意の位置をクリック
(5) ラベルを編集ダイアログボックスで、[パラメータを追加]をクリックして、共有パラメータの[選択]、「建具・外部」を選択しOK。
パラメータを追加
(6) ラベルを編集ダイアログボックスで、[fx]をクリック。
(7) 計算値ダイアログボックスで、名前を「外部」、タイプを「文字」とする。
fxをクリック
(7) 計算式に 

  if(建具・外部,"外","")
 
と入力しOK。これは「建具・外部」のパラメータが「はい(☑)」のときは「外」という文字を、そうでない場合は「」を表示する、という意味です。
(8) ファイルを保存して、[プロジェクトにロード]
(9) [既存のバージョンとそのパラメータを上書きする]を選択。

建具キープランに下の図のように表示されます。
建具記号に「外」の文字が表示された
他のドアは「建具・外部」のプロパティがチェックはされているものの、グレー表示(値が設定されていない状態)なので、「外」の字が表示されていません。

上記の手順を繰り返して、「電気錠」や「自動扉」を設定することができます。
自動扉や電気錠を表示するドアタグ
  • 自動扉の計算式は   if(自動,"自","")
  • 電気錠の計算式は   if(電気,"電","")
です。
電気錠や自動扉も同様に設定

タグにパラメータの情報を表示することで、チェックが容易になります。