Bridge Edge Loops curve ordering

How does the Bridge Edge Loops function determine the order in which to process curves when more than two curves are processed at one time?

I have a long list of curves that I would like to bridge into a surface with the z-dimension determining the ordering (in my case each curve is planar with a unique z so this is well-defined), but sometimes the function uses a different order. What can I do to ensure the ordering that I need?

For example, here are three curves bridged into the surface that I would like (order 1-2-3):

but a small change in the bottom curve results in the surface instead becoming (order 1-3-2):

Any tips would be appreciated, thanks.

Have you tried fiddling with the Bridge Edge Loop options? Press F6 when you run the script and tweak the settings, see if you can get it to work:

If you’re already tried this and it doesn’t work, it may be easier to just do it by hand…

Closest will bridge. As with everything, unapplied and non-uniform object scale could make the result something else than what is showing in the viewport.

Thanks benu. I actually need this to run as part of a script with user-defined curves, so doing it by hand isn’t an option, but I will play a bit more at the settings.

JA12, I’m not sure I understand what you mean by “closest will bridge”. In my example, the only difference between the two cases is that in the second, the bottom curve has been extended to the left by 3 vertices. (And the objects definitely have the same scale.)

Thanks again, any other input would still be helpful.

This functionality is built in Bsurfaces addon already. @13:50

Three edge loops bridged. The order changes based on which ones have their vertices closer to each other. Bridged loops on the right get the order left-bottom-up because left and bottom are 2.147 BU apart and bottom and loop on top are 2 BU apart. Left and top are furthest so the bridge doesn’t go that way anymore.

JA12, thank you for the explanation and helpful example.

Eppo, I think you’re right, I will probably have to use Bsurfaces after all. Thanks for the recommendation.