This action might not be possible to undo. Are you sure you want to continue?
Jason Grant – Payette Kelly Cone – Beck Phil Lazarus – Arup David Baldacchino – Philo Wilke Partnership (Virtual Presentation)
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.
ABOUT THE SPEAKERS:
Jason Grant - ContactJasonGrant@Gmail.com - http://jasongrant.squarespace.com
Jason is the BIM Specialist at Payette in Boston, MA. His experience includes over 14 years in the architecture field, and he has utilized Revit® for the past six years. He completed 62 projects in Revit while at Colin Smith AutoCAD® Architecture; and has been managing Revit implementation, training, standards, API, and content development at Payette for the past two years. With his Revit experience (including health care, labs, commercial, mixed-use and residential), he understands the challenges that both small and large projects, and firms, face while utilizing and implementing Revit. Jason is also Co-Founder and Advisor to the Boston Revit Users Group with 380+ members, Co-Founder and Co-Leader of the BLUR Group (BIM Leaders Utilizing Revit), author for AUGI® AEC EDGE and an avid blogger on BIM and AutoCAD Architecture at http://jasongrant.squarespace.com.
Kelly Cone - KellyCone@BeckGroup.com - http://revitfutures.blogspot.com
Kelly Cone is the Innovations Director at the Beck Group, an integrated Development, Architecture, Construction, and Technology company headquartered in Dallas, TX. Since receiving his master's degree in Architecture from the University of Texas, Kelly has been focusing on the implementation of BIM across integrated disciplines. This covers a wide range of software including Autodesk® Revit®, Navisworks®; Innovaya, Synchro Professional, and DProfiler™, our own in-house macroBIM application. The implementation process includes the creation of customized design-build-oriented content and the alignment of costing and scheduling assemblies to that content. Kelly plays an integral role in representing Beck's BIM capabilities, attending and speaking at numerous conferences and teaching classes about BIM. He is also heavily involved in the BIM community at large participating in the AUGI® Revit forums and through the Web site, www.bimexpert.com which he co-founded.
Phil Lazarus - BIMTroubleMaker@Gmail.com - http://bimtroublemaker.blogspot.com
Phil Lazarus is a licensed architect who has been using 3D in the design of large projects for the duration of his career. Involved primarily with stadia and convention facilities, he has never worked on a building less than 1 million square feet and has used BIM to address the needs of architects, engineers and builders through all phases of design and construction. In every organization he has joined, Phil has become responsible for training staff members in advanced CAD, 3D modeling and BIM techniques. Holding a Masters of Business Administration, Phil is particularly interested in how technology can be used to increase cost efficiency both in design practice and on the job site. Currently based in Singapore, he is the author of the blog BIM TROUBLEMAKER which focuses on advanced family making and form finding techniques in Revit®.
AB327-4 Fuzzy Math Essentials for Revit Family Builders
A special thanks to the following:
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. David Baldacchino - email@example.com - http://do-u-revit.blogspot.com/
David has over 10 years of architectural experience working mostly on Educational Facility projects, and was the team leader on the Revit pilot projects in the Houston office of his former employer. He holds a Masters of Architecture degree from Texas A&M University and has been using Autodesk software professionally ever since. He recently joined PhiloWilke Partnership, a Texas mid-sized firm specializing in Research Facility and Healthcare projects, and is currently leading the effort to build an internal knowledge management system and improve the content and detail library in addition to project work. David enjoys mentoring his peers and helping project teams to succeed in the use of Revit. In his free time he can be found posting articles on his blog and contributing to AUGI as Tips & Tricks forum manager and Revit Community Chair.
Steven Campbell - firstname.lastname@example.org
Steven originally joined Revit® Technology Corporation in early 2001 as a content developer. In 2002, Autodesk bought Revit and integrated it into their product line. After Autodesk acquired Revit, Steven split his role between content creation and QA, during which he was responsible for product testing in relation to content and content development. In 2007, he was promoted to Project Manager for all of Revit Content. He is also the technical lead to all content-related work. Additionally, he taught at AU in 2005 and 2007, ADN in 2007 and 2008, and other Autodesk internal events. Steven graduated with a Bachelor of Architecture from Roger Williams University in Bristol, Rhode Island in 1989. He has worked for a variety of architectural firms in New England on small to mid-size commercial projects and high-end residential homes.
AB327-4 Fuzzy Math Essentials for Revit Family Builders
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. Mathematical Function Addition Subtraction Multiplication Division Exponentiation Logarithm Square Root Sine Cosine Tangent Arcsine Arccosine Arctangent e raised to an x power Absolute Value Pi - 3.1415926535..... Supported Conditional Operators Equal To Less Than Greater Than AND OR NOT <= or >= If Statements if statements (simple) if statements (multiple) If statement (with Boolean) Expression + * / x^y, x raised to the power of y Log sqrt(Value) Sin Cos Tan Asin Acos Atan Exp Abs pi Expression Description Add lengths, numbers or parameters Subtract lengths, numbers or parameters Multiply lengths, numbers or parameters Divide lengths, numbers or parameters
Used within triangle geometry calculations. Used within triangle geometry calculations. Used within triangle geometry calculations. Inverse triangle geometry calculations Inverse triangle geometry calculations Inverse triangle geometry calculations
Figure the circumference or area of a circle Description
= Parameter is equal to length, number or text < Parameter is less than length or number > Parameter is greater than length or number And Both statements are True Or One of the statements are True Not Statement is False Not supported in Revit Using this within a calculation will result in an error Formula if(<condition>, <result-if-True>, <result-if-False>) if(<condition>, <result-if-True>, if(<condition>, <result-if-True>, if(<condition>, <resultif-True>, <result-if-False>))) If(<and, or, not>(<condition>, <condition>), <result-if-True>, <result-if-False>)
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:
SIMPLE "IF" STATEMENTS
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. Simple "If" Statement with logical AND IF(AND(Parameter A, Parameter B), 1, 2) This number parameter looks at both of the yes/no parameters for (Parameter A) and (Parameter B). Therefore if both Parameter A and Parameter B are YES, then number 1 would be inserted but if either Parameter is NO then number 2 would be inserted. Simple "If" Statement with logical OR IF(OR(Parameter A, Parameter B), 1, 2) This number parameter looks at both of the yes/no parameters for (Parameter A) and (Parameter B). Therefore if Parameter A or Parameter B are YES or both are YES, then number 1 would be inserted but only if both Parameter A and Parameter B are NO then number 2 would be inserted. Simple "If" Statement with NOT IF(NOT(Parameter A), 1, 2) This number parameter looks at (Parameter A). Therefore if Parameter A is NOT YES, then number 1 would be inserted but if Parameter A is YES then number 2 would be inserted.
Visibility control of Solids based on other parameter values.UP and DOWN Boolean Operators .AND. Immeasurably valuable to assist in visibility controls. Multiple Dependencies If a parameter is dependent on multiple parameters. For example. Visibility control of Voids based on other parameter values. 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 Rounding Numbers . Converting Units Sometimes it is required to alter the units of a parameter in order to utilize it in specific formulas. Similar Triangles. Dependant Parameters If one parameter is dependant of another then one change to either one will adjust the other parameter. Arrays: Linear and Polar Triangle Geometry: Pythagorean Theorem. Evaluating the user's input before driving geometry dimensions.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. NOT. OR.UP and DOWN Rounding Dimensions . then the result is a grayed out result which can only be altered by adjusting one of the dependent parameters. Trigonometric Functions Circles Ellipses Massing Schedules 5 . Evaluating YES/NO parameters to drive other YES/NO parameters.
• Someone else may just name them without a identifier but place all calculation parameters in constraints. This example shows the planning of a "super" casework family. be able to better organize the parameters within the component and that one can share how the component will work with users before a single piece is built. For example: • One may create all calculation parameters with CALC at the end of the parameter and place all calculation parameters in construction. There is no right way to name or organize the parameters but the key is staying consistent.AB327-4 Fuzzy Math Essentials for Revit Family Builders PLANN ING AND DOCUMEN TIN G PLANNING Pre-planning a family component can be useful for not only the one creating the component but for those who will use the component. Some of the benefits to planning a complex component is that one can fully see and think through all of the required parameters. User feedback can help the builder with feedback and suggestions before one has invested a great deal of time. P ARA METER NA MING AN D ORGA N IZ IN G It is important to stay consistent with the naming and organizing of Parameters. This was shared with the power users of the firm to get feedback on the options available in the "User Parameters". DOCUMENTING By creating a plan. This can be used for future understanding of the component when changes or additions are required. then not only could a user be confused in how to control a component but the creator could also easily get confused. The user parameters are those which are shown in the properties. 6 . A PDF version of this image is included in the dataset. one has also accomplished documenting the work needed to create the component. The "Hidden Parameters" are those nested within the component and thus does not "muddy" up or confuse the user with unnecessary parameters. • Either way is fine as long as one is consistent and users can understand what they need to change. If each family that one creates is different.
0. For example: Input Number = 6.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. added to the rounding value which is converted to a number.49. Since the Num of Rounding Value is an integer. There are a few ways that I have seen some doing this. but I find this process to be very efficient. Main Dim = (Dimension that one desires to be rounded) Rounding Value = (Rounding Value: Positive Number for Up and Negative for Down) Num of Rounding Value = (Integer Parameter with Formula) Dim Rounded = (Final Rounded value of the Main Dim) To determine the Number of Rounding Value one must utilize the formula shown above. The main dimension is converted to a number. One would have their main input number parameter.0.49 to round the number down. straight dimensions (length parameters) will create an error. 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.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.AB327-4 Fuzzy Math Essentials for Revit Family Builders ROUN DIN G NUMBERS Rounding Numbers is actually quite easy. 7 . -0.49 (This must be an integer parameter to work correctly) To round the number down Rounded Number = Input Number . 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. To conclude the rounding.77 (Either as a result from another formula or user entered value) To round the number up Rounded Number = Input Number + 0. then have another parameter that references the input number and either adds 0.49 to round the number up or subtract 0. divided by two and then the value is divided by the rounding value. which once again is converted to a number. one must then take the Num of Rounding Value and multiply the Rounding Value.
Yes/No Checkbox 8 . different parts of the object display. Or Boolean Operators and if Or Boolean Operators is not checked then AND Boolean Operators is "by default" checked.AB327-4 Fuzzy Math Essentials for Revit Family Builders B OOLEA NS AND.Yes/No Checkbox And Boolean Operators . Object B. not Boolean logic operators. or.Yes/No Checkbox Object B .Yes/No Checkbox Or Boolean Operators . Yes/No controls and formulas. Parameters.Yes/No Checkbox Object C . User Controls Object A . Object C. Depending on the options a user selects. NOT Revit object that is altered by and. In this example there are checkbox (user) controls for Object A. OR.
Objects A+B Selected OR . not(Object C). CALC VIS Object AB. Object C) and(and(Object A. Object A) and(not(Object A).Objects A. Object C). VIS Result ABC). Object C). Object B).Object A Selected OR . Object C) AND Operators OR . CALC VIS Object AB) VIS Result AC if(OR Boolean Operators.AB327-4 Fuzzy Math Essentials for Revit Family Builders AND . CALC VIS Object AB. or(CALC VIS Object B. B + C Selected VIS Result A if(OR Boolean Operators. or(CALC VIS Object C. VIS Result ABC). CALC VIS Object AC. or(CALC VIS Object AC. or(CALC VIS Object BC. not(Object C)) and(and(Object B. CALC VIS Object B) VIS Result C if(OR Boolean Operators. or(CALC VIS Object AB. not(Object C). not(Object B). CALC VIS Object BC. Object B. Object B) and(not(Object A). VIS Result ABC). CALC VIS Object AC. VIS Result ABC).Objects A. CALC VIS Object C) VIS Result AB if(OR Boolean Operators. VIS Result ABC). VIS Result ABC). CALC VIS Object A) VIS Result B if(OR Boolean Operators.Object A Selected AND . CALC VIS Object BC) OR Operators 9 . CALC VIS Object AC) VIS Result BC if(OR Boolean Operators. not(Object B)) and(Object A. or(CALC VIS Object A. not(Object A)) and(and(Object A. B + C Selected CALC VIS Object A CALC VIS Object B CALC VIS Object C CALC VIS Object AB CALC VIS Object BC CALC VIS Object AC VIS Result ABC and(not(Object B). CALC VIS Object BC.Objects A+B Selected AND .
Number of Shelves (Integer). then the control will keep 2 feet and if it is more than 2 feet then it will use the inputted user entered length. then the control will keep 10 feet and if it is less than 10 feet then it will use the inputted user entered length. Shelf 2 Plus (Yes/No) The formulas are: Number of Shelves = "Whatever the user needs and enters" Array Control = if(Number of Shelves < 2. 10'. Therefore. Arrays are a prime example where one may want a result of 0 or 1 but as one would discover. there may be zero shelves and there may be 3. there needs to be one parameter for user input and another parameter that drives the geometry which utilizes and evaluates the user's input. just keep in mind that these uses of a reporting parameter cannot be used within a formula. You can find more info posted here on reporting parameters: Link 10 . Length) If the user inputted length is less than 2 feet.AB327-4 Fuzzy Math Essentials for Revit Family Builders EVA LUATING IN PUT For one to be able to have flexible input for users. In many cases. the width of a wall to drive other geometry. if(Length > 10'. There are cases where the dimension needs to be controlled for either a minimum value or a maximum value or both a minimum and maximum. 2'. Shelf 1 will turn on the visibility of a single shelf if the Number of Shelves equals 1. To control a maximum dimension one would use: Length Control = if(Length > 10'. To control a minimum dimension one would use: Length Control = if(Length < 2'. 10'. for example. Number of Shelves) Shelf 1 = Number of Shelves = 1 Shelf 2 Plus = Number of Shelves > 1 The user enters the Number of Shelves and the Array Control parameter evaluates it the Number of Shelves is less than 2. Shelf 2 Plus turns on the visibility of the array if the Number of Shelves is 2 or more. Length) If the user inputted length is less than 2 feet. This can be used instead of creating a calculation parameter that adds each dimension string to get the combined length. To control a minimum and maximum dimension one would use: Length Control = if(Length < 2'. then the control will keep 2 feet and if it is more than 10 feet then it will keep 10 feet as the maximum and if it is between 2 and 10 feet then dimension will use the inputted user entered length. 2'. NOTE: Reporting Parameters can only be used within a formula if it dimensions a host object. Length) If the user inputted length is more than 10 feet. one will want the user to be able to enter a result of zero for a number or integer parameter either for scheduling purposes or for a user to better understand the family without the need for instructions or explanation. It can also be a way of having one less formula within a family if it dimensions reference planes or other geometry. USER NUMBER CONTROL USER DIMENSION CONTROL SYSTEM REPORTING PARAMETERS Reporting Parameters can now be used to essentially "report" on a dimension and not receive an "over constrained" error. on a door one would have door height and frame head height. For instance. one can utilize. If one has a cabinet that has an option for shelves within it. To report on the floor to top of frame dimension one could utilize a reporting parameter which would return the height. If it is 2 or more then it uses the user entered Number of Shelves. If it is less than 2 then it will keep the array at 2. this creates an error in the family. A very similar process can be used to control the max value of a user entered value. To work around this one would need to use a few formulas: The parameters are: Array Control (Integer). 2. Shelf 1 (Yes/No).
It’s a YES/NO or TRUE/FALSE question. Gary is Tallest Gary is NOT Tallest 11 . Thus. to control this switch. As such. We are only allowed to link to “YES/NO” parameters. the object’s display will change and the form will not show when the family is hosted. visibility is a binary function to be controlled. Next to the VISIBILITY parameter on the properties panel is a little grey box which allows us to link this parameter to other functions in our family. This parameter controls whether the object is VISIBLE (On) or INVISIBLE (Off). If you select any object in the family editing environment. If turned off. based upon the status of other YES/NO parameters in our family. we can program our family a GREATER THAN/LESS THAN EQUATION. We can also use Boolean Operations. based upon other parameters.AB327-4 Fuzzy Math Essentials for Revit Family Builders V ISIB ILITY CONTROL CONDITIONAL VISIBILITY BASICS Before we look at Conditional Visibility. on the properties panel you will see a parameter called VISIBILITY with a check box next to it. let’s confirm we have a grasp on the basic concept of visibility in family building.
AB327-4 Fuzzy Math Essentials for Revit Family Builders SIMPLE CONDITIONAL VISIBILITY Here is an example of these concepts in action. Once nested in a host family. Visibility of the extruded form is controlled by a formula comparing these two parameters. the necessary parameters are linked. First I made a family to represent each individual seating tread. Within this family are instance-based INTEGER Parameters for row ID number. 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 . The first example examines controlling the number of rows in a tiered seating family. as well as the desired number of rows in the entire assembly.
125m 13 . The overall visibility is controlled by looking at the height difference between rows. I have now nested 2 families into my basic extrusion and linked their visibility to parameters called “Step Single” & “Step Double”.25m Riser Height = 0. Programming the step height to change is a straight-forward affair. The height of the step would vary. along with the vertical distance between rows. the next level of detail involved with developing a seating section could include inserting a step.AB327-4 Fuzzy Math Essentials for Revit Family Builders BOOLEAN EQUATIONS AND CONDITIONAL VISIBILITY Looking again at the prior example. but what about when we need to choose between one step. and whether or not an aisle is desired in this section. we can see the step configuration change: Riser Height = 0. two steps and no steps? That’s where Boolean operations become useful. And now cycling through various steepness settings for the assembly.5m Riser Height = 0. whether the row exists.
By way of example. let’s look at a potential door family and we want the option to cut a vision hole. 14 . Void forms do not have an inherent VISIBILTY parameter. VISIBILITY OF VOIDS Controlling the visibility of voids presents a different challenge.AB327-4 Fuzzy Math Essentials for Revit Family Builders This is a list of all possible combinations of Boolean operations using 3 parameters. 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.
if a riser height equals zero or less. Once a cutting relationship is established. The operating equation in this exercise is the IF/THEN Statement where: VALUE = IF(FORMULA.AB327-4 Fuzzy Math Essentials for Revit Family Builders The “Door” form is hosted on the primary vertical reference plane. LIMITERS AND ERROR AVOIDANCE The earlier covered logic related to rounding numbers can be helpful in setting up limiters to avoid the “Line is Too Short” error message. this error can be avoided as shown. the void can move into or away from the mass as specified. RESULT IF YES. This 1mm surface is imperceptible and good enough to maintain the integrity of the family 15 . RESULT IF NO) And the ‘Formula’ refers to the YES/NO parameter called ‘Vision’. An additional reference plane has been drawn and its position relative to the “Door” is controlled by the parameter ‘Void_Offset”. Revit throws up the error. In the case of the tiered seating exercise. By using an IF/THEN statement to control the Riser Height indirectly.
Write the array formula to force the calculated value to 2 or greater by using an “If” statement. Revit creates grouped instances of the arrayed elements. The reason for using 6” as the threshold is due to Array evaluating to 1 when Length is 5”. THE CHRONIC PROBLEM Above you can see that the Array integer is forced to a value of 2 if Length is less than or equal to 6”. 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. 16 . Add a singular element in your family. Revit wants to have at least 2 elements in an array. Note that to express this in Revit. such as detail lines for example. NESTING When creating a parametric array. However that usually is not how things work in real life and we might need just one element.5 x the required spacing. To solve this issue. 3. 2. you have to use the expression not(Length > 0’ 6”). We can control the number of arrayed elements and their visibility through logical formulas.AB327-4 Fuzzy Math Essentials for Revit Family Builders A RRA YS INTRODUCTION TO LINEAR ARRAYS The array tool is quite powerful. We can get around this problem as follows: 1. 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. which causes the family to fail. This meant that the arrayed elements needed to resize accordingly. 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. resulting in very useful dynamic families. so we needed to take care of a chronic array problem when the calculated number of arrayed elements was less than 2. This causes a problem when trying to resize elements within those groups. constrain it as desired (usually with EQ constraints) and add a calculated visibility parameter that turns on this element only when needed. Add a calculated visibility parameter that turns off the arrayed elements when you want less than 2 elements. causing the family to break. The family was expected to work at any length. especially when used in the Family Editor. which achieves the same result. A good rule of thumb is to set your threshold to 1. where you’ll apply the relevant constraints and array it as required.
The highlighted middle element will only be visible for short family instances. Pick the applicable label or create a new parameter. 3. 17 . Hover above any of the arrayed elements until the array “skeleton” is displayed. Most users get stuck once they create the array and don’t know how to proceed in adding the necessary parameters. Select one of the arrayed elements. Click on it. 2. is to include some type of identifier using invisible lines. at which point the array is forced to 2 elements and element visibility is turned off. A neat little trick to help your users identify which parameter to uncheck when needing to control visibility on either side of a family.AB327-4 Fuzzy Math Essentials for Revit Family Builders PUTTING IT ALL TOGETHER Here you can see how the first and last members of the array have been constrained to a fixed distance of 1 ½”. But it’s a simple task once you get the click sequence down! 1.
2bc cosA or b = a + c .AB327-4 Fuzzy Math Essentials for Revit Family Builders TRIA NG LE GEOMETRY Triangle geometry is found in numerous families even when least expected. the component will operate more reliably. Cosine and Tangent are the typical trigonometric functions and ArcSine. ArcCosine and ArcTangent are the inverse of these typical trigonometric functions. x = cos y or y = arccos x. To define the parts of a triangle. Examples are: x = sin y or y = arcsin x. When creating a parametric and complex component.Tangent or ArcTangent Sine. one will usually come across an area where if triangle geometry is used. x = tan y or y = arctan x 2 2 2 2 2 2 18 . Pythagorean Theorem: a + b = c 2 2 2 Law of Sines: a/sinA = b/sinB = c/sinC or =sinA/a = sinB/b = sinC/c Law of Cosines: a = b + c .Cosine or ArcCosine . one will need to understand the various Laws of Triangles.SOLVING TRIANGLES Defining a triangle's 3 sides and 3 angles can provide flexibility within component creation.2ab cosC Law of Tangents: (a-b) / (a+b) = (tan(1/2(A-B))) / (tan(1/2(A+B))) Law of 180 Degrees: A + B + C = 180 Degrees Sine or ArcSine . Below are just a few examples: TRIGONOMETRY .2ac cosB 2 2 2 or c = a + b .
AB327-4 Fuzzy Math Essentials for Revit Family Builders 19 .
AB327-4 Fuzzy Math Essentials for Revit Family Builders PRESENTATION EXAMPLE OF TRIANGLES In the recorded session this example will be explained and the component is in the uploaded dataset. 20 .
the free encyclopedia Circle illustration showing a radius. the area is π multiplied by the radius squared: FORMULAS Cartesian coordinates Circle of radius r = 1. b) = (1. a diameter. the centre and the circumference. y) such that If the circle is centered at the origin (0. Equivalently. b) and radius r is the set of all points (x. 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 . the circle with centre (a.5) In an x-y Cartesian coordinate system. and its slope is. other parts… Length of circumference Further information: Pi The ratio of a circle's circumference to its diameter is π (pi).2. -0. 0). 21 . a constant that takes the same value (approximately 3.AB327-4 Fuzzy Math Essentials for Revit Family Builders CIRCLES From Wikipedia. centre (a.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.
This shape was highly parametric by necessity. The chord function is defined geometrically as in the picture to the left. nesting can greatly reduce the complexity of the constraints in the Massing family. Typically use face based for ease of placement in the massing editor. The example we’ll use is of the building footprint for a project recently completed. So. You might ask. and constrain and flex them to your heart’s content. So. Complex masses may require hundreds of constraints. and the client’s desire to be as close to FAR as possible was a major driving factor. between the midpoint of that chord and the arc of the circle. The chord of an angle is the length of the chord between two points on a unit circle separated by that angle.5 degrees. By taking one of the points to be zero. Given the length y of a chord. tabulated the value of the Chord function for every 7. ST is for South Tower which is taller and plan right. below is an image of the curtain systems applied to the faces of the mass we end up with… If we had to re-draw the shape we would have to re-make the faces which means all the custom curtain panels and mullions would be lost every time we had a façade change. so as with any family. compiled by Hipparchus. we built the building mass over several days to allow the kind of flexibility needing throughout the whole project… This is the “footprint” we wanted. 22 . The first known trigonometric table. keep them visible. the building FAR requirements changed multiple times. with this as the goal… Some terminology… The parameters starting with NT are for the “North Tower” which is the shorter tower that is plan left. We had over 100 façade shape changes on this project – you do the math.AB327-4 Fuzzy Math Essentials for Revit Family Builders Chords Chords were used extensively in the early development of trigonometry. although there is tons of flexibility in the shape. why not re-draw it every time? Well. Create model lines. 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: EXAMPLE: PLAN FOOTPRINT MODEL LINES • • • Generic Model Families can be imported into Masses and used to create geometry. The property lines were in flux. 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.
it is this intersection: That’s the Center… 23 . You don’t see an ellipse in the mode lines. which also happens to be the origin or 0. For now. “Ellipse” really means “Center of the Ellipse” in this case. I know… We’ll focus on the overall stuff first to keep things simpler.AB327-4 Fuzzy Math Essentials for Revit Family Builders Here are the constraints in this family… Lots of calculations. but it will get cut out later. So.0 for the family.
This now flexes like a champ. 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. Done. A simple Fillet Arc on two 90 degree lines… You just use the ST Core Site Fillet Radius parameter and apply it to all three dimension strings. turn on the Center Mark Visible toggle to make them much easier to constrain! The Front or East side of the tower is much more complicated since we’re trying to create a fillet arc between a line and a parametric arc. but they aren’t enough on their own. 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. The South West corner is cake though. HINT: With circles. Now let’s look at the ST stuff… Here’s what these reference in the plan: Those parameters determine the placement of all these lines.AB327-4 Fuzzy Math Essentials for Revit Family Builders Since both the back corners of the building are filleted. Yuck! 24 .
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. the Radius = Apothem + Sagitta. A perpendicular bisector is always the radius of a circle. So. What does that mean?: So. we’ll use these dimensions to figure a lot of this out. Second. we’ve got enough to use basic trigonometry to solve for the circular angle! 25 . we’re going to exploit the definition of a chord as defined in the Circle stuff above: So.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 needs some work… Instead. since this is a parametric form and both the length of the chord AND the angle are “unknown”. this fillet arc needs to start and stop at different points. and the Apothem is the part on the other side of the chord. The Sagitta is the part of the perpendicular bisector that is past the chord. Now. we need some more help. Here we’ll turn to the versine/sagitta definition for this. we need to calculate the following parameters ourselves using a couple of tricks. We have to manually calculate this because Revit won’t actually keep a fillet arc properly constrained to another arc like it should! – Factory. to simplify C=2*sin(A/2) Unfortunately.
just the half above the perpendicular bisector. So. ST Main Arc Angle to Center This is the inverse of the Half Chord Angle. To make this work we’re going to use a polar origin concept – in other words.AB327-4 Fuzzy Math Essentials for Revit Family Builders SOH CAH TOA tells us that Cos(O)=A/H We need “O”. This is needed to keep the math simple. This can also be obtained with trig. the Front Side and Core Side Fillet radii are set to be equal. 26 . We can calculate it from the center of the circle with addition and subtraction. We need to define this using CAH solving for the adjacent side.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. O = acos(A/H). the same rules that applied on the ST will be applied to the NT. so does the fillet arcs extents. and the Adjacent side is the Apothem. but there are a few more. We can calculate it using the Main Arc radius and the fillet arc radius. You could solve this with these being different. Formula: 180° . Also unlike the ST. but I’m not that much of a geek.Zero Degrees NT Distance to Chord This is different due to the changing angle of the chord dividing the circle. 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. Parameters: These are similar to the ST. Formula: ST Main Arc Radius (ST Intersect Radius * sin(ST Half Chord Angle)) NORTH SIDE SAYS WAZZUP… The north side makes the south look easy because instead of having a consistent variable (the 90 degree side) we have the side of the shape as a variable angle as well. the Hypotenuse is the Radius. but based off the rotation point of the NT side so that everything plays nice… NT Core Side Fillet Angle Since the side changes angle. This introduces two new parameters for the angle and the hypotenuse of a theoretical triangle per the image. For us.NT Side Angle . We can calculate the Apothem from the overall dimensions of the project! So the parameters: ST Distance to Chord This is our Apothem. Formula: 90° . Formula: acos(ST Distance to Chord / ST Intersect Radius) ST Front Side Fillet Angle Equal to the Half Chord Angle. Formula: ST Main Arc Radius ST Front Side Fillet Radius ST Half Chord Angle We don’t need the whole chord angle. There is the NT Side Angle which defines the plan angle of the side of the tower. as this sets the end of the straight section of façade on the right (South) side.
Formula: NT Side Angle .(NT Core Side Fillet Radius) NT Side Length To get the actual side length.NT Side Angle) isosceles 27 . we need to add the inverse angle of the side angle to the NT Half Chord angle before subtracting it from 90 degrees.Ellipse to Back + NT Core Side Fillet Radius) ^ 2) NT Chord Distance Angle Solved by using Triangle Angle Theory. Formula: acos(NT Distance to Chord / NT Intersect Radius) NT Front Side Fillet Angle Equal to NT Half Chord Angle NT Main Arc Angle to Center Here we have to normalize to the angle again.NT Main Arc Face past Ellipse .NT Main Arc Center from Ellipse) / (NT Main Arc Radius . Formula: NT Side Vertical Length / cos(90° .Ellipse to Back) . The vertical length is the length of the adjacent side of the triangle made between the north edge of the building and the angled side. Formula: atan((Ellipse to NT Core Edge . Formula: (NT Intersect Radius * cos(NT Main Arc Angle to Center)) . we can now use the same formula as the ST.NT Main Arc Face past Ellipse . Formula: sqrt((Ellipse to NT Core Edge NT Main Arc Center from Ellipse) ^ 2 + (NT Main Arc Radius .(NT Main Arc Radius . Formula: 90° . So.(90° .NT Angle Arc Center to Core Side Fillet Center NT Angle Arc Center to Core Side Fillet Center Solved by using the tangent relationship and overall dimensions. we use CAH again.NT Side Angle + NT Half Chord Angle) NT Side Vertical Length We still need to tell the side where to stop.AB327-4 Fuzzy Math Essentials for Revit Family Builders Formula: (NT Arc Center to Core Fillet Center * cos(NT Chord Distance Angle)) NT Arc Center to Core Fillet Center Solved by using Pythagorean Theorem and overall dimensions.Ellipse to Back + NT Core Side Fillet Radius)) NT Intersect Radius Formula: NT Main Arc Radius . and since it is angled we’ll do that with two parameters.NT Front Side Fillet Radius NT Half Chord Angle Since we have normalized for the Chord Angle. To get it we can take the vertical component of the triangle with a hypotenuse between the main arc center and the front fillet arc center and then subtracting the vertical distance from the Core side center to the main arc center.NT Main Arc Face past Ellipse .
so we can use SOH solving for H to get the radius required to have the lines close. This keeps you from having to calculate the start and end point of every line.5 * NT Side Length) / (sin(0. We already know we can bisect a chord to get two right triangles. the property line changes.NT Side Angle * 2 NT Side Curve Radius Since this is an isosceles triangle. This made things fun… So. just the ones where they seamed together.5 * NT Side Curve Angle)) + NT Front Side Fillet Radius • Placing the lines… We’ll get into this in the demonstration.AB327-4 Fuzzy Math Essentials for Revit Family Builders It’s not over till the client sings… Late in SDs. both sides are the radius of a circle. and to squeeze out every bit of available space the straight part of the NT side became curved. and that makes the NT Side Length a Chord. we know what to do. 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 . Since a triangle’s angles always add to 180 degrees. Once you’ve got this drawn. but I’ll tell you that one key to making this work when you draw it is to define successive reference lines as the workplane and then draw the next line on that workplane. NT Side Curve Angle Since this angle is an isosceles triangle with the different side at 75 degrees. the other side has to be 75 degrees too. Formula: 180° . Don’t forget to add the fillet radius though since we’re calculating from the intersecting arcs! Formula: (0. Flex it. we have two more parameters.
Area The area enclosed by an ellipse is πab. the ellipse is defined as the set of points (X. The ratio of these two distances is the eccentricity of the ellipse. e=PF/PD. Refer to the illustration on the right.Y) of the Cartesian plane that. where the function E is the complete elliptic integral of the General ellipse In analytic geometry.AB327-4 Fuzzy Math Essentials for Revit Family Builders ELLIPSES From Wikipedia. The distance from any point P on the ellipse to the focus F is a constant fraction of that point's perpendicular distance to the directrix resulting in the equality. Besides the well known ratio e=f/a. then the area is Circumference The circumference C of an ellipse is: second kind. it is also true that e=a/d. FORMULAS Eccentricity The eccentricity of the ellipse is The distance from the center to either focus is ae. where (as before) a and b are one-half of the ellipse's major and minor axes respectively. the free encyclopedia An ellipse obtained as the intersection of a cone with a plane. satisfy the implicit equation provided B − 4AC < 0. or simply Directrix Each focus F of the ellipse is associated with a line parallel to the minor axis called a directrix. in non-degenerate  cases. 2 2 If the ellipse is given by the implicit equation Ax + Bxy + Cy = 1. 2 29 .
For an ellipse in canonical position (center at origin. EXAMPLE: DISTENDED ELLIPSE MODEL LINES • • Generic Model Families can be imported into Masses and used to create geometry.Yc) is expressed as In trigonometry An ellipse in general position can be expressed parametrically as the path of a point (X(t). 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 semidiameters. Once these constraints are defined. Complex masses may require hundreds of constraints. 30 . Create model lines.Yc) is the center of the ellipse. where as the parameter t varies from 0 to 2π. nesting can greatly reduce the complexity of the constraints in the Massing family.AB327-4 Fuzzy Math Essentials for Revit Family Builders Canonical form By a proper choice of coordinate system. Translation of an ellipse centered at (Xc. the equation simplifies to Note that the parameter t (called the eccentric anomaly in astronomy) is not the angle of (X(t). and φ is the angle between the Xaxis and the major axis of the ellipse. Typically use face based for ease of placement in the massing editor. and constrain and flex them to your heart’s content. so as with any family. Parametric form in canonical position Parametric equation for the ellipse (red) in canonical position. 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.Y(t)) with the X-axis. keep them visible.Y(t)). which have identical major axes but different minor axes. major axis along the Xaxis). This is called a distended ellipse. Here (Xc. The eccentric anomaly t is the angle of the blue line with the X-axis. This completed example is of two ellipses.
We decided to divide the ellipse into fourths. or faces as needed • You can constrain them by whatever reference planes you create in the Generic Model family • Parameters can be linked to parameters in the Massing family just like any other nested family Constraints in the example “surfboard” family: Orb Ellipse Major & Minor Axis parameters relate to a void in the whole building mass. Surfboard Minor Axis This is a value determined by the percentage of the Orb Ellipse Axis parameters above. Surfboard Major Axis This is a value determined by the percentage of the Orb Ellipse Axis parameters above. and loft the resultant lines: 31 . Formula: Orb Ellipse Minor Axis * Surfboard Ellipse Scale Factor Surfboard Depth This defines the vertical axis of this ellipsoid.AB327-4 Fuzzy Math Essentials for Revit Family Builders Placing into the massing environment: • You can place these on reference planes. “Scale Factor” is a result of this particular massing family sitting in the void created by the revolved ellipse defined by those two parameters. so this sets that percentage which we would also control at the project level. levels. we had to “fudge” it with the approximations below. Surfboard Rim Depth We want to have a vertical band around the edge of the final form. Since it doesn’t sit at the mid-point necessarily it might need to be smaller or larger by a consistent percentage. Formula: Orb Ellipse Major Axis * Surfboard Ellipse Scale Factor (Geek Factor Five Warning) Since Revit could not (cannot?) make this shape on its own at the time we were working on this project. and this sets the height of that band. something we might vary at the project level.
This is a 3D form not a 2D one. Formula: sqrt(Surfboard Minor Axis ^ 2 * (1 . we can repeat the formulas from nd earlier.(4th Ellipse Y Offset from Center ^ 2) / (Surfboard Depth ^ 2))) th 4 Ellipse Minor Axis Formula: sqrt(Surfboard Minor Axis ^ 2 * (1 . but we will use the 2 Fourth Y st Offset instead of the 1 Fourth Y Offset. Per our ellipse formulas. Formula: (Surfboard Depth / 4) * 4 .1mm reduction when creating the form. however since forms can’t be lofted to points we have to get infinitesimally close but not quite to the edge – this is the approximation I’m talking about.(1st Ellipse Y Offset from Center ^ 2) / (Surfboard Depth ^ 2))) nd 2 Ellipse Y Offset from Center Determines the distance to the second fourth.(3rd Ellipse Y Offset from Center ^ 2) / (Surfboard Depth ^ 2))) th 4 Ellipse Y Offset from Center Determines the distance to the edge. th 4 Ellipse Major Axis Formula: sqrt(Surfboard Major Axis ^ 2 * (1 . Formula: (Surfboard Depth / 4) * 3 3 Ellipse Major Axis Formula: sqrt(Surfboard Major Axis ^ 2 * (1 .(3rd Ellipse Y Offset from Center ^ 2) / (Surfboard Depth ^ 2))) rd 3 Ellipse Minor Axis Formula: sqrt(Surfboard Minor Axis ^ 2 * (1 . Formula: sqrt(Surfboard Major Axis ^ 2 * (1 (2nd Ellipse Y Offset from Center ^ 2) / (Surfboard Depth ^ 2))) nd 2 Ellipse Minor Axis Formula: sqrt(Surfboard Minor Axis ^ 2 * (1 (2nd Ellipse Y Offset from Center ^ 2) / (Surfboard Depth ^ 2))) rd 3 Ellipse Y Offset from Center Determines the distance to the third fourth. both of which we have defined! But I am terrible at solving formulas and I need this solved for X.(4th Ellipse Y Offset from Center ^ 2) / (Surfboard Depth ^ 2))) rd st st 32 . The same formula works fine with different parameters mapped to y. and b respectively. the equation to the right defines the relationship of points along an ellipse to the major and minor axes. Thank you wolfram alpha: So. 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).AB327-4 Fuzzy Math Essentials for Revit Family Builders 1 Ellipse Y Offset from Center – Determines the distance to the first fourth. it is so the last profile doesn’t break from being 0” by 0”. we won’t actually use the . we need the “other” direction calculated. a.1mm Note. relating that to our parameters. Formula: (Surfboard Depth / 4) * 2 nd 2 Ellipse Major Axis Now. the formula: sqrt(Surfboard Major Axis ^ 2 * (1 (1st Ellipse Y Offset from Center ^ 2) / (Surfboard Depth ^ 2))) 1 Ellipse Minor Axis Similarly.
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.AB327-4 Fuzzy Math Essentials for Revit Family Builders Once these are set up. Set your workplane for one of the reference planes first. And the other (lock it). don’t forget to lock it. 33 . Placed on the lower 3 fourth reference plane. Then. rd Aligned one way. click the component button and select the generic model line family you loaded in. Now you need to constrain it to the origin using the existing reference planes in the template.
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. rd The end result should be your ellipse on one plane. Click the little button on the right to link to a parameter in the massing family. Changing the height parameter in the host causes these to move… 34 . This image shows the series of elliptical model lines placed on reference planes and constrained. This is the surfboard. you form in “wireframe” should be complete and flexible. make a bunch more on the others. Once completed. Now. Repeat for the Minor Axis and Add Axis – both of these will be linked to the 3 Ellipse Minor Axis in my case.
ready to create form… Once created. It can continue to flex as the model lines in the generic model families move… Flexed back to a vertical axis of 1000mm… 35 . the form is like any other in the massing environment. Creating Forms from nested GM Families Just like creating forms from model lines in the massing environment. you pick the families or the lines in the families in the desired order and click “Create Form”. it doesn’t matter if you start at the bottom or top… Families selected from base to top. changing the height from 1000mm to 3000mm resulted in more of a football than a surfboard. Form completed.AB327-4 Fuzzy Math Essentials for Revit Family Builders Here. In this case.
This mass can also be nested into another mass and then controlled there. 36 .AB327-4 Fuzzy Math Essentials for Revit Family Builders You can also still cut the voids and join additional solids to it… Void removing top half and solid joined to it so that it has a flat rim above the midpoint of the ellipse. any of the techniques mentioned above can be used with this mass to hide or manipulate the geometry. Our little surfboard in its home on the building mass. From here.
Here we have 18 different variations using the same mass.AB327-4 Fuzzy Math Essentials for Revit Family Builders TAK ING IT A LL IN TO MASSING So. so we were simultaneously judging both the building area requirements AND aesthetics of the massing. You can flex it into hundreds of iterations and get feedback from Revit whether that is energy analysis or calculating building area for FAR requirements. We did the latter on this project for months… As the size of the property changed. this project had over 100 envelope changes. 37 . As I said earlier. We did over 200 versions in three days of charrette time before selecting a final scheme. The schedules show the area sums and area by level for each version of the mass. Many of these versions meet the FAR requirement. why all the trouble? Why make some crazy parametric mass? Here’s why. If we had to re-create the skin from scratch each time we would have gone broke. with slightly different parameter values. we had to constantly tweak the building envelope to fall within FAR limitations. many of them in the last month of DDs.
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 . Using conditional statements you can create a series of occupancy schedules based on any code requirements and driven by room or area schedules.AB327-4 Fuzzy Math Essentials for Revit Family Builders OCCUPANCY SCHEDULES IBC 2006 has some intense occupancy requirements based on the type.
if(Area Per Occupant = 0 SF.if(Sprinklered. Seating Occupancy. We’ve found that using a room by room requirement usually increases (inflates) the numbers above the level or building requirements.49)) Stair .if(Sprinklered. even though technically many of these requirements are based off the entire floor area or even building use as a whole. and we can always back-check with the total area information in these schedules. ((Area / Area Per Occupant) + 0. We typically provide exiting and plumbing at better than code requirement levels so this isn’t a problem for us.AB327-4 Fuzzy Math Essentials for Revit Family Builders Plumbing Requirements These are in the example files. Calculated Occupancy * Stair Exit Width Per Occupant Unsprinklered) Horizontal . so don’t worry about reading them… Room Schedules are what we’re using. Calculated Occupancy * Horizontal Exit Width Per Occupant Sprinklered. Calculated Occupancy * Stair Exit Width Per Occupant Sprinklered. Exiting Widths Based on the key values and whether the room is sprinklered or not. Calculated Occupancy * Horizontal Exit Width Per Occupant Unsprinklered) 39 . we can use a calculated value to define the stair and horizontal exiting requirements very easily! Calculated Occupancy .
(Calculated Occupancy * 0. Calculated Occupancy if(Area Per Occupant = 0 SF. (((Calculated Occupancy * 0. ((Area / Area Per Occupant) + 0. (((Calculated Occupancy * 0.Water Closet 1st Requirement Limit) / Female Water Closet Requirement 2) + (Water Closet 1st Requirement Limit / Female Water Closet Requirement 1)).5) / Male Lavatory Requirement. with some nested conditional statements and some hard coded values.5) / Female Lavatory Requirement.5) / Female Water Closet Requirement 1)). (Calculated Occupancy * 0. Calculated Occupancy * 1) Male Lavatories if(Male Lavatory Requirement > 0.AB327-4 Fuzzy Math Essentials for Revit Family Builders Plumbing Fixtures This one is a little more complicated. Calculated Occupancy / Drinking Fountain Requirement. (Calculated Occupancy * 0. 40 . (if(Water Closet 1st Requirement Limit > 0. Calculated Occupancy * 1) Drinking Fountains if(Drinking Fountain Requirement > 0. (if(Water Closet 1st Requirement Limit > 0.5) > Water Closet 1st Requirement Limit. Calculated Occupancy * 1) Female Water Closets if(Female Water Closet Requirement 1 > 0. (Calculated Occupancy * 0.5) / Male Water Closet Requirement 1)).5 . Calculated Occupancy * 1) Female Lavatories if(Female Lavatory Requirement > 0.5) / Male Water Closet Requirement 1)).49)) Male Water Closets if(Male Water Closet Requirement 1 > 0. (Calculated Occupancy * 0. (Calculated Occupancy * 0.Water Closet 1st Requirement Limit) / Male Water Closet Requirement 2) + (Water Closet 1st Requirement Limit / Male Water Closet Requirement 1)).5) > Water Closet 1st Requirement Limit. (if((Calculated Occupancy * 0. Seating Occupancy. (if((Calculated Occupancy * 0. 0) All this is in the sample file to look at.5 .5) / Female Water Closet Requirement 1)).
Revit Forum REVIT HELP Press F1 within the Program 41 .David Baldacchino USER GROUPS AUGI .Jason Grant http://bimtroublemaker.com/ .Autodesk User Group International .squarespace.blogspot.AB327-4 Fuzzy Math Essentials for Revit Family Builders RESOURCES BLOGS http://jasongrant.com/ .Philip Lazarus http://revitfutures.blogspot.com/ .Kelly Cone http://do-u-revit.com/ .blogspot.
wolframalpha. Also. anything you ever wanted to know about mathematical formulas for geometry is on Wikipedia… Mathworld .com/ Type in your base formula and tell it what to solve for and you don’t even have to do the algebra.mathworld. free and explanatory.com Basically. If only I had this back in the day for Differential Equations… 42 .wikipedia.AB327-4 Fuzzy Math Essentials for Revit Family Builders WEBSITES Wikipedia – www. This has some additional advanced definitions that Wikipedia sometimes lacks.www. It does it all for you and shows steps.wolfram.com/ Mathworld is a similar resource. Wolfram Alpha . based on the Mathematical Software collection and user input.
This action might not be possible to undo. Are you sure you want to continue?