条件文ifの構文
ファミリのパラメータには条件文を組み込むことができます。構文は=if(条件,条件が真の場合の値,条件が偽の場合の値)
です。【条件は数字しか判断できない】
条件には他のパラメータの値を用いることができますが、その真偽の判断が可能なのは数字のみで、文字は判断できません。たとえば「文字列が一致する」などの判断はできません。例1
パラメータ名 パラメータタイプ
paramA 文字
paramB 文字
✖=if(paramA=paramB,…,…)
条件式に用いることができるパラメータタイプは、
- 数値
- パラメータタイプが数値のパラメータ名
- パラメータタイプがはい/いいえのパラメータ名
です。
【異なるタイプを比較するには?】
例2
パラメータ名 パラメータタイプ
paramA 長さ
paramB 実数
とすればOKです。
✖=if(paramA >= paramB, …, …)
paramA-paramBが±1未満である
○=if(abs(paramA - paramB) < 1 , …, …)
paramA-paramBが±1以内(1より大きくない)である
○=if(not(abs(paramA - paramB) > 1 ), …, …)
paramAが1以上10以下の場合
paramAが1以上10未満の場合
条件式を「はい/いいえ」のパラメータが受け取る場合はifは不要です。
paramAが10より小さいとき
paramB = paramA<10
orの構文 or(式1, 式2)
式1または式2のどちらかが真であれば真を返します。つまりどちらかが成り立っていればよい、ということです。
paramA 長さ
paramB 実数
✖=if(paramA=paramB,…,…)
パラメータタイプが異なる場合は直接比較することはできません。そう、Revitは単位にうるさいのです。こういうときは「魔法の/1」を使って
○=if(paramA / 1 = paramB, …,…)とすればOKです。
【以上・以下の判断】
大きい小さいを比較する演算子は>,<,=のみであり、>=や<=を用いることはできません。これは「未満ではない」という理屈でnotを使って条件式を作ります。notは真偽の値を反転します。
例3
パラメータ名 パラメータタイプ
paramA 長さ
paramB 長さ
paramA 長さ
paramB 長さ
paramAがparamB以上である
○=if(not(paramA < paramB), …, …)
【値の差が±1.0に納まっている】
値が±○○以内にあることを判断するには絶対値absを使います。
例4
パラメータ名 パラメータタイプ
paramA 長さ
paramB 長さ
paramA 長さ
paramB 長さ
paramA-paramBが±1未満である
paramA-paramBが±1以内(1より大きくない)である
【○○より大きく○○より小さい】
値がある範囲に収まっているかどうかを判断するにはandを使って二つの式を結合します。
andの構文 and(式1,式2)
式1と式2がともに真ならば、真を返します。つまり両方成り立っている場合だけ真を返します。
例5
パラメータ名 パラメータタイプ
paramA 長さ
paramAが1より大きく10より小さい場合
paramA 長さ
paramAが1より大きく10より小さい場合
○=if(and(paramA>1, paramA<10) , …, …)
paramAが1以上10以下の場合
○=if(and(not(paramA < 1), not(paramA > 10)),…, …)
paramAが1以上10未満の場合
○=if(and(not(paramA < 1), paramA < 10),…, …)
【条件式をはい/いいえのパラメータが受け取るとき】
例6
パラメータ名 パラメータタイプ
paramA 長さ
paramB はい/いいえ
paramA 長さ
paramB はい/いいえ
paramAが10より小さいとき
paramB = paramA<10
【範囲外】
ある範囲に値がないことを判断するにはORを使います。orの構文 or(式1, 式2)
式1または式2のどちらかが真であれば真を返します。つまりどちらかが成り立っていればよい、ということです。
例7
パラメータ名 パラメータタイプ
paramA 長さ
paramAが0未満、または10より大きい
○=if(or(paramA<0, paramA>10) , …, …)
paramAが0以下、または10以上
○=if(or(not(paramA>0), not(paramA<10)) , …, …)
考え方のポイントは
とすればわかりやすいと思います。
すべての式が成り立っていることを判断するには
and(and(式1,式2),式3)
--------(式1×式2)×式3
and(and(式1, 式2), and(式3, 式4))
--------(式1×式2)×(式3×式4)
一つでも偽=0があれば答えは0=偽です。
どれかが成り立っていることを判断するには
or(or(式1,式2),式3)
--------(式1+式2)+式3
or(or(式1, 式2), or(式3, 式4))
--------(式1+式2)+(式3+式4)
paramA 長さ
paramAが0未満、または10より大きい
○=if(or(paramA<0, paramA>10) , …, …)
paramAが0以下、または10以上
○=if(or(not(paramA>0), not(paramA<10)) , …, …)
【二つ以上の式を判断する】
andとorは引数として式を2しか受け取ることができませんが、使い方を工夫すれば3つ以上の条件を判断することができます。考え方のポイントは
- ☑真=1(0でない整数)
- □偽=0
- andは掛け算(式1×式2)----一つでも0があれば答えは0=偽
- orは足し算(式1+式2)-----一つでも1があれば答えは0ではない=真
とすればわかりやすいと思います。
すべての式が成り立っていることを判断するには
and(and(式1,式2),式3)
--------(式1×式2)×式3
and(and(式1, 式2), and(式3, 式4))
--------(式1×式2)×(式3×式4)
一つでも偽=0があれば答えは0=偽です。
どれかが成り立っていることを判断するには
or(or(式1,式2),式3)
--------(式1+式2)+式3
or(or(式1, 式2), or(式3, 式4))
--------(式1+式2)+(式3+式4)
一つでも真=1があれば答えは0ではない=真です。