Boolean operation glitch

Applying Boolean operations to extruded solids causes the top and bottom faces to disappear. But the surface itself might still exist. Is this a display glitch?

Does anyone know the cause?

aaa.3dm (3.0 MB)

Data is here

explode and rebuild one of your flat surfaces, then select and gumball extrude to create your thickness.

Hi Kyle,

When I looked at his curve I could see he has a number of areas that are self intersecting or with weird loops thus making the curve sort of a bad object. I kind of repaired some of those areas and I was able to extrude his regular curve and that was visible in shaded mode but if I tried to extrude with the rectangle included to make the cutout Rhino fails and gives me the same result as his even though I could boolean the square out latter the display fails. It’s weird that rhino creates the shape ok then the boolean fails and still reports at the command line closed solid and won’t render in the display.

Of course if one rebuilds his curve from the beginning and it extrudes that with a rectangle for the cutout than all is ok. Just wondering if there is something deeper going on with the extrusion command and this curve? Even though I can see some of the errors in his original seems more is going on here. Rhino should catch what is wrong here and not report a closed solid and Rhino should shade the object. If not Rhino should know and show where it is going bad.

RM

curve boolean inside the original curve is the “quick and dirty” fix I use for that stuff.

it just sort of hacks out the self intersections and gives you a workable curve… of course close inspections are warranted with any such quick fix.

Hi @tatsuya

When you extrude you can select the rectangle along with your curve and that should extrude with the square and create the cutout in one operation; this way you don’t have to cutout using a boolean if you want to avoid an extra step.

Your curve has some bad areas in it that’s what is causing the shading failures.
RM

Hi Kyle,

I am aware of the workarounds and fix I think the extrude command needs some love it’s acting weird in this case, thus my posting. There seems to be a disconnect in why this fails as Rhino gives no warning other than not shading it.

RM

I hate to blame the victim here, but the curve you are using is pretty messy. A rebuild would benefit you a lot here.

There are several cases where you can fool rhino into thinking somthing is valid, but the render mesh fails… that is always a good indication of a problem. And most of the time it’s because of a bad curve at the very beginning.

10 min of curve cleanup will make your life easier down the road on this part.

IMO the best way to do this is to explode and rebuild each section, examining areas near the intersections as there are several overlaps and self intersections.

tedious but, IMO worth the squeeze.

Hi Kyle,
I was hoping you’d look at this in more depth because one can extrude the curve and it shades correctly but then after applying the boolean the object goes back to failing in shading. So how would a user know it’s the curve causing the problem?

I’m not using the curve I’m using a fixed version of the curve and it still fails downstream. I wanted to point out that there is more failing in the subsequent extrude command that you and McNeel are not accounting for. Why because the curve with slight repair will extrude normally and render in shaded mode only to be bugged again and not display when doing the boolean, so how is a user to know if it’s the boolean or the curve? Also it would be better for the user for Rhino to report why it can’t shade this or where the bad parts of the curve are Rhino keeps reporting it as a good object. Just saying Rhino can be tricked is pretty low brow of a software and shouldn’t these areas be worked on and made better for the user and for McNeel since Rhino can be bamboozled so easily?

RM

one of the downsides of a free form surfacing program is the ability to hang yourself.

you can make a curve with a loop in it and extrude it. Rhino won’t stop you.

if it fails down the road the general 1st rule of diagnosing is “go back the curves”

a bad trim or a defective curve is almost always the problem.

I believe you that you fixed the curve, but if it’s failing, it hasn’t been completely fixed.

booleans require absolutely unambiguous normals. they are by definition either, or. with self intersections the normals are unclear and will 100% cause a boolean to fail.

the errors may be small enough that they fall in the file tolerance gap which is why the boolean worked but that is where the render mesh can get weird.

to some extent this behaviour is actually a good thing as it unintentionally tells you there is a problem.

is this right or wrong, we can argue about that ad infinitum.. but for now it is what it is.

if this was my model for one of my clients, I’d very meticulously rebuild the curve, segment by segment, before I started building.

Hi Kyle,

I am suggesting that Rhino could do more in diagnosing what and where the problem is.
I want Rhino to handle these situations better and feel Rhino should do more at reporting what is wrong and help the user to diagnose it. I understand the workarounds; more should be done by McNeel to help the user in these situations. The fact that rhino reports the object as ok and doesn’t render it; that is a problem right there.
RM

1 Like

understood- and i don’t disagree

Hi, Kyle.
Thank you for verifying this.
Indeed, this curve was originally quite messy.
So I thought I had resolved all self-intersections using IntersectSelf, but apparently some remained.
I’ll verify it again tomorrow.
Thank you.

Hi, 3dsynergy.
Thank you for the detailed discussion.
It’s very educational.
I plan to verify it again tomorrow.
Thank you.

The issue where the surface display disappeared after extrusion when using the FitCrv command on a curve has been resolved.

The fundamental cause of the display issue remains unknown.

I’d like to ask for reference:

What functions do you use to detect curve issues?

I use the IntersectSelf command and End Analysis. Are there any other effective functions?

I often use curve boolean as a sledgehammer for bad curves.

it will cut out loops and self intersections and leave you with a more or less “good curve”

now…

this is not a guarantee that the curve is clean, so I very often will dig into it quite closely after a curve boolean and rebuild it as needed to get something that fits my needs.

The new rebuild tools in v9 are making this a much less painful process and I’m looking forward to seeing them develop to make stuff like this easier.

that said, I’m happy to see you got what you needed from your build.

1 Like

Rhino 9 WIP will now warn when a curve looks bad. This will not catch everything, but it will create n alert for potential problems:

CurveBoolean is a great fixer for bad curves.

1 Like

Nice glad you’re working on that.
RM