Changing weighting over Catenary Vaults, finding shortest chain


I’m trying to change the weighting of the vertices of a mesh for a catenary vault so that the ceiling height is level at all points. I thought I could do this by assigning weighting of the vertices based on the length of the shortest chain it is a part of, but I can’t figure out how to do this?
I have managed to change the weighting based on distance from a point or a line, but can’t find a way to measure the shortest chain it is part of to then apply weighting to,

Attached is a grasshopper file with internalised data, the rhino file, an image showing the current solved vault as the bouncy solver takes 5 minutes to run if you start it, and an image showing what I mean by “shortest chain”.

Would really appreciate the help!
Many Thanks!

20230421 Vaulting Even Weighting Grasshopper Forum (281.3 KB)

20230421 Vaulting Even Weighting Grasshopper Forum Help.3dm (19.4 MB)

Hi @Lizzie_Higham

I think it would be helpful to first take a step back and clarify what is the intent here.

The input looks like a city map, and you want to create a single vault over the entire thing?
I’m also confused about what you mean by having the ceiling height level at all points - a catenary vault cannot be a horizontal plane. Where does finding the shortest chain come into this?

Also, generally I recommend using the regular ‘Solver’ component whenever in doubt. The BouncySolver is just to see the bouncing for if you want that visual feedback (though if you’re trying to relax a mesh of an entire city block it won’t be at interactive framerates anyway), but the regular solver is faster.

Maybe the ask is for a pseudo-medial axis to establish a consistent height “roof” ridge line?

This wasn’t what I was asking for in this post, but is now my alternative method I am looking for, if anyone could advise as to how to do this then this would be really helpful! I also used the solver instead of the bouncy solver and it is so much faster thank you for that tip!