0.7.5 Select Divided Surface Families only selects half of the panels on surface


Has anyone experienced this issue when using ‘Select Divided Surface Families’ node to select curtain panel pattern based families on an existing divided surface? Dynamo + Revit seems to only select every other panel.

any thought?



Folks - Here is a visual of how the node is selecting the divided surface families (curtain panel pattern based . rfa ) . You can see in the two images the 'every other ’ selection. In this case, the process is using an images brightness to control the aperture of the curtain panels. The current capabilities limit us to only being able to modify the panels we can select. If we cannot select all panels then the process is not working.

Image Test_Select Divided Surface Families Image Test_Select Divided Surface Families_2






Keep in mind that the order in which the panels are selected by this node does correspond with the way dynamo is able to sample the image. This pattern is unique and working in specific direcitonality. Selecting all instances of the family will not work; the order in which those nodes and that procedure operates will not correspond correctly with the image sampling data


Divided surfaces and curtain panel pattern based families are essential to being able to virtually construct complex architecture within Revit.


A) The selection using Select Divided Surface Families executes the selection beginning at bottom left of the surface moving towards the right, growing up in columns, restarting from the bottom at each column.

B) The selection using All Elements of Family Type selects elements by numerically , by Element ID, sorting from least to greatest. The pattern of creation of these curtain panels, and thus the selection order, is an expanding rectangle starting from the bottom left of the divided surface

Select Divided Surface Families VS All Elements of Family Type




Brian, that looks like a really frustrating bug. You should definitely report it on Dynamo’s issues page ( https://github.com/DynamoDS/Dynamo/issues )


I can only offer you a temporary solution. Zach Kron has made a great custom node for sorting curtain panels. Based on that node, I’ve made something similar for divided surfaces.

I’ve tried to stick only to nodes found in the default dynamo library.

The below workflow was created on Dynamo 0.8. On the outside things are pretty straight forward. I fetch the panels with “All Elements of Family Type” because that seems to be the only way to select all panels:


You’ll notice I’m extracting a parameter. That’s a reporting parameter inside the panel family, giving me the height of each panel. That was the fastest method to get an average row height.


Once we go inside the custom node, things look very similar to Zach’s “CurtainPanel.Sort” node. I suggest using bounding boxes to extract datums from your panels. because that seems like the least taxing method.


Finally there’s another tiny custom node that is used to equalize our Z values for easier sorting and grouping.


Due to the fact that we’re using bounding boxes, the end result is pretty spiffy. You can find the dynamo files below.






Dimitar -

Thank you for the inputs for this topic. I will try to implement this work flow on the project and will post with results.


Dimitar -

This method for sorting the families works for this test case; only a couple small adjustments in the graph. The reporting dim is not needed when sorting using Point.Y as first order. Math.Round is necessary to prevent the occasional error that occurs when xyz values of two different elements are similar beyond a certain decimal count. I have dealt with this issue before.

Back to the original issue, if you were to have multiple divided surfaces, perhaps in a box where the vertical faces were made into divided surfaces, selecting the panels in desired order would require a different sorting node depending on the axis and/or a different family type for each individual surface.


A similar approach as above might work for a “box” of divided surfaces if you manage to separate the panels belonging to each of the faces in its own group.


Yes, the node works for any surface of the box by using x-min, x-max, y-min, y-max for the appropriately oriented surface. For a horiztonal surface, just switch our the Point.Z for a Point.X or Point.Y . The trick is the management of the same family on different faces; that is likely a function that can happen prior to passing the elements into the sorting function. So far, a successful work around.