Filtering by 'System Type'

Hi Everyone,

I couldn’t find anything which already answers this so thought i’d post to see if you can help me.

Element.GetParameterValueByName when trying to search for “System Type” seems to return a system type ID rather than the system type value. I am trying to search/filter for pipes on a system type called “PH - Domestic - DHW - Flow”, some of the pipes selected are definitely on that system type but the list comes back all false, see below;

Is there a way to be able to filter by the system type value?


Sorry, figured this out myself, just needed a Element.Name node from the system type ID list;


Hi just wondering how does this script work? I am trying to filter out different pipe types and group them. Like a group for the sanitary and for waterline. Anyone knows how to do this?

Hi @therainbowmaker, just describing the script above; The select model elements node requires the user to physically select the group of elements that want to be filtered. I was using this to select a group of pipes after i’d already filtered the Revit 3D view to only show pipes but on various systems, then you need to select multiple pipes by fencing (i think that’s the correct term, i.e. dragging a box over the pipes), otherwise if you try to click on each pipe it’ll only select the last one you clicked.

Then the script firstly looks for the “System Type” parameter of each of the selected elements and lists it out. This only gave me the element ID and not the “System Type” so i then used the “Element.Name” node to get the “System Type” of all the selected elements in a list.

The “==” node then checks to see if what is connected to it’s x input matches what is connected to it’s y input, in this case it checks the list of element system types against the system type I am looking for, which is “PH - Domestic - DHW - Flow” in this case. This then produces a true/false list, i.e. true if they match and false if they don’t.

The last node “ListFilterByboolMask” then compares the original selected list with the true/false list and splits the list between true & false, then you can choose if you want to use the true or false answers (or both) for something else, like writing to an excel sheet or simply creating a new Dynamo list etc, this is done from the In or Out connectors on the bool mask node.

I hope that clarifies. It could be more automated by having some other nodes to get a list of all pipes in the project, but for my purpose I was happy to filter the Revit 3D view and select pipes manually. The same could be achieved by setting up a Revit schedule in your project and not using Dynamo at all, but this was quicker to setup for me in this instance.