Professional Documents
Culture Documents
AB327-4 This class will show you how to leverage your family building knowledge by moving beyond static families and
empowering you to create parametric marvels. Learn some of the essential math and formulas you need to know to help drive
geometry based on required relationships, evaluate and restrict user input to set ranges, use Boolean operations to control
visibility based on other parameter values, and discuss parameter naming strategies. We will also look at advanced formula
examples that calculate complex geometrical relationships to achieve seemingly impossible results.
David Baldacchino and Steven Campbell presented this session for Autodesk University 2008. They both had the
desire and passion to present this session again but were unable to join us in person. Their input and knowledge is
part of this presentation in every part. We thank you for your help and allowing us to take the reins of this session.
2
AB327-4 Fuzzy Math Essentials for Revit Family Builders
IN TRODUCTION
While many have learned the art of creating Revit Family Content, few have mastered leveraging the power of Revit
through formulas. This class will assume that one has an intermediate knowledge of Revit, understanding of the key
family building concepts and a desire to learn how to advance the strength of Revit Family Components through the
use of formulas. Formulas allow one to create a component that is immensely more flexible than simple parameters,
allow for work-arounds to the 0'-0" dimension, arrays less than 2, if statements, built-in intelligence and safeguards.
Through the experience of multiple individuals from five different companies, we will show examples of how formulas
can be put into practice.
Before we start with the specifics of different formulas and how they can be used practically, we will cover the
general formulas that are available to one in all verticals of Autodesk Revit.
NOTE: Due to the expressions used within the formulas, one should refrain from using any of the following
expressions within the names of parameters to avoid any confusion within the calculations. Parameter names are
case-sensitive and the formula will provide an error if one does not retype the parameter name exactly.
3
AB327-4 Fuzzy Math Essentials for Revit Family Builders
One will find throughout this presentation that "If" statements are used as much, if not more, than other mathematical
equations. Some "If" statements are implied as seen in the Boolean examples whereas some will include 'If" in the
formula. In general, these formulas can create a return value of real numbers with multiple decimals, integers,
lengths, areas, volumes, angles, yes/no boxes and text. Examples of these "If" statements are shown below:
IF(Parameter A, 1, 2)
This number or integer parameter looks at yes/no (Parameter A). Therefore, IF Parameter A is YES, then number
1 would be inserted for this parameter and if Parameter A is NO it would insert number 2.
IF(Parameter A, "X", "")
This text parameter looks at yes/no (Parameter A). Therefore, IF Parameter A is YES, then text X would be
inserted for this parameter and if Parameter A is NO it would insert no text in this field.
IF(Parameter A, 1'-0", 2'-0")
This length (dimension) parameter looks at yes/no (Parameter A). Therefore, IF Parameter A is YES, then the
dimension would be 1'-0" for this parameter and if Parameter A is NO it the dimension would be 2'-0" in this field.
IF(Dimension A = 1'-0", 1, 2)
This number parameter looks at length parameter (Dimension A). Therefore, IF Dimension A equals 1'-0", then
number 1 would be inserted for this parameter and if Dimension A does not equal 1'-0" it would insert number 2.
In lieu of equals, < less than or > greater than could be substituted to alter the results. Similar to the examples
above, if this were a text parameter one could get a result of a text result if the text is in quotes and it could also
respond with a dimension if this were a dimension parameter.
IF(Text A = "Long", 10'-0", 1'-0")
This dimension parameter looks at text parameter (Text A). Therefore, IF Text A field has Long written in it then
the dimension would be 10'-0" and if it has different text or no text then the dimension would be 1'-0". In lieu of a
dimension parameter, this equation could return another text response, integer or a number response.
4
AB327-4 Fuzzy Math Essentials for Revit Family Builders
KEY POINTS OF FORMULAS
Simplify User Controls
Formulas can be used to reduce the number of parameter variables that a user needs to adjust.
Dependant Parameters
If one parameter is dependant of another then one change to either one will adjust the other parameter.
Multiple Dependencies
If a parameter is dependent on multiple parameters, then the result is a grayed out result which can only
be altered by adjusting one of the dependent parameters.
Converting Units
Sometimes it is required to alter the units of a parameter in order to utilize it in specific formulas. For
example, to switch a Length parameter to a number one would use (LENGTH * 12) / 1'
KEY TOPICS OF THIS SESSION
Planning and Documenting one's work
Parameter Naming
Boolean Operators - AND, OR, NOT; Evaluating YES/NO parameters to drive other YES/NO
parameters. Immeasurably valuable to assist in visibility controls.
Circles
Ellipses
Massing
Schedules
5
AB327-4 Fuzzy Math Essentials for Revit Family Builders
This example shows the planning of a "super" casework family. This was shared with the power users of the firm to
get feedback on the options available in the "User Parameters". The user parameters are those which are shown in
the properties. The "Hidden Parameters" are those nested within the component and thus does not "muddy" up or
confuse the user with unnecessary parameters. A PDF version of this image is included in the dataset.
DOCUMENTING
By creating a plan, one has also accomplished documenting the work needed to create the component. This can be
used for future understanding of the component when changes or additions are required.
For example:
• One may create all calculation parameters with CALC at the end of the parameter and place all calculation
parameters in construction.
• Someone else may just name them without a identifier but place all calculation parameters in constraints.
• Either way is fine as long as one is consistent and users can understand what they need to change.
6
AB327-4 Fuzzy Math Essentials for Revit Family Builders
ROUN DIN G
NUMBERS
Rounding Numbers is actually quite easy. One would have their main input number parameter, then have
another parameter that references the input number and either adds 0.49 to round the number up or subtract 0.49
to round the number down. For example:
Input Number = 6.77 (Either as a result from another formula or user entered value)
To round the number up
Rounded Number = Input Number + 0.49 (This must be an integer parameter to work correctly)
To round the number down
Rounded Number = Input Number - 0.49 (This must be an integer parameter to work correctly)
This can then be added to a more complex formula utilizing an "if" statement if one wanted to switch between
Rounding Up and Rounding Down with a yes/no parameter.
Rounding Checkbox = (User would check to round up and leave unchecked to round down)
To round number either up or down
Rounded Number = Input Number + if(Rounding Checkbox, 0.49, -0.49)
Note: The Rounded Number parameter must be an integer parameter to work correctly
DIMENSIONS
Rounding Dimensions takes a few more steps then its numbers counterpart. There are a few ways that I have
seen some doing this, but I find this process to be very efficient.
To determine the Number of Rounding Value one must utilize the formula shown above. The main dimension is
converted to a number, added to the rounding value which is converted to a number, divided by two and then the
value is divided by the rounding value, which once again is converted to a number. Since the Num of Rounding
Value is an integer, straight dimensions (length parameters) will create an error.
To conclude the rounding, one must then take the Num of Rounding Value and multiply the Rounding Value. This
will result in a rounded up dimension if the Rounding Value is positive and a rounded down dimension if the
Rounding Value is negative.
7
AB327-4 Fuzzy Math Essentials for Revit Family Builders
B OOLEA NS
Revit object that is altered by and, or, not Boolean logic operators.
User Controls
In this example there are checkbox (user) controls for Object A,
Object B, Object C, Or Boolean Operators and if Or Boolean Object A - Yes/No Checkbox
Operators is not checked then AND Boolean Operators is "by Object B - Yes/No Checkbox
default" checked. Depending on the options a user selects, Object C - Yes/No Checkbox
different parts of the object display. Or Boolean Operators - Yes/No Checkbox
And Boolean Operators - Yes/No Checkbox
8
AB327-4 Fuzzy Math Essentials for Revit Family Builders
AND - Object A Selected AND - Objects A+B Selected AND - Objects A, B + C Selected
AND Operators
CALC VIS Object A and(not(Object B), not(Object C), Object A)
CALC VIS Object B and(not(Object A), not(Object C), Object B)
CALC VIS Object C and(not(Object A), not(Object B), Object C)
CALC VIS Object AB and(and(Object A, Object B), not(Object C))
CALC VIS Object BC and(and(Object B, Object C), not(Object A))
CALC VIS Object AC and(and(Object A, Object C), not(Object B))
VIS Result ABC and(Object A, Object B, Object C)
OR Operators
VIS Result A
if(OR Boolean Operators, or(CALC VIS Object A, CALC VIS Object AB, CALC VIS Object AC, VIS Result ABC),
CALC VIS Object A)
VIS Result B
if(OR Boolean Operators, or(CALC VIS Object B, CALC VIS Object AB, CALC VIS Object BC, VIS Result ABC),
CALC VIS Object B)
VIS Result C
if(OR Boolean Operators, or(CALC VIS Object C, CALC VIS Object AC, CALC VIS Object BC, VIS Result ABC),
CALC VIS Object C)
VIS Result AB
if(OR Boolean Operators, or(CALC VIS Object AB, VIS Result ABC), CALC VIS Object AB)
VIS Result AC
if(OR Boolean Operators, or(CALC VIS Object AC, VIS Result ABC), CALC VIS Object AC)
VIS Result BC
if(OR Boolean Operators, or(CALC VIS Object BC, VIS Result ABC), CALC VIS Object BC)
9
AB327-4 Fuzzy Math Essentials for Revit Family Builders
The user enters the Number of Shelves and the Array Control parameter evaluates it the Number of Shelves is less
than 2. If it is less than 2 then it will keep the array at 2. If it is 2 or more then it uses the user entered Number of
Shelves. Shelf 1 will turn on the visibility of a single shelf if the Number of Shelves equals 1. Shelf 2 Plus turns on
the visibility of the array if the Number of Shelves is 2 or more. A very similar process can be used to control the
max value of a user entered value.
10
AB327-4 Fuzzy Math Essentials for Revit Family Builders
Before we look at Conditional Visibility, let’s confirm we have a grasp on the basic concept of visibility in family
building.
If you select any object in the family editing environment, on the properties panel you will see a parameter called
VISIBILITY with a check box next to it. This parameter controls whether the object is VISIBLE (On) or INVISIBLE
(Off). If turned off, the object’s display will change and the form will not show when the family is hosted.
Thus, visibility is a binary function to be controlled, It’s a YES/NO or TRUE/FALSE question. As such, we can
program our family a GREATER THAN/LESS THAN EQUATION, based upon other parameters, to control this
switch.
We can also use Boolean Operations, based upon the status of other YES/NO parameters in our family.
11
AB327-4 Fuzzy Math Essentials for Revit Family Builders
Here is an example of these concepts in action. The first example examines controlling the number of rows in a
tiered seating family.
Once nested in a host family, the necessary parameters are linked. Then controlling the number of rows is very
easy:
Please note, Revit does not understand “Greater Than or Equal To” so it is important to include “+/-1” in your
desired number of objects formula! Plan carefully!
12
AB327-4 Fuzzy Math Essentials for Revit Family Builders
I have now nested 2 families into my basic extrusion and linked their visibility to parameters called “Step Single” &
“Step Double”. The overall visibility is controlled by looking at the height difference between rows, whether the row
exists, and whether or not an aisle is desired in this section.
And now cycling through various steepness settings for the assembly, we can see the step configuration change:
13
AB327-4 Fuzzy Math Essentials for Revit Family Builders
VISIBILITY OF VOIDS
Controlling the visibility of voids presents a different challenge. Void forms do not have an inherent VISIBILTY
parameter, so what can we do to turn them on or off? The easiest method is to simply move them away from the
form they intend to cut.
By way of example, let’s look at a potential door family and we want the option to cut a vision hole.
14
AB327-4 Fuzzy Math Essentials for Revit Family Builders
The “Door” form is hosted on the primary vertical reference plane. An additional reference plane has been drawn
and its position relative to the “Door” is controlled by the parameter ‘Void_Offset”. Once a cutting relationship is
established, the void can move into or away from the mass as specified.
15
AB327-4 Fuzzy Math Essentials for Revit Family Builders
A RRA YS
INTRODUCTION TO LINEAR ARRAYS
The array tool is quite powerful, especially when used in the Family Editor. We can control the number of arrayed
elements and their visibility through logical formulas, resulting in very useful dynamic families. Let’s take a look at an
example using the Detail Component line based family template where we will build a flexible plywood section
component family that is perfect for detailing work.
In the planning stages it was determined that we needed plywood of varying thicknesses. This meant that the
arrayed elements needed to resize accordingly. The family was expected to work at any length, so we needed to
take care of a chronic array problem when the calculated number of arrayed elements was less than 2, causing the
family to break.
NESTING
When creating a parametric array, Revit
creates grouped instances of the arrayed
elements. This causes a problem when
trying to resize elements within those
groups, such as detail lines for example.
To solve this issue, it is considered best
practice to create a separate parametric
family for the component to be arrayed and
then nest that into the line based family,
where you’ll apply the relevant constraints
and array it as required.
Above you can see that the Array integer is forced to a value of 2 if Length is less than or equal to 6”. Note that to
express this in Revit, you have to use the expression not(Length > 0’ 6”), which achieves the same result. The
reason for using 6” as the threshold is due to Array evaluating to 1 when Length is 5”, which causes the family to
fail. A good rule of thumb is to set your threshold to 1.5 x the required spacing. Note also in the above example that
with a Length of 7”, the single (non-arrayed) element will be turned off and the arrayed elements (controlled by
VIZ_multiple) will be visible.
16
AB327-4 Fuzzy Math Essentials for Revit Family Builders
17
AB327-4 Fuzzy Math Essentials for Revit Family Builders
TRIA NG LE GEOMETRY
Triangle geometry is found in numerous families even when least expected. When creating a parametric and
complex component, one will usually come across an area where if triangle geometry is used, the component will
operate more reliably. Below are just a few examples:
Defining a triangle's 3 sides and 3 angles can provide flexibility within component creation. To define the parts of a
triangle, one will need to understand the various Laws of Triangles.
2 2 2
Pythagorean Theorem: a + b = c
18
AB327-4 Fuzzy Math Essentials for Revit Family Builders
19
AB327-4 Fuzzy Math Essentials for Revit Family Builders
In the recorded session this example will be explained and the component is in the uploaded dataset.
20
AB327-4 Fuzzy Math Essentials for Revit Family Builders
CIRCLES
From Wikipedia, the free encyclopedia
Circle illustration showing a radius, a diameter, the centre and the circumference, other parts…
FORMULAS
Length of circumference
Further information: Pi The ratio of a circle's circumference to its diameter is π (pi), a constant that takes the same
value (approximately 3.141592654) for all circles. Thus the length of the circumference (c) is related to the radius (r)
by or equivalently to the diameter (d) by
Area enclosed
Area of the circle = π × area of the shaded square. Equivalently, the area is π multiplied
by the radius squared:
Cartesian coordinates
Circle of radius r = 1, centre (a, b) = (1.2, -0.5)
In an x-y Cartesian coordinate system, the circle with centre (a, b) and radius r is
the set of all points (x, y) such that
If the circle is centered at the origin (0, 0), then the equation simplifies to
The equation can be written in parametric form using the trigonometric functions
sine and cosine as
Tangent lines
2
When the centre of the circle is at the origin then the equation of the tangent line becomes x1x + y1y = r ,
and its slope is.
21
AB327-4 Fuzzy Math Essentials for Revit Family Builders
Chords
Chords were used extensively in the early development of trigonometry. The first
known trigonometric table, compiled by Hipparchus, tabulated the value of the Chord
function for every 7.5 degrees.
The chord function is defined geometrically as in the picture to the left. The chord of
an angle is the length of the chord between two points on a unit circle separated by that
angle. By taking one of the points to be zero, it can easily be related to the modern
sine function:
Sagitta
The sagitta (also known as the versine) is a line segment drawn perpendicular to a chord, between the midpoint of
that chord and the arc of the circle.
Given the length y of a chord, and the length x of the sagitta, the Pythagorean theorem can be
used to calculate the radius of the unique circle which will fit around the two lines:
The example we’ll use is of the building footprint for a project recently completed. This shape was highly parametric
by necessity. The property lines were in flux, the building FAR requirements changed multiple times, and the client’s
desire to be as close to FAR as possible was a major driving factor. So, we built the building mass over several days
to allow the kind of flexibility needing throughout the whole project…
22
AB327-4 Fuzzy Math Essentials for Revit Family Builders
Lots of calculations, I know… We’ll focus on the overall stuff first to keep things simpler.
23
AB327-4 Fuzzy Math Essentials for Revit Family Builders
Since both the back corners of the building are filleted, the “Ellipse to ST/NT Core Edge” parameters refer to the
distance from the Center to the edge of the line BEFORE the fillet starts.
Ellipse to North/South Edge is the distance to the farthest point north or south, and is determined by taking the
Ellipse to Core Edge value and adding the N/S Core Fillet Radius values.
Ellipse to Back is the distance from the Center to the back edge.
Those parameters determine the placement of all these lines, but they aren’t enough on their own.
24
AB327-4 Fuzzy Math Essentials for Revit Family Builders
Why is it so complicated?
Well, since depending on the
location and radius of the
main arc, this fillet arc needs
to start and stop at different
points. We have to manually
calculate this because Revit
won’t actually keep a fillet arc
properly constrained to
another arc like it should! –
Factory, this needs some
work…
Instead, we need to
calculate the following
parameters ourselves
using a couple of tricks.
The first one is that the
center of a fillet arc of a
given radius is always at
the intersection of the
offset versions by the
same distance of the
objects to be filleted.
What does that mean?:
So, to simplify C=2*sin(A/2) Unfortunately, since this is a parametric form and both the length of the chord AND the
angle are “unknown”, we
need some more help.
Here we’ll turn to the
versine/sagitta definition
for this. A perpendicular
bisector is always the
radius of a circle. The
Sagitta is the part of the
perpendicular bisector
that is past the chord, and
the Apothem is the part
on the other side of the
chord. So, the Radius =
Apothem + Sagitta. Now,
we’ve got enough to use
basic trigonometry to
solve for the circular
angle!
25
AB327-4 Fuzzy Math Essentials for Revit Family Builders
SOH CAH TOA tells us that Cos(O)=A/H We need “O”. So, O = acos(A/H). For us, the Hypotenuse is the Radius,
and the Adjacent side is the Apothem. We can calculate the Apothem from the overall dimensions of the project! So
the parameters:
ST Distance to Chord
This is our Apothem. We can calculate it from the center of the
circle with addition and subtraction. Formula: Ellipse to ST
Core Edge + ST Core Side Fillet Radius
ST Front Side Fillet Radius – ST Main Arc Center from Ellipse
ST Intersect Radius
This is the radius. We can calculate it using the Main Arc
radius and the fillet arc radius. Formula: ST Main Arc Radius
ST Front Side Fillet Radius
ST Half Chord Angle
We don’t need the whole chord angle, just the half above the perpendicular bisector. Formula: acos(ST Distance to
Chord / ST Intersect Radius)
ST Front Side Fillet Angle
Equal to the Half Chord Angle.
ST Main Arc Angle to Center
This is the inverse of the Half Chord Angle. Formula: 90° - ST Half Chord Angle
ST Fillet Arc end from Face
The last thing we need is to locate the center of the fillet radius along the Y axis, as this sets the end of the straight
section of façade on the right (South) side. This can also be obtained with trig. Formula: ST Main Arc Radius
(ST Intersect Radius * sin(ST Half Chord Angle))
These are similar to the ST, but there are a few more. There is
the NT Side Angle which defines the plan angle of the side of
the tower. Also unlike the ST, the Front Side and Core Side
Fillet radii are set to be equal. This is needed to keep the math
simple. You could solve this with these being different, but I’m
not that much of a geek. To make this work we’re going to use
a polar origin concept – in other words, the same rules that
applied on the ST will be applied to the NT, but based off the
rotation point of the NT side so that everything plays nice…
NT Distance to Chord
This is different due to the changing angle of the chord dividing
the circle. We need to define this using CAH solving for the
adjacent side. This introduces two new parameters for the
angle and the hypotenuse of a theoretical triangle per the
image.
26
AB327-4 Fuzzy Math Essentials for Revit Family Builders
Formula: (NT Arc Center to Core Fillet Center * cos(NT Chord Distance Angle))
NT Intersect Radius
Formula: NT Main Arc Radius - NT Front Side Fillet Radius
NT Side Length
To get the actual side length, we use CAH again. Formula: NT Side Vertical Length / cos(90° - NT Side Angle)
isosceles
27
AB327-4 Fuzzy Math Essentials for Revit Family Builders
• Flex it.
Once you’ve got this drawn, you can create form from it and flex it until your head or the family explodes!
Combine this with a bunch of other line based nested families and you can get this monster mass… see the
footprint is the same?
28
AB327-4 Fuzzy Math Essentials for Revit Family Builders
ELLIPSES
From Wikipedia, the free encyclopedia
FORMULAS
Eccentricity
The eccentricity of the ellipse is
Directrix
Area
The area enclosed by an ellipse is πab, where (as before) a and b are one-half of the ellipse's major and minor axes
respectively.
2 2
If the ellipse is given by the implicit equation Ax + Bxy + Cy = 1, then the area is
Circumference
The circumference C of an ellipse is: where the function E is the complete elliptic integral of the
second kind.
General ellipse
In analytic geometry, the ellipse is defined as the set of points (X,Y) of the Cartesian plane that, in non-degenerate
[13][14]
cases, satisfy the implicit equation
2
provided B − 4AC < 0.
29
AB327-4 Fuzzy Math Essentials for Revit Family Builders
Canonical form
By a proper choice of coordinate system, the ellipse can be described by the canonical implicit equation
Any ellipse can be obtained by rotation and translation of a canonical ellipse with the proper semi-
diameters. Translation of an ellipse centered at (Xc,Yc) is expressed as
In trigonometry
An ellipse in general position can be expressed parametrically as the path of a point (X(t),Y(t)), where
as the parameter t varies from 0 to 2π. Here (Xc,Yc) is the center of the ellipse, and φ is the angle between the X-
axis and the major axis of the ellipse.
Parametric equation for the ellipse (red) in canonical position. The eccentric
anomaly t is the angle of the blue line with the X-axis.
For an ellipse in canonical position (center at origin, major axis along the X-
axis), the equation simplifies to
Create model lines, keep them visible, and constrain and flex them to your heart’s content.
This completed example is of two ellipses, which have identical major axes but different minor axes. This is called a
distended ellipse. Once these constraints are defined, you can flex to any size and not have to worry about
interactions between the 3D geometry and the 2D lines causing a break in the family.
30
AB327-4 Fuzzy Math Essentials for Revit Family Builders
31
AB327-4 Fuzzy Math Essentials for Revit Family Builders
st
1 Ellipse Y Offset from Center – Determines the distance to the first fourth. Formula: (Surfboard Depth / 4) * 1
st
1 Ellipse Major Axis – This is attempting to calculate the X direction displacement along the ellipse profile based
on the Y direction displacement. There is a formula for that (and an app). Per our ellipse formulas, the equation to
the right defines the relationship of points along an ellipse to the major and minor axes, both of which we have
defined! But I am terrible at solving formulas and I need this solved for X.
32
AB327-4 Fuzzy Math Essentials for Revit Family Builders
Once these are set up, we need to create reference planes and dimensional constraints to use these…
On these reference planes we can place the components defined earlier and then link them to the appropriate
parameters. Set your workplane for one of the reference planes first. Then, click the component button and select
the generic model line family you loaded in.
rd
Placed on the lower 3
fourth reference plane.
Now you need to constrain
it to the origin using the
existing reference planes
in the template.
Aligned one way, don’t forget to lock it. And the other (lock it).
33
AB327-4 Fuzzy Math Essentials for Revit Family Builders
Select the generic model family and in the properties palette you should see the parameters from the family. Click
the little button on the right to link to a parameter in the massing family.
rd
Repeat for the Minor Axis and Add Axis – both of these will be linked to the 3 Ellipse Minor Axis in my case.
The end result should be your ellipse on one plane. Now, make a bunch more on the others.
This image shows the series of elliptical model lines placed on reference planes and constrained. This is the
surfboard. Changing the height parameter in the host causes these to move…
34
AB327-4 Fuzzy Math Essentials for Revit Family Builders
Form completed.
35
AB327-4 Fuzzy Math Essentials for Revit Family Builders
36
AB327-4 Fuzzy Math Essentials for Revit Family Builders
Here we have 18 different variations using the same mass, with slightly different parameter values. Many of these
versions meet the FAR requirement, so we were simultaneously judging both the building area requirements AND
aesthetics of the massing. The schedules show the area sums and area by level for each version of the mass. We
did over 200 versions in three days of charrette time before selecting a final scheme.
37
AB327-4 Fuzzy Math Essentials for Revit Family Builders
OCCUPANCY SCHEDULES
IBC 2006 has some intense occupancy requirements based on the type. Using conditional statements you
can create a series of occupancy schedules based on any code requirements and driven by room or area
schedules.
Key Schedules are needed to fill out a bunch of values consistently and accurately without a lot of error
prone user input.
Occupancy Key
Exiting Requirements
38
AB327-4 Fuzzy Math Essentials for Revit Family Builders
Plumbing Requirements
These are in the example files, so don’t worry about reading them…
Room Schedules are what we’re using, even though technically many of these requirements are based off the entire
floor area or even building use as a whole. We’ve found that using a room by room requirement usually increases
(inflates) the numbers above the level or building requirements, and we can always back-check with the total area
information in these schedules. We typically provide exiting and plumbing at better than code requirement levels so
this isn’t a problem for us.
Exiting Widths
Based on the key values and whether the room is sprinklered or not, we can use a calculated value to define the
stair and horizontal exiting requirements very easily!
Calculated Occupancy - if(Area Per Occupant = 0 SF, Seating Occupancy, ((Area / Area Per Occupant) + 0.49))
Stair - if(Sprinklered, Calculated Occupancy * Stair Exit Width Per Occupant Sprinklered, Calculated Occupancy *
Stair Exit Width Per Occupant Unsprinklered)
Horizontal - if(Sprinklered, Calculated Occupancy * Horizontal Exit Width Per Occupant Sprinklered, Calculated
Occupancy * Horizontal Exit Width Per Occupant Unsprinklered)
39
AB327-4 Fuzzy Math Essentials for Revit Family Builders
Plumbing Fixtures
This one is a little more complicated, with some nested conditional statements and some hard coded values.
Calculated Occupancy
if(Area Per Occupant = 0 SF, Seating Occupancy, ((Area / Area Per Occupant) + 0.49))
Male Water Closets
if(Male Water Closet Requirement 1 > 0, (if(Water Closet 1st Requirement Limit > 0, (if((Calculated Occupancy * 0.5)
> Water Closet 1st Requirement Limit, (((Calculated Occupancy * 0.5 - Water Closet 1st Requirement Limit) / Male
Water Closet Requirement 2) + (Water Closet 1st Requirement Limit / Male Water Closet Requirement 1)),
(Calculated Occupancy * 0.5) / Male Water Closet Requirement 1)), (Calculated Occupancy * 0.5) / Male Water
Closet Requirement 1)), Calculated Occupancy * 1)
Female Water Closets
if(Female Water Closet Requirement 1 > 0, (if(Water Closet 1st Requirement Limit > 0, (if((Calculated Occupancy *
0.5) > Water Closet 1st Requirement Limit, (((Calculated Occupancy * 0.5 - Water Closet 1st Requirement Limit) /
Female Water Closet Requirement 2) + (Water Closet 1st Requirement Limit / Female Water Closet Requirement
1)), (Calculated Occupancy * 0.5) / Female Water Closet Requirement 1)), (Calculated Occupancy * 0.5) / Female
Water Closet Requirement 1)), Calculated Occupancy * 1)
Male Lavatories
if(Male Lavatory Requirement > 0, (Calculated Occupancy * 0.5) / Male Lavatory Requirement, Calculated
Occupancy * 1)
Female Lavatories
if(Female Lavatory Requirement > 0, (Calculated Occupancy * 0.5) / Female Lavatory Requirement, Calculated
Occupancy * 1)
Drinking Fountains
if(Drinking Fountain Requirement > 0, Calculated Occupancy / Drinking Fountain Requirement, 0)
40
AB327-4 Fuzzy Math Essentials for Revit Family Builders
RESOURCES
BLOGS
USER GROUPS
REVIT HELP
41
AB327-4 Fuzzy Math Essentials for Revit Family Builders
WEBSITES
Wikipedia – www.wikipedia.com
Mathworld - mathworld.wolfram.com/
42