Let’s say you have a family that has shape handles for instance dimensions (Length Parameters). What if you want to use it for quick prototyping, and then switch that same family into a version that uses Type based parameters?
Here’s how I went about it:
Change all existing Reference Planes to “Not a Reference”
Create new Reference Planes
Create new instance parameters bound to those Reference Planes
Lock one of the planes on each Dimension to existing origin planes
Create a corresponding set of Type dimensions
Create a set of Yes / No parameters for “Use Type for …”
Create formula like: if(Use Type for X, x type, x instance)
Apply it to the original parameters (the ones that are driving geometry):
How to Use:
Place the family
Resize using the shape handles (instance dimensions)
Create a Type
Modify the type Values and Tick the “Use Type” box
At this point, the Shape Handles are still visible, but only the Type values are used for the geometry.
Sometimes, What Revit Wants is a specific Annotation Tag family of a unique Family Category, like View Reference. When you go to create a new Family, you probably won’t find a Family Template for ‘Metric View Reference’ or similar. You need to create a family with the Generic Annotation template, and then change the Family Category.
Create a new Family -> Generic Annotation template
Change the Family Category to the desired Category (like View Reference)
Save the family, then go ahead and add the Text, Labels and Lines as desired. Load into your project and you can then select it in the relevant dialog box:
Keep in mind that you can use a View Reference to “Go to View”, such as for an adjoining Floor Plan:
I once built an auto-sizing Fire Pipe Fitting using a Formulaic method (where the various fitting sizes were driven by the Revit intersection variable), so I was interested to read about a similar strategy in a very good article in AUGIWorld January 2018 by Todd Shackelford. It is really good to evaluate these different options before going ahead on a detailed Family development and creation task.
Among other things, Todd describes how to create a Type Catalog, including a list of the various data types:
He also describes how to use multiple Lookup Tables in a single Revit Family:
Overall, it is a very informative article for advanced Revit family creators.
Fellow Expert Elite Karam Baki has posted an interesting workaround for ‘converting’ between differently hosted Revit families. The term converting isn’t quite accurate, really we are just ‘nesting’ the hosted family into another family until we get to the hosting type that we want. There are times when this will help you, but other times you may go through all of this and then decide “hey, I should have just rebuilt that family properly from the start because Revit keeps crashing now” 🙂
Load your hosted family into that special family and host it onto the object that it wants (Wall, Floor, Ceiling, Roof)
Work with parameters as needed, link them through etc if needed.
Save As ‘unhosted’ version of your family
If needed, nest this again into a new, clean family based on whatever category / hosting you want
Get origins, void cuts, openings working and link through the necessary parameters…
As a general comment, I’d say you should test thoroughly in your own environment, because this whole workflow is not really ‘#GoodRevit’ in the sense that we are breaking certain rules to get the results we want.
When working in 3D in Revit, you *can* use the normal dimension tool *if* you first set the Workplane. However, this can get annoying. Why not make a 2 point adaptive family, with a reporting parameter, so that you can just place the family (two clicks) and then check the instance parameter as shown below?
Using some Visibilityparameters and a simple formula structure, you can use a Revit familyto store a collection elementsand then selectively show them by usingasingle lookup value. This allows you todrivemanyvisibilitystates (programmatically) through the modification ofasingleinstance parametervalue.
In the case below, I created aAnnotation familyand multiple Yes/No visibilityparameters, which I applied to Lines:
Then, I make aVisibilityEnuminteger parameter, and set the Yes/No parameter formulas toa given integer:
You can also use Greater Thanand other operators to show items that are visible across multiple visibilitystates:
In the project environment, you only need to set one instance parameterto change visibilitystates:
Finally, with some inventive use of Excel and Dynamo, you can drive this visibilityparameter programmatically, even mapping the visibility state to the owner view of the familyinstance in Revit: