R6 and R5 bd fail

Hi McNeel and Rhino-ists

Why is this - fairly simple - boolean difference failing? I can see that it’s an intersection error, yes… But why? Simple cylinders, simple tube-ish shape. What gives?

TIA, Jakob

R6 bd fail.3dm (4.4 MB)

Yeah, this looks buggish to me… Your file tolerances are low for this size of object at 0.01, but even upping them to 0.001 or 0.0001, still doesn’t work - some of the intersections are not complete. Looks like always the same ones, too. Exploding/rebuilding the edges/rejoining on the large ring part didn’t help.

I remade the ring part using a section through the original and a revolve (using .001 file tolerances) and then the boolean succeeded with your original cylinders - only partially though, some of the parts did not get subtracted.

Then I remade the small cylinder and arrayed it, then tried again - no success at all…

Go figure. (@pascal - one for the bug heap?)


Hello Normand
Switch on all the isocurves. This worked when I tested just one of the small rods.

Best in this case is to go the manual route, intersect 2 that do work and use this intersection to trim the small cilinder, then array curve and cilinder-part, select the curves and group them, the split the large ring with the curve group, and join the split result with the small parts.R6 bd fail_sg.3dm (2.7 MB)

Nope, that didn’t work here… would have surprised me if it did… You probably just stumbled on one of them that worked already.

Yeah, but this should just work

I mean in case a boolean doesn’t work as expected. I agree in this case it should work but quite often Rhino will fail with boolean operations where one can ‘see’ an unambiguous solution.

Hi Jakob, all - thanks, I’ll get this one the pile - it works if you make the ring outer surface much denser in the around direction (InsertKnot > Automatic a few times). I also made the tolerance .001 but I don’t know that that matters in this case.

Hi @pascal, @Helvetosaur, @Gijs etc.

Thanks for the feedback. I know the work-arounds, but as Mitch points out: this is SO simple and should just work. I know you detest the automated boolen tools, @Gijs, and I agree for complicated operations, but this… it should just work. The outer ring is two circles extruded with a cylinder boolean’ed on it. The smaller rods are a piped curve that has been arrayed. I too tried to re-do both outer ring and rods to no avail. And sorry about the file tolerance - it was 0.001 originally. I was messing with it and must have forgotten to undo. I’ll so a complete re-draw tomorrow to see if I can find out what went wrong!
Again, thanks for the input!

I don’t detest booleans at all, I use them all the time in fact… until they fail :wink:

1 Like