This season at the Boston Architectural College we started an advanced class to get into more topics such as design options and advanced modeling. The family editor also gets more attention to cover topics such as nesting, parameter linking, type parameters ect..
I thought I would just post some tips and tricks/best practices here for those who are just getting started in the Family Editor. I encourage other experienced "Reviteers" to contribute as well.
Flexing a family
Always make two types and set the parameter values in each type to different values. As you work in the family editor you can then switch between types, pressing "Apply" as you go, to test the family and see if it behaves as desired. If you have a missing constraint you will see it fail in the canvas.
Place Constraints Consistently
It is good practice to place plan constraints in the "floor plan" ref level view and vertical constraints in the "front" or "left" views only. Avoid placing constraints in the "back" view or "ceiling plan" ref level unless required. This can make future editing and troubleshooting more simple.
Don't over constrain
When sketching lines that are placed over ref planes or ref lines they often do not need to be locked. Test your sketch without locking and see if it behaves. Setting a dimension to a set value or zero length may also not require a lock to hold the value. Adding constraints everywhere can make a family more fragile.
Avoid Chaining References
It is better to have different elements reference the nearest parallel reference plane than each other. Geometry shape handles can serve as references but it is better to avoid constraining one shape handle to another unless it is required.
Use Control+Drag
Need another reference plane? Grab the nearest parallel ref plane and drag it holding the control key. Voila a copy. This works for all ref planes except for those that define the origin. No need to leave the canvas.
Dims: Make Permanent
Need to add a constraint? Click the element to be constrained (e.g. ref plane) and click the "Make permanent Control" on the temp dim. If the dim is not to the right location drag the blue controls to other references. Again no need to leave the canvas.
Label Dims from Option bar
You can create new labels or assign an existing one from the option bar whenever a dimension is selected.
Model Once
A woodworker friend told me once "If I have to make more than one of anything I make a jig" If you have anything that repeats (e.g. table leg) make it as a separate family and nest it into the main family. Your life will be much easier. The leg as nested will be easier to reference and update in the future.
Name It
Use good names. For parameter values I adopt a programming syntax that capitalizes the first character of each word in the text string. Example: "chairLegVisibility" or "tableWidth" or "tableLegType". Choose good names for your types. Avoid using default names like "Type 1".
It is also good to choose a pertinent parameter group for your parameters. If it is a material parameter place it in the "Materials and Finishes" group.
There are many more. I hope someone can pick up a tip here or provide one of their own. Happy family editing!
_erik
Another tip to add: any "hosted" family, such as a wall hosted or roof hosted, you should make different Types of the host in the family that vary in thickness. Then flex the Host when creating geometry to be sure the objects are reacting to different thicknesses as you would expect. For example: when creating a generic wall hosted family, make a few extra types of walls in the family that have different thicknesses. Then as you flex the wall thickness, you can be sure the objects you are creating remain on the face of the wall no matter what the thickness of the wall is.
Posted by: Scott D Davis | October 05, 2009 at 11:13 PM
I find it helps to change the scale of the view so you can see all the parameters clearly.
Posted by: JoeF | October 06, 2009 at 09:28 AM
Here are a few that I always recommend:
I use temporary Hide/Isolate quite a bit while I work in the Family Editor as it makes it easier to work on complext Families
I like to vary the lengths of Ref Planes to suggest logical groupings/Heirarchy (this at least until the factory allows us to color them)
I like your idea about having two types for flexing, but I still think that free-form flexing is important. If you always use the same flex values you could have just lucked upon the two values that don't make it break :-) A little free-form testing can sniff out other problems.
Don't choose a hosted tempplate unless you are positive that you will never need the Family free-standing. You can always algin and lock an non-hosted Family to another object (like a cabinet to a Wall), but you can't "unhost" a hosted one.
Posted by: Paul F. Aubin | October 06, 2009 at 10:09 AM
What I think would be a great tool to have in Revit is to export an in-place family to a external family. I am finding more often that I need a custom family that I will use in multiple situations but I want the model as a background to help generate the geometry. If I could create the initial family and export that out to an external family that would be great.
Posted by: Dennis Nelson | October 06, 2009 at 02:22 PM
When flexing, I find it useful to flex beyond "reasonable" values to uncover the limits of functionality. For example, I will try to set a door height to 25' or a wall thickness to 1". This sort of change can create problems as elements get reversed or lose connections. You may decide that the limits are reasonable, but it is often possible to increase the reliability of a family by fixing the failing elements. Remember, others won't know what limits work well and someone will inevitably try to go beyond what you thought was a reasonable usage.
Posted by: David Conant | October 06, 2009 at 03:14 PM
Purge! purge the main family and all nested families. Helps keep project file size down when families are loaded into live projects and therefore helps maintain performance of the project.
Posted by: DoTheBIM | October 07, 2009 at 07:42 AM