5 Key Factors in Creating Great Revit Families
As RevitHQ is starting to populate its library with more and more families I thought I might share a few mini-tutorials in some areas you need to consider when creating parametric families.
Now, this is by no means an exhaustive list, this is a very large topic, and many people have their own opinions on some of the key points. But these are some of the processes you will find adopted in the families created here and I urge you to consider them when creating your own.
1. Dimension to Reference Places
This is a big one! If you can, place a priority on dimensioning to reference planes and not the modelled geometry. Once you have dimensioned to the reference plane, then lock your line, extrusion, etc, to that reference plane.
Why? There are so many reasons for this but here are a just a few of the most important ones:
It will help you avoid the spontaneous explosion of your model when flexing its constraints.
It will make things so much more simple in the long run, especially when you need to constrain multiple edges to the same location.
It helps you or someone else troubleshoot your family when things go wrong or changes need to be made.
It gives you the option of some more advanced control over your families, refer to Reference Planes & Drag Controls tutorial.
2. Object Styles
In almost all the families I have ever downloaded, object styles are rarely if ever used. In a recent tutorial at my work I was surprised to learn only 2 people out of an office of 30 actually knew what that were used for.
For those that are confused in this area, object styles essentially tell Revit how to break down families into subcategories of its main category. In the example of a window, you can categorise one solid extrusion in your families as a ‘Frame’ and the other extrusion as the ‘Glass’. When inserting the family into your project you now have far more control over its graphical representation through the visibility graphics dialogue box. You could hide the glass element of your families in some views but not others, or even change its cut pattern or line type.
Not only this, object styles also act as a default for how you want your family to be represented when someone inserts it into their project. If you create a new object style for say, a lock, you could pre-set the object style projection line weight to ‘2’ in your family. So now whenever this new object style is introduced into a new project it automatically represents with the correct line weight.
Of course, there is more to it that just this brief explanation of object styles and I caution the excessive use of new user-created object styles. From experience, in office environments where custom object styles have been predefined and work in synergy with template settings, rogue object styles certainly get on my nerves. But when used correctly and thoughtfully, they are very powerful. For this reason, RevitHQ takes particular care when introducing new object styles and adopts the ANZRS where ever possible.
So if it makes sense to do so for your office or current job, when creating your family apply the solids and lines to objects styles, especially the predefined object styles in categories such as windows and door families.
3. Visibility Settings
Another area often overlooked is the in-family visibility settings of each object, this is important to consider if you want your family to be versatile at different detail levels. This, like object styles, can be something that is more personal to the way you might use the model in your office environment or during your project stages.
4. Nested Families
Nested families are so incredibly useful, and sometimes necessary for effective family operation. This could be a whole tutorial in its self, but for now, just know that nested families are invaluable! But again, a balance needs to be found.
Just like in the movie if you mess with family inception and go to deep, things get dangerous….well mostly things just get slow. There is no hard and fast rule to the limit of nested families, but I normally try to limit it to about 3 deep. If the nested families are simple with almost no adjustable constraints, then, by all means, go deeper if you think it will help. But I have rarely found practical benefits to going deeper than 3 nested families anyway.
That being said nested families are a fantastic way to simplify your models and achieve certain functionality that is very hard to achieve otherwise, such as rotational parameters. It also serves as a way to have interchangeable components of your family controllable from the project level, a feature the RevitHQ door families put to very effective use with its panels, handles, and locks.
So during family creation, when things start to get complex, and more and more reference planes are needed, step back and consider, would it simplify things if this element was nested?
5. Formulas and Equations
This is the one that always scares people the most and the one where people opinions on the best approach varies greatly. But the repeating theme throughout this whole summary applies here also, keep it simple. The more complicated the equation, with branching variables and formulas dependent on other formulas, the slower the family will operate. It takes practice to realise when you are beginning to over complicate the formulas, but don’t shy away from them. Even if you aren’t a math wizard, simple formulas are still powerful.
All the standard math, trigonometry, and IF/OR/AND statements/equations are open for you to use with the parameter constraints you have applied to your family.
Formulas are essential in adding intelligence and user-friendly operation to your families. An example one of the primary formulas RevitHQ uses to prevent people over or under stretching families is a maximum and minimum formula.
Length A = (User entered value)
LengthMaxMin = IF(Length A > 2000, 2000, IF(Length A < 10, 10, Length A))
In this example the dimension of you object is applied to the ‘LengthMaxMin’ parameter. The user enters the desired value into the ‘Length A’ parameter box. LengthMaxMin then checks that it is not above or below the values of 2000 and 10 respectively, and if all is good, adjusts its dimension to match ‘Length A'.
If you are having trouble understanding the equation I find reading it as a sentence in this manner helps:
If Length A is more than 2000, then 2000, otherwise if length A is less than 10, then 10, otherwise Length A.