Duct Tagging Using Conditional Statement

Hi All,
I just make a script for tagging ducts which length is above 2000 mm. So what i have done is firstly tag all the ducts using Tag.ByElement. Then I want to filter the length which is below 2000 mm so i take Node List.FilterByBoolMask it works smoothly. But the problem is when i connect List.FilterByBoolMask output to Tag Element input it shows something is Wrong. Can anyone look into it. It would be helpful.
(See Below attached Snap)

Thank You

If you look at your filtered list you’ll see you’re now providing a length instead of an element to be tagged. The mask input for FilterByBoolMask has to be a list matching the list input. For each item in list there needs to be a respective boolean in mask that determines which output the item gets filtered to. In your case you would check the duct lengths to be >2000 and then filter the elements, not the lengths like you’re doing currently.

Thanks. your Suggestion is working

But What if i want to filter list (Which Contains Length).

I’m not sure I follow. The list input is the list that gets filtered. If you wanted to separate the lengths then you would supply the lengths list. However, in this case, you need to supply an element to be tagged so you filter the elements based on length.

Thanks. Its Working. (Accepting as a Solution)

Related note: your script can potentially tag rise/drop (vertical) ductwork unless you are intending to manually select horizontal ducts via your Select Model Elements node. You may want to consider adding a duct slope filter depending on what your final goal is.

1 Like

Thanks for your suggestion.