Apply Insulation by system and size

My client has requested that I add insulation to our pipework, which isn’t too big a deal, right?
we have to add different thicknesses of insulation, based on pipe diameter and service.

So for example, a 15mmø domestic hot water service, and 15mmø LTHW pipes require 15mm thickness of insulation to control heat loss from the pipe, while the same services, at 65mmø require 25mm thick insulation.

And just to further add a complication to the mix, we also have to add insulation to cold water services, to control heat gain and control condensation, and the same 15mmø pipe requires 20mm thick insulation.

I’m pretty sure this is the sort of thing that Dynamo was built for, so just how would I go about this, bearing in mind I’m not very good at Dynamo, and can just about create a script


First of all I suggest you to read the forum guideline:

If you didn’t get an answer so far, it’s because this is not a “Do my job” forum. Usually people post at least a try, to show their effort :wink:

You need to use the MEPover package to apply the insulation, everything else is about filtering and grouping your pipes.

I want to write this myself, its the only way I’ll learn.
I have this now, I have filtered by System, and filtered by size (15mm), where I’m struggling is comparing the two lists to extract the 15mm pipes from the selected system.

That’s great, often is the best way!
Please when you upload a graph try to put your previews visible, so we can see what’s happening.

In the first graph there is a common mistake: you want to filter the Elements (All Elements of Category), not the parameters value. So your list input of List.FilterbyBooleanMask is wrong.

You can use List.GropuByKey to divide between Hot and Cold. At that point you can further divide according to the diameter. Once you have all the possible cases, you apply the right insulation with Element.AddInsulation.

Here is a simplified example:

1 Like

Thanks for the help.
I’ve now got it so I have selected a system, and grouped the pipes system, then further grouped them by Diameter, and the fittings using the same method, except instead of Diameter I’m filtering by size.

How do I now, select only the 15mm pipes?
And for the accessories, I want to shorten the list values, currently its “32 mmø-20 mmø-15 mmø”, I’m only interested in the “32 mmø” value, as this determines the insulation size. so What node can I use to shorten the list output so I can group all the sizes into smaller groups?

OK, I’ve managed to figure out how to apply the insulation to pipes based on their diameter.

I’m stuck on filtering the fittings, I have no idea on how to filter a list based on the first part of the element value.
I’m only interested on the first part of the list, I tried the “Contains” node, but it wouldn’t work.

Anyone have any ideas?

You can use String.Substring to get only the first characters. If your input is not a string, you need String.FromObject, and if you need a Number as output you can use String.ToNumber


1 Like

Thanks lucamanzoni, that worked a treat.
This has been my first Dynamo graph, and you have been a real help to me getting this graph done, and it will save me hours of work in the future.

Here is my finished graph, its very messy and I’m sure there are better ways to get the job done, but this works.

It applies insulation thickness to our cold water system based on pipe and pipe fitting diameters to control heat gain and condensation, as per BS:5422:2009.

I’ll copy this and modify for thicknesses for controlling Heat loss, but the idea is the same.
Insulate System.dyn (133.1 KB)

Glad I was helpful.
The next step would be to simplify your graph. For example I can see that sometimes the same insulation thickness is used for different pipe sizes. I suggest you to learn to use Code Blocks for conditionals:


For a OR condition you need to use ||, for a AND condition you need &&.

You can also remove all your huge last part with one single block that gives you the instruction for the insulation diameter:

To learn better how operators and code block work in Dynamo, you can take a look at this great posts from @Konrad_K_Sobon:
and @solamour: DesignScript: A Robust Dive into the Language Underlying Dynamo


Does anybody know if there is a Dynamo node that would also be able to change the thickness of the insulation?