Boolean Difference failed, self intersecting curves, micro surfaces

Here another subtract problem:

Problem Difference 2.3dm.zip (152.0 KB)

I have too polysrfs. One is the very tall and the other is the short ring.

If I try to booleandifference the big one from the small one I get:

The part of the ring to the left gets deleted even though it is clearly outside the large object.

Doing the parts at different tolerances has not helped.

If I do intersect I get closed curves. I get no errors and no nonmanifold edges.

One oddity is that if I split the small one using the large I do not get breaks where one would expect.

A work around to this particular issue is to wirecut the small part into at least 3 sections. Then doo the boolean difference on each one. Some fail so then use MIRROR to copy the symmetric pieces that succeed.

you have to rebuild the extrusion.
the curves you used contain selfintersections…
_dupFaceBoarder
_extrudeCrv will give a warning
_intersectSelf will show the problem

screenshot shows the (micro) self intersection (point)

after fixing this, boolean difference (both big minus small, small minus big) work fine.
check layer-names for more info.
Problem Difference_01_tp.3dm (521.3 KB)

hope that s it - please mark as solution or give more info what else is needed.

i update the tilte from
Bug?: Boolean Difference
to
Boolean Difference failed, self intersecting curves (solved)

kind regards - tom

It would be great to get some kind of warning. The curves I have now are not self intersecting. If I fixed that, I did it without knowing it.

Problem Intersect.3dm (2.9 MB)

Here is something similar I ran into. I took the original and stripped it down to this.

In the attached I have a polysrf. I have two closed curves. I if I extrude the center curve and intersect with polysrf, nothing happens.

If i extrude both curves together and booleandifference, nothing happens.

If I do wirecut using the center curve, nothing happens.

selselfintersecting, selnonmanifold, and selbadobject, I get nothing.

To fix, I exploded the central curve and joined. However, there was no indication I know of from Rhino that something was wrong with the curve.

Problem Intersect.3dm (3.0 MB)

Here is the same with original full piece.

If you do any of the operations mentioned previously one side can be cut, the other side cannot.

there is a super small micro - surface- stripe that causes the boolean to fail…

the origin again are the curves.
2 Control Points at this possibion

sorry for updating the title, but if you keep posting new problems - of cause it is not solved…

(Edit) here s the file
Problem Intersect_tp.3dm (253.8 KB)

How would you know that there is an error in the curve? As I said, the problem goes away by exploding and joining. That is probably what happened to me with the first curve.

as CAD Modelling is somehow a craft - you need proper workflows to avoid those things…

if booleans fail a good practice is:
_selBadObjects
check if closed
_what (check for edge Tolerance)
_showEdges (check for naked edges)
_dir (check if all normals point outward)
_intersect (to see if the result of the intersection is valid)
_mergeAllCoPlanarFaces
try to do the boolean manually with
_trim
_join
check the result (this pointed me to the additional micro-Surface and the CV in the Polyline)

there is also some article by mcneel about booleans…
https://wiki.mcneel.com/rhino/booleanfaq

it s hard to judge where the additional CV came from…
the difference is somewhere near document tolerance i guess - so it s hard for the software to guess what is wanted.
it s a pity, but _simplifyCrv fails to clean the CV.

point[ 7] = (4.4169561710632781, 4.4346420622657021, 10), 3.37623
point[ 8] = (4.4169583652385791, 4.4346398685902138, 10), 3.37624

Document Tolerance
0.0009765625

1 Like