Absolute Tolerance - Set and leave alone, and other good practices

“Absolute tolerance” is the amount of deviation from the “exact” solution Rhino will allow when a curve, edge or surface resulting from various operations cannot be modeled exactly using NURBS. For example the curve resulting from intersecting two non-planar surfaces will ususally not be exacty a NURBS curve. Rhino can create a NURBS curve which approximates the exact curve within almost any desired level of accuracy but as the maximum deviation from the exact curve is reduced the number of control points will increase. (The finite precision of digital math can limit how close to exact is possible but this limitation is generally much smaller than the needed accuracy.)

Absolute tolerance is a document property which means it is set and saved in the model file. Open a different file or start a new project with a different template and the absolute tolerance may be different.

Absolute tolerance can be found and changed at:
Options or DocumentProperties > Document properties > Units > Units and tolerances > Absolute tolerance.

Absolute tolerance is distinct from the accuracy of the surface meshes used for display.

Set the absolute tolerance at the beginning of a project, and then leave it alone. Varying tolerance while modeling will typically lead to some operations failing.

After geometry is created changes to the absolute tolerance setting should be limited to increasing (making bigger) the absolute tolerance. Rhino does not recreate geometry previously created with a larger tolerance or smaller tolerance after the tolerance is changed. Geometry previously created with a larger tolerance is likely to cause operations such as Join to fail when the absolute tolerance is made smaller.

Absolute tolerance should be at least one order of magnitude smaller than the minimum size of details being modeled and the smallest manufacturing accuracy.

Absolute tolerances should be between 0.01 and 0.0001. Settings of 0.1 and 0.00001 will usually not cause problems. If an absolute tolerance smaller than 0.0001 is needed change the units to smaller units, ie mm or cm instead of meters or inches instead of feet.

The penalty for too small a tolerance (but not smaller than 0.00001) is more control points than needed, ie the geometry will be “heavier” than needed.

Rhino does not arbitrially add deviation to geometry. If the calculation results are better than the absolute tolerance the accuracy will be retained.

If a Boolean or other operation fails fix or modify the geometry as needed. If the absolute tolerance setting is smaller than needed then it can be increased but the larger tolerance should be retained. Absolute tolerance should not be made larger so that an operation works, and then reset to the original smaller value.

More about Absolute tolerance at Understanding Tolerances [McNeel Wiki]


if i may add a bit off topic but not much i hope.

i never understood what Relative tolerances were for. the wiki says it was used in only a few commands, but which it does not mention, also does this feature actually still exist in the mac version even though it is meant to be removed as it says.

from the wiki

3.1: Relative tolerances in Rhino

The relative tolerance setting is no longer present from Rhino V6 and up. Up until Rhino V5 is was used on few commands and could generally be left alone.

Have you encountered “Relative tolerance” in Rhino for Mac V6 or V7?

In Rhino for Windows V5 and earlier “Relative tolerance” was set in Document properties the same as “Absolute tolerance”.

My understanding is Relative tolerance was only used by a handful of commands, and the uses were similar to Absolute tolerance but checking deviation on a relative rather than absolute basis.

in V7. not sure about V6 now since its not installed. was it generally reintroduced in V7?

i still have no idea… relative to what? it would still be interesting to find out which commands were actually effected and why it would in obviously rare and actually neglectable situations might have made sense to change it.

Post when you see relative tolerance in V7 again, My guess, and only a guess, is a command or several commands may have a user set parameter labeled “relative tolerance”. I assume it does not appear in document properties in V7.