Add.Direct.Shape.ByGeometry needs option to set material as a parameter instead of a Revit Material

Especially if you want to insert geometry into a family first, before importing into project, there is no way to set material as a parameter and the family will not share the project materials because it’s a family.
Additional usage I need is to change the category of a baked model without re-baking. Revit does not seem to play nice with direct shapes even if they will display correctly in views.


Could you please elaborate a bit more what you are trying to achieve?

About changing the category, where would you like to change it from?
Are you talking about the DirectShape.ByGeometry, or from the Revit UI?

What do you mean when you said Revit does not seem to play nice with direct shapes?


Yesterday I had to open Rhino and Grasshopper over again so that I could re-bake something from the furniture category to casework. Normally, this would be an easy parameter to change on a Revit native geometry.
Then 2 hours later, someone wanted to change the material, so I had to open up Rhino and gh again to re-bake a new material, which is also usually an easy parameter to change if the family has a material parameter built in.
When I try to make a family from RhinoInside.Revit, I only have 6 default materials to choose from, so now since there is no material parameter in the family, it can’t be used easily for more than one project with a specific material.
What I’m saying about not playing nice, is that imports from RIR act like CAD imports where it is kind of like a statue and has no BIM data or parameters that can be changed which means currently RIR would be a poor choice for trying to build a family because it will never be able to have parameters.

I see, you are trying to author a Family.
Here Create Window Family with Opening you can see a sample on how to create a Window family.
As you can see in this sample there are components to assign subcategory, visibility and material to the content of the family, you can as well change the family category but to do so you need to modify this sample to use the GenericModel template.

Hope it helps.

1 Like

It does but we would like to be able to use direct shape to create a family with all parameters. For example this screenshot

We really don’t have much in the way of available parameters.

Materials seems quite important, could you add it by default ?

These are inherent properties of DirectShapes governed by the Revit API.

So they are basically pretty bad at everything, should we always model with Families ?
I can see a lot of plus for giving another user without Rhino inside Revit control over all those parameters. What do you think ?

1 Like

Correct. Direct Shapes won’t be editable or have ‘real’ parameters. Great if you want a one-off in a particular category or to send non-intelligent Revit info.

1 Like

Sure but that’s not what Revit is known for (one offs and non-intelligent), so family creation it is then, whoou, another adventure

Your create family component requires a Windows Path ?

Why can’t we query that info from the Active Revit document ?

Hi @thomas.lagarde,

This first input requires a path to a .rft file in case you want to specify a template file to create the Family. It’s optional, so you can leave it blank.

In this case it looks for a Generic Model template on these folders:

  • Next to the project where is going to be loaded.
  • In your default templates folder.

You can also use a relative path like this.
Template search follows same rules here.


I changed the ‘Save Component Family’ component to enable a workflow like this.
Now you can chain Save and Load to duplicate a Component Family and use it latter as a “template”.

Cool, would you mind sharing this definition so I can give it a try ?

Here are the components in a definition. (13.3 KB)

1 Like

You forgot to mention that we needed to download the latest Rhino Inside Revit, which version was that ?

Lets go with the Release Candidate


When changes are made they first go into the Daily Builds, sometimes directly into the RC if its a bug fix. Stable builds are monthly.

Here’s how your Script looks with this version of Rhino inside Revit

That version is over a month ago, you’ll need to update. I recommend the latest RC.

Hey @Japhy - I’ve been digesting your comments here and at the linked threads regarding DirectShapes and their limitations. I’m able to populate geometry (working on that rainscreen facade we’ve discussed in the past) as DirectShape Types under a single Family name, but there are a couple downstream challenges with the DirectShape elements. 1) they’re not visible in the Project Browser, which is a minor inconvenience but quick, effective check in my workflow to confirm things are working as expected (how else are DirectShapes seen in the model if not actually visible in 3D model space?). It appears from your table that this is a DirectShape limitation and there’s nothing that can be done. 2) the parameters I’ve created (in this case, Area and Perimeter Length) become Shared parameters, which becomes a limitation downstream as I’m not able to export this metadata outside of the model (not sure why this is the case currently). Ultimately, I’m looking to build a PowerBI dashboard that displays Revit elements with associated Type parameters as visibility parameters - any thoughts you might have related to this workflow would also be appreciated.

I’ve also looked into the Add Component Family workflow, but am having trouble creating one Family name with many Types within it (I could create many Families with 1 Type each, but that becomes cumbersome from the Project Browser standpoint). Do you know if it’s possible to duplicate Types and then replace the geometry within? I used the Family Types and Duplicate Type components to make the additional Types, but am unclear how I’d exchange geometry within each Type. Thoughts here would also be appreciated. Thank you!