Pick specific mullions from a curtain wall



I need to change the curtain wall mullions on top of a certain kind of curtain panel. I though I could do it by filtering those with Z length equals to 0, then measuring the distance to a control point. The lowest values on each list should be the mullions I want. However, the mullions turn to curves after a few steps… I guess I need to turn them back to mullions, but how?

Vergas.dyn (34.0 KB)


Without seeing the results of your nodes, it´s a bit difficult to give you the most appropiate answer, but I guess a Filter by Boolean Mask can help in this case, with elements to filter as the mullions and the booleans are the points that fulfil a conition.


You’re right, it is difficult without connecting the nodes. The issue is that as I filter de mullions by the location curves, I’m no longer working with mullions but the curves. And that’s why I disconnected them. Makes no point, since I can’t retrieve the mullion type anymore.

You gave me a good tip, though…


Mmmm, the good thing about lists is that they keep the order of their elements. So as long as you don´t modify the length or alter the order you can always retrieve the corresponding elements from the start point.

Have a try and let us know how did it go.


Here’s the result. Yes, now I’m filtering actual mullions, but I guess I’m not explaining what to filter properly. I hope the image is clear enough to show the result must be 4 mullions segments instead he 2 listed.


Sorry… I’m new to this forum and the screen shows says “post withdrawn by author”.


Apologies that was me, I thought I had it then realised I’d made a mistake… see if this works for you…



Edit: Obviously if your curtain wall is not a regular top you’ll need to work a bit harder to get the highest mullions (perhaps group by host?) but maybe this gives you some methods you can make use of :slight_smile:


Thank you so much, Mark. Looks very promising. I’ll assemble it and see if gives me the information I need. The whole point here is “dynamo, if I have panel type X, then change the mullions right above to type Y”.

What I missed from your example is the “x” code block after CurtainPanel.SupportingMullions. What is this branch about? I’m new to the forum and Dynamo as well.


No worries,

I keep the list of Mullions and Lines structured the same.

I take a property of the Lines and establish a list of True and False.

When I filter the Lines, I also filter the Mullions… This keeps both lists consistent…

So eventually I can retrieve the mullion I want.

Hope that makes sense.



Makes perfect sense. I’ll probably get it better as I replicate here. I’ll get back to later and show the result.


That’s what I could put together so far. I had to do a little bit different, since I have a tall building and need to switch multiple mullions at a time.

We’re separating correctly the horizontal mullions from vertical ones. In my graph I’m not flatten the lists, so I can check panel by panel which mullions are the top ones (shortest distance to check point) to put in “to change” list. But I can’t figure out a way to say to Dynamo that the mullions will make to the “to change” list if they’re the only horizontal ones around that specific panel.



TBH it’s difficult without a sample file.

In an example like this…

You could have a top panel that’s lower than an adjacent mid panel.

So the only way to identify the top panels (and get their top mullion) is to group the panels in some way.

As suggested above, ‘group by host’ is an option, there are a few other nodes that also do similar things :slight_smile:

Here’s my version…

Hope that’s of interest :slight_smile:


1 Like

I appreciate your effort, Mark. Thank you so much. I’ll break down my ideas to help you to help me :sweat_smile:

Here’s a snap of my sample file (rvt 2019 https://we.tl/t-6VI3nSGwLg). I now that eventually there’ll be some sliding doors (the green ones). So I pick panel by type and filter the horizontal mullions. Between these mullions I’ll have some at the bottom of the panel and some on top. The top ones need to change their types. The catch is: depending on the panel, sometimes I have bottom mullions, sometimes don’t.

I’m also sharing the dyn as it is right now.

Vergas.dyn (38.5 KB)



No worries, so as I understand it…

The task is to insert doors.

You will swap every panel of a certain Type, and replace it with a Double Door…

You will then delete the mullion under the double door and change the top mullion type…

Is that right?




No, the doors are already in the model. I need to change the mullions on the top of each panel, so the doors (or any other special panel) is structured right.

The graph don’t need to change the panels because they’re already there. But not always I’ll be working on sliding doors. Sometimes I’ll be windows, so there’ll be some bottom mullions that I’ll not change (at first).



Umm… I don’t really understand, but here is my go :smiley:

Vergas-MKA.dyn (33.1 KB)


Hope that’s useful!




I couldn’t figure what did different yet, but apparently is working fine! I tested on my dummy model and on my actual project and could retrieve the right mullions.

I’ll complete the graph with the nodes to change mullion types later.

Thank you so much for you patience, @Mark.Ackerley

1 Like


Do you mind walk me through nodes List.Chop and List.AllIndicesOf? I didn’t understand the logic behind, although it works great.


Hey, so obvs it’s all about keeping the lists working…

The List.MaxItem gives me a flat list of numbers so I need to restore the list structure, otherwise I can’t tell Dynamo that I want the Max @ 0 from List @ 0, the Max @ 1 from List @ 1 etc.

Then when I put those through the ‘all indices of’, I get a nice list of the maximum items, with it’s structure being the same as the original list of mullions… So I can get those mullions with the same indices as the max items.

Hope that makes sense!

Best just to play around with the levels and see what they do :slight_smile: it’s hard to get your head around it all.



1 Like