I then tried to create a sim with Kangaroo which restricts mesh edges to 0.80 but the solver figured the best way to do this is to completely planarize my mesh, is there a way to retain sharp features, I could not find a similar goal component.
One of the first issues I see is that the target geometry contains features narrower than your desired edge length. It’s impossible for a mesh to match these edges and corners with that restriction:
For the Kangaroo part, the ‘LengthFactor’ input of the ‘EdgeLengths’ component you are using is a multiplier for the initial edge length, so if your initial mesh has edges varying in length, the target lengths will also vary.
It sounds like what you want is a single target edge length for all edges, regardless of their varying initial lengths. For this you need to instead extract the edges and use a ‘Length’ goal.
What about your other ‘rules’ such as the desired length (0.8) and/or range (0.7 - 0.9)? Regardless of face/vert count, I guess what Daniel points out is key regarding existing boundary edges that are below the lengths in discussion. With Kangaroo you can ‘clamp’ the line edges between min/max values, which will disrupt your boundary shape when anchors are allowed to move a bit - and if they shouldn’t move (because you wish to keep your boundary) then you can’t adequately clamp these lenghts.
I’m discussing in relation to my limited knowledge of kangaroo, of course - I suppose there are other methods, probably more robust via an iterative plugin or using something like the good 'ol plankton remeshing machine thing.