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)
  • Then,
  • 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.

Download Sample Family Here – Revit 2018:

AR_Generic_Placeholder_DC_FMP

Note: A future development of this family could be to make an inverse visibility parameter that switches off the Shape Handles once the Type Value is enforced.

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.

Here’s how:

  1. Create a new Family -> Generic Annotation template
  2. 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.

 

Check out the full article online here:

page 36

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” 🙂

Here’s the basic steps:

  1. Use a special middleman family with System category elements living inside it… (Karam has provided one on Google Drive)
  2. Load your hosted family into that special family and host it onto the object that it wants (Wall, Floor, Ceiling, Roof)
  3. Work with parameters as needed, link them through etc if needed.
  4. Save As ‘unhosted’ version of your family
  5. If needed, nest this again into a new, clean family based on whatever category / hosting you want
  6. 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.

Along similar lines, you may remember the Copy / Monitor hack that allows converting between some different types of hosting:
Convert Family from Wall to Face based

Back in 2011 I posted about some related workflows, including the necessary steps to get System family elements in a normal Component family:
Save an In-Place Family as an RFA for use in another project
Create a Component Family with Category set to Walls (or other system family category)

You can also make unhosted Doors and Windows from scratch, like this:
Making unhosted components like unhosted Doors and Windows

Original post by Karam Baki:
Revit Tip: Save Time Converting Revit Families – Autodesk Community

You can watch his video here:

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?

Update: V2 with arrowhead and tag in project Download here

Adaptive dimension family (2016), Download here

 

 

Revit wants you to make your own better, faster way sometimes…

Using some Visibility parameters and a simple formula structure, you can use a Revit family to store a collection elements and then selectively show them by using a single lookup value. This allows you to drive many visibility states (programmatically) through the modification of a single instance parameter value.

In the case below, I created a Annotation family and multiple Yes/No visibility parameters, which I applied to Lines:

PARAMETERAPPLIED.png

Then, I make a VisibilityEnum integer parameter, and set the Yes/No parameter formulas to a given integer:

FAMILYENVIRONMENT.png

You can also use Greater Than and other operators to show items that are visible across multiple visibility states:

operators.png

In the project environment, you only need to set one instance parameter to change visibility states:

project%2Benv.png

Finally, with some inventive use of Excel and Dynamo, you can drive this visibility parameter programmatically, even mapping the visibility state to the owner view of the family instance in Revit:

getAndSet.png