Assign different materials to In-Place components in Dynamo

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?

Hey,

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,

Mark

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?

Mark.Ackerley
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 www.geometrygym.com
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.

Cheers,

Jon

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.

Cheers,

Mark

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.

So @Xiaofei_Ying is there final verdict for this problem ? Similarly, I have the same problem. I created generic model family from Solid blocks from Dynamo. Then added Material Shared parameter for these. But these shared parameters do not link to the Family Material Parameter. With that being said, if i have 4000 blocks, i will have to go in family editor mode for each one of them to link the material shared parameter to the family actual material parameter.

I would like to know if you or anyone in this topic have a final solution for this. Please help me, Thanks.

In-Place families are not editable with the help of Dynamo.
If the nested family is ā€œSharedā€ you can set parameters with the help of Dynamo.
If this doesnā€™t answer your question, please make a new topic
This topic is a year old at least

1 Like