# Sorting elements by coordinates alligned to a diagonal line

Hello all,

I have created a workflow that allows me to sort and number all selected structural foundations based on their x and y point.

This works great for buildings without diagonal floors in a floor plan, see the screenshot below as clarificationâ€¦

The structural foundations in the top part of this building will be numbered incorrectly since my workflow just sorts the elements based on their X and Y point.

Would it be possible to draw a line paralel to these foundations and sort them accordingly?

Since English isnt my first language i am having trouble explaining what is going on, to clarify see below what happens if i run the workflow:
In green the desired numbering and in red the numbering how dynamo numbers the foundations at the moment.

A list reverse wouldnt work here because the next row of columns need to be renamed accordingly.

In short: I want to sort elements not by revit coordinates from base point but from an line allignmentâ€¦
I hope this is clear enoughâ€¦

My workflow:

Looks like you already have your grids, why not try something like this:

• Select a grid order to number by (longitudinal or transverse)
• Sort the grids grids by their mark.
• Get the location curve of the grids, make sure they move in the same direction (tangent vectors all with a positive X Y values or all with a negative X Y values ) and reverse any grids that donâ€™t follow the pattern.
• Pull the same direction grid curves onto a plane.
• Get the location of the foundations and pull that onto the same plane as your grids.
• For each location point, find the nearest grid curve (minimum item by key will help here)
• Group the foundation elements by their nearest grid curve
• Pull the location point from the grouped foundations
• Find the point closest to the associated grid curve for each grouped foundation point
• For each foundation point on the grid curve get the associated parameter on the grid curve.
• Sort the grouped foundations by these values.
• Flatten the list of foundations and start numbering.