Spiral to Arcs

Hi,

Is it geometrically possible to create spiral from arcs?

By spiral I mean this simple cylindrical spiral:

`` Curve spiral = NurbsCurve.CreateSpiral(x.PointAt(0), x.Direction, x.PointAt(0) + (new Plane(x.PointAt(0), x.Direction)).XAxis * r, pitch, turns, r, r);``

I think at best, approximately, because at no point is the spiral planar.You can do it in a succession of small arcs but youâ€™ll always have curvature discontinuities at the joins.

arc spiral.gh (10.2 KB)

1 Like

Hereâ€™s a simple trick Iâ€™ve used a few times; it also works with a cone if you want a tapered spiral (which I think should be called a helix.)

Thank you. The thing is that I need spiral arcs for CNC path conaidering cylider milling, I am wondering what would be the best approximation with the smallest amount of arcs?

I guess, the more arcs the better. It probably depends on what youâ€™re looking to optimize, and the accuracy of your machining. I calculated the relative deviation from circularity for one turn, for a set of arcs. Even for 4 arcs, the deviation is about .5%.

arc spiral deviation.gh (18.9 KB)

Back in the late eighties I did conical threads on rock drill rods (starting from 12") on a milling CNC machine using an old Heidenhain TNC-150 control system. I had the CNC to calculate â€śpoint-to-pointâ€ť straight movements using math formulas in a huge loop calculating the next point (ever shrinking radius as the machine rotated around the threads of the drilling bar). The â€śresolutionâ€ť of the small steps was parametric as well as the radius of the tool, and so I could control the feed-rate & cutting depth per tooth. I recall using ~0.1 mm straight lines for each step.

In those days there were no arcs in the TNC-150 CNC system (at least not to my knowledge). Anyway, even with the slow CPUâ€™s of 1988 (the machine was several years old at the time) it worked very well.

I used this CNC program for repairing worn out threads on 12" rock drill rods for a copper mine in the Northern Sweden (AITIK). We welded the old threads and then milled them anew. I donâ€™t remember how long the rods were but they were well over 20 feet, I think closer to 30 feet. heavy duty stuff.

// Rolf

Thanks just increasing divisions to 4 arcs per turn gives a very good tolerance.

Nice system, it looks interesting to see windows os on such a monitor:)

I am using arcs because robot is interpreting points quite slowly, so arcs runs faster by doing circular movements.

OK, I thought you were going to use a CNC lathe or milling machine.

// Rolf

Hi Petras, it might not be relevant or necessary to your problem. But just in case you missed it, thereâ€™s also the `Curve.ToArcsAndLines` method:

Thanks Anders.

I was trying to use this method as well.
I really had hard time to understand the correct tolerance values, because the spiral was always converted to the same curve.
//Arcs = spiral.ToArcsAndLines(0.01, 0.01, 0, 0);