Tolerance Problem in Rhino 7

Hey there,

since updating to Rhino 7 i find myself often faced with the problem that Rhino 7 is not able to find intersections between two clearly intersecting closed Polysurfaces or Extrusions. Especially when using BooleanSplit or BooleanIntersection. When i reduce my tolerances its working correct but i can not adjust my tolerances each time im analyzing intersections.

My absolute tolerances in Rhino7 are 1-E06 and my angle tolerances are 0.001.
I know these are ridiculous tolerances but i often have to exchange Data between CADwork3d and Rhino so i need these tolerances. Actually i need 1-E07.

When i set my absolute tolerances in Rhino 6 to “1-E07” the units Textbox is showing me “0” but when i check sc.doc.Model.AbsoluteTolerances it`s showing me the correct Value. So except of the “0” in the units Textbox in Rhino6 everything is ok. Even with these tolerances the intersections and boolean operations are almost never failing.

When i set Rhino7 absolute tolerance to 1-E07 the Textbox is showing “0” and when i check sc.doc.Model.AbsoluteTolerances Rhino 7 is showing me “0” as well. When i then reduce the absolute tolerances to 1-E06 the textbox and sc.doc.Model.AbsoluteTolerances are showing the correct values but the intersections are failing from time to time.

Will Rhino7 be able to handle absolute tolerances like 1-E07 ?

Attached i am sending you an example file.
Examplefile_Intersection_R7.3dm (106.0 KB)

Kind Regards


Unlikely. Rhino is just not designed to work with those tolerances. I don’t understand the necessity for that kind of precision with cadwork - that is a timber construction program, nobody needs or can hold tolerances like that for timber construction.

Hmm … we use Cadwork for generating BTLX/BVX Files… this is often the fastest and easiest way for generating production data respectively NC-Code. Basically this is the industy Standard in the timber Industry for generating Machine-Data. If the tolerances are below 1-E07 the angles and machine paths are not always calculated correct and the machines are freaking out.

Believe me we had this discussion a lot in the last 5 years. Nobody needs these tolerances they are just causing problems. Do other ACID-CAD Systems cause the same problems or is this just a Cadwork Problem ?

I’m assuming that dimensions are in mm? 1e-07 is 0.0000001mm. Generally a good Swiss watchmaker might be able to hold machining tolerances in the 1 micron level, i.e. 0.001mm and maybe design at the extreme tolerance level of 0.0001mm to be sure. This for designing ultra-high precision things that are 50-100mm in size, in materials that can hold those tolerances like metal and ceramics.

Your tolerance demands are 1,000 times smaller… for pieces of wood. Large ones at that.

Hi Patrick,

It seams not, an absolute tolarance of 0.001mm or better 0.01mm works fine with your file. Don’t care about the angle tolarance setting, as i remember right, it is just used for some commands (e.g. spiral).

Good luck


P.S.: tolarance is a compromise, which should be set wisly. 1e-07 mm would increase the parameters of the trim curves insanly.

I know… i know … at the end its just a rounding problem and a problem of the BVX/BTLX Standard... a 40.0001 thick board results in a 40.0001 thick board an not 40.0000 so the CAM Software will not recognize that its a 40mm board an so on. An Angle of 90.0001° Results in 90.0001°…

But… if you have 50 Meter long beam and you are 0.001° out of angle… the BVX/BTLX standard will give you on one end of the beam a fine cut or pocket but on the other end of the beam you will maybe have a precision problem depending on your construction.

Hi Patrick -

In that sentence, “below” sounds like anything smaller than 0.0000001 will cause problems…

Apart from that, Rhino is, and always has been, happiest with the tolerance between .01 > .000001 (1-E06). That means that, outside those settings, some things will work, other things not so well.

If you really need 1-E07, and depending on the overall envelope, you can always create your models in the Nanometers unit or use the Custom unit and make sure to keep tolerances within the .01 > .000001 range. When you then export, you can always scale up.

It’s not clear to me which file format you are using for export and if the receiving application checks the Rhino tolerance settings…

Yep, true an angle difference of 0.001° could result in an error of a little less than 1mm 50 meters away… I think it’s hard to hold tolerances a 50m wood beam to within 1mm personally.

This is again a bit the “far from the origin” problem… To hold a good tolerance locally in a machined pocket that is very far away from the beam “origin”.

I understand… but unfortunately this is how the BVX/BTLX standard works… maybe i have to start a discussion with cadwork. Since the whole timber industry (especially in the freeform sector) relies on the combination of cadwork an rhino there needs to be a solution. On short-term it is sticking with Rhino 6 but this seems to be a bit sad.

We’re talking about a problem here with the limitations of double-precision math on a digital computer, no Rhino can’t practically handle that number of significant digits and nothing else can either, there’s no way the systems downstream can either, there’s no way these numbers are “actually” needed unless someone did something very, very strange.

That’s not how angle tolerances are used, CAM just spits out instructions to go from point to point to point.

Looking at the BTLX schema, default values for length or angle are expressed to one decimal place. If the defaults can be so “imprecise” how come input values have to be more so?

Could you post a BTLX file for an (imaginary if necessary) 50m beam so we can see what you are generating?

1 Like

Hello @jeremy5 @Helvetosaur,

attached is a bvx File. With just two SawCuts.
Cambium_renamed.txt (1.2 KB)

This File is imported into a CAM-System like Cambium or Lignocam an there the NC-Code ist generated. This is how the majority of the timber industry ist working.

Don`t ask me if the number of exponents makes any sense. I’m just trying to tell the people from McNeel that this is a Problem with Rhino7. In Rhino6 the number of exponents was more or less possible to handle without major problems.

Yeah, but that looks like the CAM system is generating all those zeroes after the decimal point, not Rhino. Plus you can throw as many decimals as you like at most CNC controls, they will likely ignore more than 3 places (mm) or 4 places (inch) past the decimal - and in any case the machines are not capable of holding even that accuracy over the entire part.

Can you make two Rhino files, one with a beam with these two saw cuts that is built with, say, 0.001 absolute tolerance and 0.1 angle tolerance, and another that is built with 0.00001 absolute tolerance and 0.01 angle tolerance - then export them as you did above, import them into Cadwork and see what the difference is in the resulting CAM file?

Hi Patrick,

Unfortunately, unlike BTLX, the BVX schema does not appear to be in the public domain. I can’t comment on the content.

However, looking at screenshots on the Cambium website, dimensions appear to be expressed to 3 decimal places. If Hundegger deem that sufficient might “the majority of the timber industry” not be following a false trail?


@ Jeremy …the timber industry is very “traditional”

it’s not just the CAM System that is freaking out it’s the whole chain. For example if you want to make a Nesting of 40.001 parts in a 40.0000000 board guess what’s happening :wink:

@Helvetosaur if you want to take a look at the issue you can come and visit me @ Blumer-Lehmann in Switzerland. By the way greetings from Kai :wink:

1 Like