FamilyInstance By geometry

I would like to know the best solution for placing geometry generated within Dynamo as a family in Revit for each version of Revit.

I have been using the FamilyInstance.ByGometry node in Springs since Revit 2021, but I think we had to change it for each version of Revit, like the following, so I want to put the information together here.
Revit 2022 ByGeometry

If anything, I would like to have it incorporated as a standard node.

Thank you to all the experts for your help!

FamilyType.ByGeometry and FamilyInstance.ByPoint are both out of the box nodes. Use the min point of the geometry’s bounding box as the insertion point.

1 Like

When geometry is Polysurface, what should we do?
Also, FamilyType.ByGeometry cannot reflect the material in the geometry, so I use FamilyInstance.ByGometry.

Polysurface likely needs to be changed into a solid. FamilyType will respect material of the material exists in the family template.

Sometimes it is not possible to add thickness to Polysurface for complex shapes. This is why I use Polysurface instead of Solid.
I’m using Revit 2023 and I am calling the material in the family template using Material.ByName but it doesn’t seem to be reflected.

Post a dataset and family template and I can try to look at this for you this afternoon.

As PolySurfaces don’t exist in Revit (Revit models real world stuff - everything in reality has a thickness, so your models should too) you likely want to move to something real.

Attached below is data for which materials cannot be set.
https://drive.google.com/drive/folders/10WQAWxy4A8TzLHWPnJi5FaQln7QZoSRg?usp=sharing

@jacob.small
What would you like to know about this one?

Sorry for the delay - my availability filled up from when i asked for the dataset and when it got posted and lost track of this. Checking on it now but my time is tight now so no promises.

Hmmm… seeing material not being respected, but I asked development to confirm incase it’s a localization thing. You might want to look into Synthesize toolkit for an alternative, but know this may require getting the right package installed for each environment/release.

@jacob.small
Thank you.
I will check on the Synthesize toolkit, but please let me know if there is any progress from development.

Hi @jj06jj Rhythm have just add a family.instance by geometry to the package [should work in most version]…probably it could work as well

Hi @jj06jj,

Thank you very much for your feedback! We will be investigating the situation with FamilyType.ByGeometry node and come back with an update.

Here is an alternative method: After the geometry creation, you can associate Instance Material parameter of the family template with *Instance Material parameter of the geometry. and then use Element.SetParameterValueByName node to assign the material through Dynamo.

A step by step explanation for the alternative solution:

1 - In Dynamo, create Revit Family Types from Dynamo geometries using FamilyType.ByGeometry node.
2 - In Dynamo, place the elements in Revit environment using FamilyInstance.ByPoint node.
3 - In Revit project environment, click on one of the created Revit elements and click on ‘Edit Family’ button to go into the family environment.
4 - In Revit Family Editor, create a new ‘Instance’ parameter called MaterialInstance.
5 - In Revit Family Editor, click on the geometry that was created with Dynamo and click on the little box next to the Material parameter of the geometry and assign the MaterialInstance to it.
6 - In Revit Family Editor, save it and load the family into the Revit project.
7- In Revit project environment, now you will see the instance Material parameter of the geometry when you click on it.
7 - In Dynamo environment, freeze the FamilyType.ByGeometry node and create an algorithm to set the material parameter of the geometries.

Here is some screenshots of the process:

1- Dynamo environment - you can create different algorithms such as assigning materials directly after the FamilyInstance.ByPoint but you still need to associate paremeters between the family template and geometry in the Family Editor before assigning materials through Dynamo:

2 - Revit Family Editor Environment - The new Instance Material parameter:

3- Revit Family Editor Environment - The parameter association between geometry and template:

4 - Revit project environment:

Here is a helpful video that explains how to assign materials to Revit elements using Dynamo.

1 Like

¨Hi @emrullah.yildiz Great explanation there :wink: thx… and guess many off these steps can be automated as well :wink:

Revit_ic8siC5zH8

2 Likes

That is awesome! Thank you for sharing the graph!

1 Like