# How to Increase Tool Path Accuracy

Tolerances play a vital role in both design engineering and digital manufacturing. In design, the goal is to allow the broadest tolerance range possible while meeting your design specifications. This is because, generally speaking, there is a direct correlation between tighter tolerances and higher manufacturing costs.

In a typical machine shop today, components are routinely machined to exact nominal dimensions, regardless of tolerance range. This is a direct result of quality craftsmanship and the use of quality CNC software and hardware. Whether you’re cutting steel or wood – generating 2½ Axis or full simultaneous 5 Axis toolpaths, your CNC software must be of high quality and precision to meet the demands of today’s digital manufacturing requirements.

Here is a list of questions that new users typically ask regarding toolpath precision and tolerances.

- How accurate are the toolpaths I create in relation to my geometry?
- How many decimal places should I use to define my tool parameters?
- How does Arc Fitting affect the accuracy of my toolpaths?

There are a number of different issues related to precision and tolerances at work here so let’s take a moment to discuss each one and explain how it can affect others.

**Machine Tool Limitations**

Machine tools have the ability to follow only two types of curves exactly as defined in ISO 6983, the international standard for numerical control which defines the data format for positioning, linear motions and contouring control systems. These curves are lines and arcs (helixes are included here). Any other type of curve is usually followed only to a specified level of accuracy. This is because the kinematic joints of the machine tool cannot allow exact conformance to any other type of geometry. So free-form curves as well as other conics such as parabolas, ellipses etc. can only be followed by using a linearized representation of these curves.

Similarly, when machining 3D geometry almost all motions are performed as linear motions due to this kinematic limitation. This means that the CAM system has to output a linear representation of the actual curve or surface used for toolpath computations. This fact makes the accuracy and tolerance issues we discuss below very important for CAM users to understand.

**Double Precision Accuracy**

Internally, your toolpaths are defined in double-precision accuracy to fourteen (14) decimal places. Double precision accuracy is used also for all internal computations. However, for readability purposes the system only uses six (6) decimal places when displaying floating point values in the user interface. You can see an example of this by expanding your MOps folder for any toolpath operation and clicking on the *Toolpath *icon. This will display the *Toolpath Viewer/Editor*. The coordinate values for each GOTO motion are listed. As you select each motion the tool position is displayed on the part and the corresponding toolpath points are displayed in the *Toolpath Viewer/Editor *window. You will notice that the precision shown in this window extends to six decimal places.

**Geometry Tolerance**

A toolpath is only as accurate as the underlying geometry it is derived from. The geometry tolerance that you have set in your host CAD system will affect how accurately you draw in 2D and how precise you model in 3D. Most modern CAD systems use the 64-bit architecture to represent floating point numbers very accurately. In addition to this, they employ advanced mathematical representations for surfaces and solid models. These factors allow these systems to be very precise and can hold very high levels of accuracy in their internal geometrical representations as well as their computations. So as a general rule, in order to maintain a high level of accuracy during design, make sure that the *Geometry Tolerance* in your host CAD system is set to at least 0.000001” (0.000025mm). You can tighten this tolerance in special circumstances if needed.

**Machining Operation Tolerance**

Each machining operation has a global tolerance value that can be specified by the user. This tolerance is the allowable amount by which the toolpath can deviate from the geometry being used during programming. Due to the fact that machine tools can typically hold up to three (3) places of decimals accurately, the toolpath tolerance, in most cases, will not need to be as tight as the geometry design tolerance mentioned above. Users will typically set this tolerance value to 0.001” (0.025mm) for finishing operations and 0.01” (0.25mm) for roughing operations. Tighter tolerances can be employed for more stringent applications.

2½ Axis operations will have one *Tolerance *value 3 and 4 Axis operations will have two values (*Intol* and *Outtol*). 5 Axis operations will have a *Cut Tolerance* plus a *Maximum Angle* and *Maximum Distance* value. For curves and surfaces, these tolerances are the *Chord Height Deviation* used to calculate the path of the tool in relation to the underlying curves and surfaces. The *Tolerance *parameters for each Axis type are shown below.

**Arc Fitting Tolerance**

Arc motions can be output if they lie on one of the three principal planes (XY, XZ or YZ). When you choose to *Fit Arcs* (typically from the *Advanced Cut Parameter*s tab) you have the added parameter for *Fitting Tolerance (t)*. This tolerance defines the maximum deviation of a chord or segment of the original linearized toolpath to the fitted arc. It is recommended that this value be 2 times the toolpath operations global tolerance to allow enough room for the program to fit 3 consecutive points to an arc motion. If you need your arc motions to be within 0.001” of the part geometry, then set the operation’s global *Tolerance *to ½ of that (0.0005”) and your arc *Fitting Tolerance (t)* to (0.001).

**Post Definition**

If you need your motion coordinates to be posted as accurate as they are defined internally, then make sure your post definition is set to output the desired number of decimal places. If you edit the post and go to the *Motion *section from the left, you will find a value called *# of Decimal Places* located under the *Motion Coordinates* section.

For example, in the number 1/32” (0.03125”), for the extra fourth and fifth decimal places (0.00025”) to have any effect, you need to make sure *# of Decimal Places* in your post definition is set to 5. The *Post-Processor Generator* for the *Haas *mill post definition is shown in the example below.

**Let’s Review**

Here’s a recap of things to remember regarding toolpath precision and tolerances:

__ACCURACY IS ALWAYS RELATIVE__. Check ALL of your tolerance settings.- Internally, all computations are performed in double precision or in an accuracy up to fourteen decimal places.
- For designing geometry make sure your tolerances are set to at least six (6) places of accuracy.
- For toolpath generation using curves and surfaces, a global tolerance is used to control the deviation of the toolpath from the designed geometry.
- For the arc
*Fitting Tolerance*, two times the operation tolerance is recommended to allow optimal fitting of arcs. However,__DO NOT__exceed this recommendation for this may result in arcs that do not follow the design geometry accurately. - Check your post’s definition parameters to make sure you are outputting g-code with the number of decimal place values needed for the precision required.
- Make sure that your CNC controller is set to read and display the decimal place precision required.
- Remember that tighter tolerances will result in longer toolpath computation time as well as creation of longer programs.
- If you are computing multiple toolpath operations with tight tolerances and complex surface geometry, make sure that in the
*Machining*section of your*CAM Preferences*, you have checked*Always generate toolpaths in multiple threads.*This will speed up processing times by utilizing your PC’s multi-core processor if you have one.

## Leave a Reply

Want to join the discussion?Feel free to contribute!