How to change the material and thickness of a specific layer of walls,floor or roof

Hi guys, I am a beginner of Revit and Dynamo and now am trying to use Optimo to do optimization. I want to change the material and thickness of the insulation layer of walls,floors and roof.

I am using Revit 2024.I have tried to use FamilyType.SetCompoundLayerMaterial and FamilyType.SetCompoundLayerWidth from Clockwork but they don’t work. And I tried Delete Compound Layer and Create Compound Layer from GeniusLoci.
They can work for 1 item,but there are 2 problems:
1.if the updated material and thickness is the same as those before updated, they will only add one same layer without deleting the original one.
2. When updating a list of items, they don’t work successfully. (See figure)
I don’t know much about the script so cannot find the issue behind. Can someone help me with this?

  • I wouldn’t recommend utilizing Optimo for this. Hasn’t been updated or maintained and likely won’t run much longer (if it works in 2024) due to the coming .net migration for Dynamo and Revit.

  • The clockwork package requires IronPython, so be sure you have that installed. If the package still doesn’t work, it may need the Python updated. Open up the custom node and move the contents over to the core environment to see if you can expose some of the issue itself.

Hi @kxh256 both package should work in 2024 …does it work if you feed in the element type

1 Like

Hi there,
thank you for your reply. They work for one item like what you showed. but I need to update the material and thickness in every iteration of optimizaiton, when the new generated material and thickness are both the same as last one (for example, I run two times of the picture shown below and there will be two same layers of insulation, instead of just one), they don’t delete the last layer and directly add a new same layer to the element, which results two same insulation layers (intentionally one should be deleted).
The other problem happens when dealing with a list of element like I showed before in the figure

Revit will not allow this. The floor assembly can only be one thing at a time in the .rvt file. If you explain what it is that you are trying to optimize for we can give some recommendations for how you might go about it.

I want to change material and thickness of building envelope to optimize the embodied energy and operational energy of the building. I am also thinking about using Honeybee and ladybug, but still don’t know how to do it.

No need to actually change the assembly thickness to run each of those.

Assuming that you know the carbon cost per cubic unit of the material, you can set any assembly up you might like to get a thickness per square unit and multiply that by the area of a floor and you have the embodied carbon cost.

Energy loss via the envelope is harder, but the formulas are out there and aren’t proprietary in any way so they can be implemented as well, so you can do the same there.

Both cases will run orders of magnitude faster in Dynamo core and would allow for a Generative use case as well.

@jacob.small Thank you so much for the great guidance which helps me a lot. I will try to do so

Hi,
For list of items with inequal lengths inputs, use the longest lacing on the Create Layer node.

2 Likes

Thank you for your reply. I will try it.