Boolean failure

Very frustrated with the attached. This is a process I have accomplished on numerous occasions but this time one bit does not subtract. Intent is subtract Bool/2 from Bool/1. As you can see, >150 bits subtracted fine. This one does subtract if i move it up minutely… But then the resulting geometry is problematic further down the road. Any Thoughts?Boolfail.3dm (7.2 MB)

Hi Robert - make the cutter shorter so you do not get extra ‘unresolvable’ intersections here:


Ah @pascal, you beat me on this one. I tried using Cut (worked fine) and ended up with two “splinters” in the two “unresolvable” locations:

// Rolf

It wouldn’t surprise me if you have problems with this geometry down the road. Your model contains something like 150 surfaces that are less than 0 .001mm wide.

Is this a tolerance problem? The default tolerance for small parts is 0.001, so a surface that has details smaller than that would, by definition, fail.

If I potentially have stuff this small, I will bump my tolerance up to 0.0001.

TIP: If you change the tolerance of the file, it only affects new stuff. The old stuff till has the older / lower tolerance. And, I’ve been told by McNeel dudes, you just made the problem worse with mixed tolerances. Its better to start fresh with a new file.

Thanks Pascal… that worked. I resized this with align 2 point / scale 1D. I generated the original wedge parts with Grasshopper - it would seem like I need to play around with the scale options.

How did you find those “Splinters”? They have been an ongoing issue in this project. I would appreciate ANY input that could steer me to avoiding those splinters.

Hi again,
I used “Cut” instead of Boolean. Sorry, of course I meant “Split” instead of Boolean.
I then removed the “big” surfaces manually, and then a “Windows select” along the cutted area (view angle according to the picture in my post) and the “splinters” will then be selected and become highlighted.

// Rolf

jim, Your model contains something like 150 surfaces that are less than 0 .001mm wide.

How did you sort and find those surfaces?

I am working with Grasshopper to create these patterns and would like to study those tiny surfaces to understand how to modify the script.

Rolf already showed you how to find a couple of these near-degenerate surfaces. He called them splinters.

There is no direct tools for finding surfaces that are so small that the only thing they contribute to the model is problems, but you can find their edges pretty easy. If you extract wireframe and run SelShortCrv you will get something like 350 curves shorter than .001mm. Some of the short edges are from long skinny triangles that have 1 short edge and others are from long skinny surfaces with 2 short edges and others are from small triangles that have 2 or 3 short edges. The number 150 is just a guesstimate. There might be more than 150 near-degenerate surfaces or could be less.

O’m not at my computer right now, but if you explode your polysurface, I seem to recall that there’s actually a SelSmall command, that lets you select objects below a specific area or volume… or it might be a script I have.

HTH, Jakob

Thanks Jacob. SelSmall IS a native Rhino command. Unfortunately the bounding box diagonal does not find the long extremely skinny rectangles and triangles that are the problem. Open to any other ideas.

Hi Rob - you can give this plug-in a spin, in case it helps -

it has several commands

SelVolSmall SelVolLarge SelAreaLarge SelAreaSmall

SelectBySize.rhp (51.5 KB)

Save, then drag and drop to load it up…


1 Like

Thanks for that Pascal - I’m travelling now and will give it a run when I have a chance. I was able to button up my previously open surface and delivered to the client. I imagine this will be useful in the future.