Well, several bits of advice I can offer here…
First, find a different CNC shop, one capable of handling splines… There are many shops with poorly adapted software/hardware for this type of fabrication, but those that can handle it are out there. It’s not just about CAM software, although that can be part of the problem, it’s also about the CNC machine(s) they have and whether they are capable of interpolating lots of small segments together at a reasonable speed to cut spline-like curves. Most CNC machines only understand lines and arcs, so in order to cut free-form curves with any reasonable degree of accuracy, they have to be broken up into many small segments (tessellation). Whether those small segments are lines or arcs doesn’t matter that much if there are many of them… If the machine is not able to string all those together and cut smoothly, you won’t have a satisfactory result.
The idea behind “arc fitting” is to replace a number of small straight segments representing a tessellated free form curve by a (much) fewer number of tangent arc segments. In theory, this is a good idea, but as complex free form curves cannot readily be approximated by just a few lines and arcs, the larger the segments you want, the further off the original curve you will end up (larger tolerance).
So, a good CNC shop that can cut freeform curves has software and machines that can take CAD splines and use the CAM software interpret them as dense polylines (lots of small straight G1 interpolations), and have the machine control system process the data and manage the kinematics of the machine so the cutting happens smoothly without vibration or interruption.
All that being said, about your file…
I didn’t see the original slice curves in the file, looks like the slices have already been “processed” into polylines (don’t see any arcs), and the result looks kind of choppy… I created an example file using the first slice - which is a polyline having 431 points.
What I did first is attempt to recreate what your original slice curve might have looked like - it was certainly a smooth curve, not a polyline. So the blue curve is an “approximation” of what the original slice might have been - a degree 3 freeform curve with around 60 points… You would not have to do this, I just tried to start with something like what you started with. (I would not necessarily rebuild the slice sections as you said you do, that is not necessary for the following steps and will only introduce more inaccuracy.)
I then copied over the curve - twice, one on top of the other - and locked one copy for reference. Withe the other copy (blue) I ran Convert with the following settings:
Output=Arcs SimplifyInput=No DeleteInput=Yes AngleTolerance=1 Tolerance=1 MinLength=0 MaxLength=0 OutputLayer=Current
That resulted in a curve (red) composed of 132 arcs that should be tangent to each other to within 1 degree. You can decide for yourself whether this is better than the original. Making the angle tolerance finer will result in more segments closer to tangent with each other. Unfortunately, Convert is not currently capable of combining a fine angle tolerance with a coarse chordal (deviation) tolerance; you cannot specify for example 0.1 angle tolerance with 10 unit chord tolerance and get fewer arcs further away from the original curve but with better tangency (which would be nice…).
Anyway, since this is an object that will (apparently) get glued together and then heavily sanded into shape, you can support a rather large tolerance, so the trick will be some experimentation to find what settings work best for the machine in question.
Sample Slice Convert.3dm (94.2 KB)