This year at AU2011 Bryan, Parley, and I taught a class on content creation. This was more of an advanced class where we wanted to share some of our scientific testing data on what makes families tick. We will review the data from the class here and open it up to comments. We understand there are several ways to skin the cat and content creation is more of an art than a science at this point, but there are definitive time savings techniques and workarounds we have found that can aid you and your firm in your content development efforts.
We really appreciate the overwhelming positive comments and feedback from the class. To all those who attended we thank you!!
You may download the class handout HERE and the slide deck HERE.
Cheers,
Steve Germano
Learning Objectives
At the end of this class, you will be able to:
- Identify key factors that make the transition from 'Generic' to Manufactured easier
- Identify key factors that really hinder project performance, Myths vs. Facts
- Apply additional little-known tricks to your content creation workflow
BIM Standards: What and Where are they?
-
BIM content is not a new concept: Around for over 5 years.
- Lack of standards is currently an issue. Efforts are being made among several industry organizations.
- Who has them? What organizations have set standards and where is the documentation?
-
Who Has Set in Motion their BIM Standards?
-
Government Sectors:
-
USACE – US Army Corps of Engineers:
http://www.erdc.usace.army.mil/pls/erdcpub/WWW_WELCOME.NAVIGATION_PAGE?tmp_next_page=4980989
- Navy
- GSA – General Services Administration: http://www.gsa.gov/portal/category/21062
- VA – Department of Veterans Affairs :
-
-
Agencies/Organizations:
- AIA – American Institute of Architects (E202) http://www.aia.org/aiaucmp/groups/aia/documents/pdf/aiab083007.pdf
- NIBS – National Institute of Building Sciences - http://www.wbdg.org/bim/nibs_bim.php
- BICSI – Building Industries Consulting Services International - https://www.bicsi.org/double.aspx?l=5140
- BSA – Building Smart Alliance (Council of NBIMS; National Building Information Model Standard Project Committee - http://www.buildingsmartalliance.org/index.php/nbims
- Food Service Industry Taskforce - http://rvttskfrce.ning.com/
- InfoCOMM - http://www.infocomm.org/cps/rde/xchg/infocomm/hs.xsl/11729.htm
-
-
Can't find a standard for what you're doing?
- Refer to the Autodesk Metadata Style Guide as Minimum Guideline - http://seek.autodesk.com/revit.htm
- Visit online sites for BIM Content such as Autodesk Seek.
Manufacturers Content (In the Past): What you don't want.
-
An incomplete model:
- One of the biggest issues is lack of industry knowledge; these models are now intelligent (or supposed to be). You cannot build a model if you have no knowledge of how it works or where it will be used.
-
….which then leads into the Meta-data. A family file left blank with no data is useless.
- There are cases where the meta-data may be very concise. A side table perhaps, can still have a weight and material parameter with all its identity parameter fields filled out.
- Over modeled! - These are not fabrication models! If your content shows every piece of an assembly you will have serious performance issues.
Current Manufacturers Content: What you should expect to see:
-
A complete model:
- Will have a completed list of Meta-Data that is specific to the manufacturer and any applicable organizational standards
- Accurate geometry
- Highly customizable with multiple design options in one model
- Preset visibilities. This will help with file performance.
- Setting correct visibilities can have a major impact on project performance
- To enhance user performance, the geometry in plan view should be turned off and replaced with a masking region and symbolic lines.
The good, the bad, and the ugly: Exploring (2) 24 Port Patch Panel Models
-
Example 1A: What's wrong here?
Figure 1 Course Level of Detail
Figure 2 Fine Level of Detail
- Over modeled! This family is more of an assembly drawing (Each component was modeled)
- Graphically there are no changes when switching from course, medium, and fine levels of detail.
- The actual geometry should be turned off in plan view to help project performance
- The file size is 1,344 KB per family. There are NO types in this family!
- No alignment set up
- Just one of these placed into a project makes the performance of the project slow, and multiple instances would be needed in a real project
- Example 1B: A Proper Model
Figure 3 Course Level of Detail
Figure 4 Fine Level of Detail
- Model shows what is necessary in a BIM model
- Levels of detail change improving project performance
- Geometry is turned off in plan view
- The file size is 580 KB per family. There are MULTIPLE types in this family!
- RU alignment is set for easy placement
Revit Project Performance Testing: Myth busting & confirming the rumors
Solid geometry vs. void extrusions
- Myth: voids use up more file size
-
The combination of voids cutting geometry is what takes up project space (factor 1.5) and in turn slow down the load times
- Voids that don't cut use the same space as solids (graph for file size and load times, image of test)
- Geometry takes up 1.3 times of its size in a project
- Voids don't take as long to load as solid geometry
Imported CAD
- Myth: imported CAD hinders project file size and load times
-
We found no effect, rather it seems that Revit geometry performs worse than CAD
CAD Geometry
- Project File Size (10,000 1x1x1 boxes) = 5,420 KB
Revit Geometry
- Project File Size (10,000 1x1x1 boxes) = 9,128 KB
-
Obvious ramifications:
- More difficult to deal with
- Materials CAN be set through layer object styles
- No flexing
- ALL or NOTHING when it comes to visibility
Nested Families
Consider the following charts:
We tested 8 different levels of nested families. Each family is identical with 100 geometry instances and measures 288 KB. There appears to be a slight upward curve in file size as the number of nested levels increases. While the use of 8 levels of nested families is no doubt unheard of, this proves the point that the number of types in nested families are the main culprit behind an increase in file size (when nesting). Beyond types, the relationship appears to be mostly linear with each level adding between 1.5 and 2 times the file size of the original family.
This graph also shows a linear relationship between levels, but for all three tests. Despite popular rumor, there is no spike in load times or file size after two levels of nesting. What does matter most are the number of types within the nested families and shared inter-relationships between the families.
When testing the "Geometry with Linked Parameters", there didn't seem to be much of a delay when changing the options in the parent family. However, we suspect this can change quickly depending on the number of interdependencies within the parameters.
Arrays
Avoid them!! They won't affect the file size but you'll certainly notice their effect upon loading into projects and changing their parameters. In a recent family simply adding an array of reference lines brought the project load time from 10 seconds to 38 seconds.
Masking regions
Masking regions only improve performance within views because you can turn of the 3D (fewer vertices). Recently we tested 10,000 geometric boxes against 10,000 masking regions. The time taken to open and pan views were the same.
Geometry
- Time For Opening view (3D)(y axis) : 0.9 Seconds
- Time For Pan regen(y axis) : 1.1 Seconds
Masking Region
- Time For Opening view (3D)(y axis) : 0.9 Seconds
-
Time For Pan regen(y axis) : 1.1 Seconds
Tests where we didn't really find anything noteworthy
- Panning/Opening views
- Quantity of Parameters
- Quantity of Materials
- Formulas affect load times & sometimes the changing of options, but not much beyond that – see below
Tips and tricks!
Formula performance
The basic structure of a common Revit formula is: if(<condition1>, <result1-if-true>, <result1-if-false>)
However, many times complex formulas are needed to configure or produce different options in a family (i.e. part numbers that depend on a myriad of options). Embedded statements and logical 'AND/OR' conditionals within a Revit formula can achieve this.
Embedded 'if statements', the WRONG way: (screenshot in presentation)
if(AND(Condition1, Condition2, Condition3), True,
if(AND(Condition1, Condition2, Condition4), True,
if(AND(Condition1, Condition5, Condition6), True,
if(AND(Condition1, Condition5, Condition7), True, etc….))))
Embedded 'if statements', the RIGHT way:
if(Condition1,
if(Condition2,
if(Condition3, True,
if(Condition4, True, False)),
if(Condition5,
if(Condition6, True,
if(Condition7, True, False)),
False)),
False)
CASE STUDY: We ran a test in one of our more complicated families (dozens of flexing constraints, many types etc.) We used a 15 page formula using the WRONG method and it took 5 seconds longer to load than the 8 page equivalent (RIGHT way) and used up 500 kb more project file size. It's faster and easier to read and make changes/corrections to the formula!
Exploding Families
How do you parametrically change a material parameter in a family if the material itself depends on factors outside of each type designation? After all, it's impossible to control materials through formulas. Our approach (when the number of 'stacked' geometry instances is few) is to model separate pieces of geometry, apply their unique material and then control their on/off visibility through parameters. Obviously, we use this method within reason as we don't want to bloat the family file size with too much geometry.
The difficult aspect of this approach is working with identical instances all on top of each other (tab+select). To deal with this we give each element a separate reference plane and apply a parameter (z Distance) to control the spacing between reference planes. See our data center enclosure below:
Figure 5 Before
Figure 6 After
Hidden Nested Family Geometry
The problem: Placed instances of nested families can have their visibility turned off, but doing so makes no visible difference like one might expect. This can be confusing and misleading. Also, Preview images for Windows Explorer are inaccurate.
The solution: Within the nested family, create a new yes/no parameter called "Hide Geometry" and assign Visibility property of every geometry instance to this new parameter. Load the family back into the 'parent' family and you get the following in the nested family's instance properties:
At this point, just map the "Hide Geometry" parameter as needed (For us, we map it the same way as we do "Visible")
When does a procedure like this come in handy? Here's an example of a data rack patch panel that flexes vertically. As it flexes, we wanted to add port modules. However, the ports that apply for taller version shouldn't be visible in the short version. See image below:
Figure 7 Before
Figure 8 After
It's also worth noting that we utilized the nested family in this case to actually SAVE file size! If all the modules had been modeled individually in the parent family, our family file size would have been considerably larger. By using the nested family we are able to model one module and copy it within the parent family multiple times without being penalized for file size.
Nested family (jack) placed 100 times = 420 KB
100 jacks modeled individually in the parent family 100 times = 876 KB
In this case, nesting saves: File size, performance, ease of use and enables true hiding of geometry.
Visibility of Voids
While this has been covered before at AU (Credit to David Baldacchino AB4001), it's worth mentioning again. It's technically not possible to hide a void in Revit because voids don't have a visibility parameter, however, the same effect can be achieved through manipulation of reference planes.
- Begin by drawing a reference plane parallel to the solid surface to be cut. (Figure 1)
- Then create a new extrusion by drawing the sketch boundary with the new plane as the work plane. (Figure 2)
- Apply a new dimension between the 'Solid to be cut' and the new reference plane. Assign the dimension a label (length parameter).
- Create a formula for your length parameter (in this case: Void Offset) as shown in Figure 3.
Figure 9
Figure 10
Figure 11
Now, by checking the 'Void is Visible' parameter checkbox, the reference plane will collapse against the solid and cut it with the void making it appear as if you simply assigned a visibility parameter (Void is Visible) to the void.
3D Error Messages
While there's no way to output messages to users through the User Interface (dialog boxes, prompts etc.) it is possible to call the users attention to certain messages. These may include messages alerting for the following issues:
- Zero length dimensions – certain dimensional values may cause the constrained geometry to 'break' or attempt produce a geometric entity that is impossible. (i.e. zero height, or sketch lines that cross each other) If this possibility exists, a second parameter should be used that adjusts the input value should it equal zero or cause an error. See below for an example.
- Product configuration errors – With manufactured products, it is important the content be used properly. (highly customizable products have specialized selection criteria)
- Multiple selections when only one is desired
- Establishing a range of values (i.e. maximum flow should not be exceeded etc.)
One solution to this perplexing problem is to include 3D text displaying a message to the user when a non-existent configuration is selected.
The 3D text should be placed in a visible location in the family where the end –user will easily see the message. Then it's 'Visible' parameter should be mapped through to a family parameter (ie.e. named "Error Message is Visible") and the contents of the text should also be mapped to a family parameter (i.e. "Error Message").
The actual error message(s) for "Error Message" should be calculated by advanced formulas that use logic to dictate when a non-existent configuration has been selected and the "Error Message is Visible" formula should follow the same formula logic.
A recent example of an error message we created for a variable frequency drive:
if(Error Voltage Selection > 1, "ERROR: Select Only One Voltage", if(Error Voltage Selection = 0, "ERROR: Select Voltage", if(Error NEMA Selection > 1, "ERROR: Select Only One NEMA Option", if(Error NEMA Selection = 0, "ERROR: Select NEMA Option", if(and(NEMA Rating is 3R, or(z Type = 4, z Type = 5, z Type = 1)), "ERROR: NEMA 3R Not Available with Selected Construction Type",……….
In the example above we used the parameter "Error Voltage Selection". Revit has no ability to add a "bullet-list" where the user can only select one option from many. The only remaining option is to output an error message if more than one voltage or no voltage is selected. The tricky part behind the "Error Voltage Selection" parameter was to assign a value of 1 for each voltage selection the user makes and then add them all up. The result is an easy way to analyze the users input and then we are able to return a message through analyzing the user selection.
See the example below:
Error Voltage Selection = if(Bus Voltage is 208 V, 1, 0) + if(Bus Voltage is 480 V, 1, 0) + if(Bus Voltage is 600 V, 1, 0)
Look Up Table Switch
Look up tables are specifically for piping and conduit fittings. They allow fittings to change their sizes (ex: Outside Diameter) based on values that are given by the user (ex: Nominal Diameter). In other families this is usually done through formulas (ex: if Nominal Diameter equals 1", than Outside Diameter equals 1.25"). However, the size of pipe and conduit fittings can't always be defined through formulas and therefore require tables with corresponding values to match user-given values.
So for example, when you change a nominal pipe diameter to 6" in the project the pipe fitting will search the table for a nominal diameter of 6" and return all the sizes of the part.
The problem comes when you have 'reducing' fittings. Let's consider a situation.
If we were to change the pipe on the left to .5" and the right to .75" Revit won't automatically flip the fitting. This means that the look up table must have both the .5" and .75" nominal diameter values for the left side. If either of these values is not found, the lookup table will return default values which would likely be wrong.
There are two approaches to this:
-
Have two rows in your lookup table. One for the .5" x .75" configuration and one for .75" x .5"
Make sure you switch the values as shown above
-
For each parameter, create a formula that looks for both combinations:
Parameter = if(and(ND1/ND2 Configuration Not Found*, ND2/ND1 Configuration Not Found), Default Value, if(ND1/ND2 Configuration Not Found*, ND2/ND1 Value**, ND1/ND2 Value))
*text_file_lookup(Lookup Table Name, "LE", 0", ND1, ND2, ND3) = 0"
**text_file_lookup(Lookup Table Name, "LE", 0", ND2, ND1, ND3)
The formula approach may seem daunting, but the reality is that it's easily copied and modified for use with all the different parameters. This saves some redundant effort in the look up table.
Clearance voids
Some manufactured equipment requires that certain distances be maintained between it and other building components. Utilize solid geometry to represent these areas so that should anything enter the space it'll show up in clash detections. Note: this geometry should be mostly transparent, not be visible in plan or section views and should be given an option to turn off. If the area should still be represented in plan/section view this can be done with symbolic lines. This will keep the view speed efficient as you will be showing less 3d geometry which we learned earlier is one of the large factors in view speed.
Snap-in-place families
There is no great way to assemble separate families together. Nested families work within reason, but have serious performance and configuration issues. Depending on the situation we take a different approach.
A combination of strong references and properly configured origin points enable a sort of snap-in-place behavior. See below:
This adapter plate is face hosted. We set reference lines up in the patch panel family to form an axis upon which the corresponding adapter plate could snap to. Note: because the adapter plate is being placed in an empty location, we had to use a solid piece of geometry and make it completely transparent, thus enabling the hosting behavior.
This approach could be used for door hardware, chairs and a table etc..
Comments