# Converting spline/nurbs to lines and arcs

Cheers everyone!

I’m having a shop bend me a 25mm steel tube.
Problem is, of course, their tooling requires predetermined radii (38, 40, 55, 60,5, 80mm) for the part to be made. I’ve modeled the tube simply by piping a spline > and so there are many progressive radii happening here.
How would you suggest I go about converting or rebuilding the original spline to lines and arcs of said radii as accurately as possible? Sorry if I’m mixing terminology here. Splines - Nurbs, Potato - Tomato.
Edit: I forgot to mention that obviously they can bend in any radius larger than 80mm using rolls.
mean-curve.3dm (2.4 MB)

i believe your object could be described through a few radius dimensions, because the transitions between the bends are almost straight. for this call the command Curvature, check the option mark Curvature and it will indicate with a few points where the local minimum radiuses are. then just click them or between them in case there are 2 close to each other.

or you do the same from two perspectives only using make2d on the front and on the right perspective, i guess that should suffice depending on how they will work

Hello - the `Convert` command may help - it may be tricky to get a small enough number of arcs that still matches the curve - set Output=Arcs. AngleTolerance to zero in this case I think (means it will not be considered) and set a MinLength - that may not be completely respected but it may help and then play with Tolerance - it looks like maybe .2 gets a reasonable number of arcs - it may be good enough to start with, then you can perhaps simplify some areas by bridging between arc segments using `ArcBlend` for example.
mean-curve_maybe.3dm (62.9 KB)

-Pascal

Thank yous!

I’ll have to look into both strategies. The convert and arc blend commands were friends I didn’t know I had…
I’m not familiar with tube bending so I don’t know what kind of tolerances the shop prefers, but obviously simpler is always better… Also the mark curvature really helps in understanding a complex curve much better.
There’s probably no way to determine a set of radii? I would imagine this could be useful in some cases. Maybe a grasshopper definition?

when you use Curvature the radii for each circle should be listed in the history line. you can also use dimdiameter or dimradius and in any way you can use the command Lenght to determine C whilst C = 2r π meaning r = C/2π

I obviously do not know what specific equipment your shop will deploy, and have not looked at you file, however…

If they’ll utilize what I’d guess they possess, typically they’ll require minimal length of straight sections between your conforming (to their stock tooling) curve radii. Otherwise you need expensive custom die(s).

Some CNC benders have added capability over what I’ve described, and the freeform benders have further capabilities, with specific limitations, mainly tolerance and tightness of bend.

Edit - I’d add that marvelous things can be done by a skilled metal worker/sculptor with a torch and a bunch of hand tools/jigs, if it’s a one off…

Edit - I’d add that marvelous things can be done by a skilled metal worker/sculptor with a torch and a bunch of hand tools/jigs, if it’s a one off…

This was my original strategy but due to time constraints I could only get a bigger shop to help me out, believe it or not.
Especially in this case it would be much easier to just go for a hands on approach and make changes on the fly.
But thanks for clearing out the process. I’ll probably give them a call to ask for tolerances etc.

I ran into this issue recently as well. I used bi-arc with galapagos to seek the set of arcs with the least deviation from the source spline.

Bi-Arc is helpful as it takes start and end tangents for each point on the source curve.

The Gene Pool is curve parameter values from 0 to 1. That list is sorted and then 0 and 1 are inserted at the ends of the list. Then I make consecutive pairs of those points and use those points and tangent vectors to build the bi-arcs. So two arcs between each pair of points.

I measure the max distance between the generated curve and the source curve and have Galapagos minimize that with the annealing solver.

spline to arc optimizer.gh (23.2 KB)

1 Like