Assign different materials to In-Place components in Dynamo

Thanks Mark.Ackerley for the tips.
I’m totally new in this area, some questions:

  1. how to add material to the generic model family template?
  2. If I have 4000 ifc elements, do I need to do the above work manully 4000 times?


Hi, GavC

  1. what do you mean by “isolate”? do I need to “isolate” ifc element 4000 times?

I haven’t used Dynamo to collect IFC elements, but I assume you have converted the IFC into Revit geometry, which in turn converted the columns into in-place generic models.

If there is anything these columns all have in common (such as a name or parameter), you could collect all elements in an active view, filter them so you are only dealing with your column elements, use Element.Geometry to convert them to Dynamo geometry, take the bottom face of the geometry, get boundary as a poly-curve, verify the outline types (arc or rectangular/square).

You could check the diameter for arcs and the long/short side lengths for rectangular/square bases. I would then export these to excel, modify a column family so it contains all of these types (and name them in a way which allows you to tell the dynamo script to match these profiles with family type names - e.g. 400x800).

This would allow you to create actual families with types set up based on the outlines at their base. You would also need to identify their height at base/top to verify their level at base/top and any relevant offsets.

It would be a long script, but if you are dealing with 4000 elements and need to take them into a Revit model for documentation setting up this script should save you a lot of time in the mid-long run.

1 Like

Hi GavC

Thank you for the detailed solution. Unfortunately, 4000 ifc elements have different geometry, not just column as shown in attced rvt file.

1 Like

Sounds like a fun one… crank out the elbow grease I guess. You could try to at least handle the more regular elements using scripting with simpler geometry (maybe by converting to geometry, converting that to polysurface, and filtering out anything with more than 6 surfaces?).

I found this Model-in-Place component convert to Family component.

But it seems like I have to manully convert each element.

I can create a “material” shared paramter and project paramter and link them together.
In revit edit in-place mode, I can assign the shared parameter to element.
Then I can assign required material in the project parameter.

I have to do this 4000 times in revit.

The problem is how to assign the the shared parameter to element (in-place component) in Dynamo?


So create a family from template, add the materials, save the family and rename to .RFT.

My thought is that hopefully when IFC imports the objects as generic models, it uses this template… so it would work for all 4000 elements…

Hope that helps,


Edit: Could you chuck a link to your IFC importer? It would be interesting to see how it works :slight_smile:

Hi Mark.Ackerley

The attached is a simplified version, not 4000 components.
change extension rvt to ifc.
rhino .rvt (32.7 KB)

So if you update this part here?

With a template that has your desired materials?

Does that work for you? :slight_smile:

Hi Mark.Ackerley
I create a family using generic model.rft and apply “Default” material, then save it as Family1.rft.
How do I use it to import IFC, sorry for the ignorance.
Change ext from rvt to rft.
Family1.rvt (344 KB)

Specify Family1.rft as the ‘Default Template for IFC Import’ (as above) and see if it works?

when assigning the rft, it says “file type RFT is not supported in this dialog”

Sorry, dead end :frowning:

Perhaps Geometry Gym can fly to the rescue?!

anyway, thanks for the suggestion.

I forgot to mention that I want to keep the ralative locations of all 4000 elements.
So converting to rfa will make me to insert rfa into revit and relocate all 4000 elements

Download and try out the Orchid package, there are a lot of parameter add/edit nodes in there - although I haven’t tried them out for in place families. I am unsure how you would be able to apply the material parameter to all the geometry - might be a limiting factor.

Thanks for the tag Mark.
Geometry Gym have a 3rd part IFC importer as an alternative to out of the box Revit.
You can download and try it from the downloads page at
There’s a higher success rate at making native revit elements based on symbols.

You can also manipulate an IFC file prior to importing to Revit, this is most convenient in Grasshopper but you can zero touch load the open source toolkit in Dynamo.

We can help with strategy on this process if you can post or privately share a representative IFC file.



Anytime Jon, great work!

The OP was needing to import IFC and define the .RTE to allow use of embedded materials, so your node looks perfect.



Thanks GavC for the suggestions.

The problem is related to in-place component, you can apply material either by two methods

  1. enter “Edit in-place” mode and you can apply material there, but I can’t find such a node or package to do the same thing in Dynamo.

  2. Just like I showed in my 1st post, create a shared parameter and corresponding project parameter “Material” and assign the shared parameter to the material property in “Edit in-place” mode. Then I can use project parameter to assign material, and I can do the same thing in Dyanmo. The difficult part in this method is that I have to “assign the shared parameter to the material property in “Edit in-place” mode” for 4000 elements by hand, and there is no corresponding dynamo node or package.

Based on my research, Dynamo has limitation on in-place component.

Hi Mark.Ackerley and Jon_Mirtschin,

After directly importing IFC, I can actually assign the materials, but only in “Edit in-place” mode. Look like Dynamo has limitation on “Edit in-place” mode.