Relative Tolerance Settings

I’ve been running into what seem to be to me strange issues with my tolerance settings. I’m spending too much time rebuilding objects. I’ve been doing my due diligence (for example, here, here) and solving most of the issues I’ve been running into on my own, but I’m still getting a fair bit of what seems to me weirdness:

(Makes me wonder what I’m doing wrong to make Rhino ask me about tolerances smaller than a trillionth of a millimetre, and why Rhino didn’t join them in the first place).

I’m not looking for a fix for a particular issue, but rather to increase my understanding of the underlying causes (I went looking for example objects but I fixed them all).
The information I’ve found so far on relative tolerance settings is a bit vague:

“The relative tolerance is used on very few commands and can generally be left alone.”
“Sets the relative tolerance used in some commands. If, in those commands, the relative tolerance is smaller than the absolute tolerance setting, the relative tolerance is used instead.”

  1. Can anyone offer some clarifications on what the relative tolerance settings does in Rhino and which commands use it?
  2. Are there any other factors that affect these settings? For example, precision issues as objects move away from the origin, i.e. is the precision of a detail 0.01 mm 300 mm away from origin degraded?

[FYI, for background, generally in my scenes, the largest objects are 300 mm, while smallest details are ~0.01 mm, and scene extents about 500 mm. My file absolute tolerance settings are 0.001, and I’m using the default relative tolerance and angle settings 1 percent. There are often many long narrow, tapering, curvilinear shapes/ curves within my designs. This makes me wonder that at the scale I’m working at if the angle and relative tolerances aren’t set tight enough. Anecdotally, I’ve notice that I’m having precision issues with very acute/ sharp angles & tight corners, especially after having made trims & fillets and trying to join back to original surfaces (for example the ends of surfaces won’t meet up precisely after trimming surfaces against themselves. Thinking about the tolerance settings in combination with operations involving approximations is what has led me to think my tolerance settings are off.
I like to think I model cleanly and I’m following correct procedure and modeling methodologies (I trim surfaces with other surfaces as much as possible; use original surfaces for the the creation of new surfaces (instead of extracting curves); CheckNewObject is always running; I’m careful about the order I join surfaces; etc. But often I get a step or two away from the original surface, I get naked edges, naked micro loops, and/ or bad objects. Sometimes it seems I just can’t manage to avoid the issues no matter what I do. Then it’s time to walk around the building a few times.]


Hi Andre- if you are joining objects using JoinEdge (not, generally a good idea - see Help) then this tells you how much ‘override’ of the document tolerance is needed to tag these edges as joined. However, in this example. the distance is very small and no doubt Join will work just fine. JoinEdge allows you to join edges that are outside the normal Join tolerance for the file- this can be handy in special cases but is not recommended as a rule- use Join, and if Join fails, fix your surfaces (perhaps untrimming and re-intersecting to get a new trim curve for example) so that Join works. The little nuisance micro loops that were plaguing you before can usually be legitimately fixed wirth the Test commands we mentioned earlier.

Also, ‘relative tolerance’ is hardly used at all in rhino and this setting will be removed in V6- it only causes confusion.


Thanks Pascal,
That’s kind of what I thought. In the particular case where I generated the JoinEdge dialogue, I had created a straight edged loft from the surface edges of two mirrored simple surfaces. I wanted to know why I was getting naked edges. I’ve been using it sometimes just to see how far out of alignment the surfaces are, then undo and rebuild.
I’m generally trying not to use JoinEdge if possible for the reasons you mentioned (seems like it can be a final work around if it the very last step in the modeling process and the tolerance is minimal, but it doesn’t seem like a great solution if one is to continue developing further geometry from the surfaces).

If you’re finding that Rhino is refusing to join something that has a deviation of something e-13, please post a sample file of the problem, as this shouldn’t normally happen - there may be something else going on…


Yup, next time it happens, I will. I did look for a version of the file before I posted (as mentioned in the post, I looked for an example but I had fixed them all). I didn’t think to save out a copy of the file at the time I saw the dialogue box (at end of a long day, I only thought to complain ;p, I snipped the screen cap last night intending to post today).
Occam’s razor suggests it’s most likely user rather than a software error in any case.