You can use conditional statements in formulas to define actions in a family that depend on the state of other parameters. With conditional statements, the software enters values for a parameter based on whether a specified condition is satisfied. Conditional statements are useful in certain circumstances; however, they make families more complex and should be used only when necessary.
For most type parameters, conditional statements are unnecessary because the type parameter itself is like a conditional statement: If this is the type, then set this parameter to a specified value. Instance parameters are a more productive place to use conditional statements, particularly when they are used to set a parameter that does not vary continuously.
A conditional statement uses this structure: IF (<condition>, <result-if-true>, <result-if-false>)
This means that the values entered for the parameter depend on whether the condition is satisfied (true) or not satisfied (false). If the condition is true, the software returns the true value. If the condition is false, it returns the false value.
Conditional statements can contain numeric values, numeric parameter names, and Yes/No parameters. You can use the following comparisons in a condition: <, >, =. You can also use Boolean operators with a conditional statement: AND, OR, NOT. Currently, <= and >= are not implemented. To express such a comparison, you can use a logical NOT. For example, a<=b can be entered as NOT(a>b).
The following are sample formulas that use conditional statements.
Simple IF: =IF (Length < 3000mm, 200mm, 300mm)
IF with a text parameter: =IF (Length > 35', “String1”, “String2”)
IF with logical AND: =IF ( AND (x = 1 , y = 2), 8 , 3 )
IF with logical OR: =IF ( OR ( A = 1 , B = 3 ) , 8 , 3 )
Embedded IF statements: =IF ( Length < 35' , 2' 6" , IF ( Length < 45' , 3' , IF ( Length < 55' , 5' , 8' ) ) )
IF with Yes/No condition: =Length > 40 (Note that both the condition and the results are implied.)
Typical uses for conditional statements in formulas include calculating array values and controlling an element’s visibility based on a parameter value. For example, you can use conditional statements to
In Revit, arrays can only have an integer value of 2 or greater. In some situations, it may be useful to create a conditional formula that maintains an array parameter of 2 even if the calculated value is 1 or 0. With such a formula, if the calculated array value is 2 or greater, the formula retains the value. However, if the calculated value is 1 or 0, the formula changes the value to 2.
Formula: Array number = IF (Arrayparam < 2, 2, Arrayparam)
For example, if you have a Lights parameter that you want to use to control the visibility of muntin geometry, you can create a Yes/No parameter like MuntinVis, and assign it to the Visible parameter on the Properties palette for the muntin geometry. Because the MuntinVis parameter is a Yes/No (or Boolean) operation, both the condition (IF) and the results are implied. In this example, when the condition is met (true), the MuntinVis parameter value is selected, and the muntin geometry is visible. Conversely, when the condition is not met (false), the MuntinVis parameter is cleared, and the muntin geometry is not visible.
Formula: MuntinVis = Lights > 1