My client has requested that I add insulation to our pipework, which isn’t too big a deal, right?
But…
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
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.
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?
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.
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
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: