Point order issue for surface after boolean or split operation

As shown in the GH file attached, I have a surface (image 1) which was split by two lines, resulting in the surface shown in image 2, for which the order of the corners seems to be scrambled.

What I want to get is a surface with order of corners like the one shown in image 3 (In this case, for illustration purpose, it is created from a polyline drawn along the corner points of the booleaned surface).

May I ask if there is a way to re-order the corners for surface after boolean or split so that it is following the order of the edges?

image 1:

image 2:

image 3:

point order issue for surface after boolean or split operation.gh (16.1 KB)

this might be one way


point order issue for surface after boolean or split operation_Re.gh (20.0 KB)

but I suspect there might be much easier solutions :slight_smile:

1 Like

Hmmm… You can use Discontinuity on the trimmed surface to get a sequential list of points but (oddly) must reverse that list to preserve the resulting surface normal direction. The Shift List seems optional and arbitrary?


point order after surface split_2021_Jul6a.gh (14.4 KB)

1 Like

thanks, @inno and @Joseph_Oster

To both: what if we want to fix the original position of the starting point along the curve after sorting the corner points automatically, rather than using the shift list component to do it manully?

I found the following case in which the surface normal was not kept. Do you have any suggestion on how to maintain the surface normal after reordering the corners along the curve? (Of course we can have a seperate workflow to flip the surface if the new normal is the opposite to the original one)

Thanks.

the sorting order of the points used to create a surface should determine the direction of the surface normal (it can of course be flipped afterwards…)

as far as I know, by looking at 3 points sorted in clockwise order you’ll get a surface with normal directed to your eyes, like this:

a question to better understand what you are trying to achieve: your original input that you want to tuse to get your final surface is a list of points, lines, or another surfacethat has been trimmed?