Struggling with Boolean operations between two solid polysurfaces

Hello! I’m working on my first project, a simple ring that I hope to CAD out and print. However, I’m running into an issue of cutting out a hollow for a seat (on a “celtic knot”) as well as boolean-unioning a seat to an accent on the side of a ring shank.

I’m having difficulty with understanding why my boolean operations are not working between two solid polysurfaces. I’ve tried reading about it here and have checked a number of things:

  1. Operations are limited between two closed polysurfaces without any naked edges. These objects also aren’t “bad objects”, at least as far as I can tell with SelBadObjects.
  2. Operations, I believe, aren’t done on the same construction plane– are not at the same altitude and intersect well within each other.
  3. Intersections are made of valid closed curves.

It’s down to nearly tangent surfaces, non-manifold polysurfaces, or some other issue that I’m not familiar with. I wish I was more knowledgeable CAD-wise or even mathematically so I wouldn’t have to ask for help but here I am now as a complete novice.

I think the issue is with the knot itself, it probably is somehow just an object that doesn’t deal well with objects– perhaps I didn’t make it efficiently.

boolean difference help rhino forums.3dm (5.0 MB)

Not sure why it is failing. Perhaps someone smarter then me can find the problem.

A cheap workaround might be shrinkwrap. I used a 0.01 grid size:

the blue elements should be subtracted (difference) from the rest ?
all others should be unioned ?


what should happen with this red cylinder ?
nothing ? just a test ?

booleandifference_help_tp.3dm (8.2 MB)

is this what you re after ?

UPDATED Version:
booleandifference_help_tp02.3dm (10.2 MB)

your original knot did still had overlapping volumes in this area:
(marked with (x)
the repaired knot:

the bad knot still having a surface intersecting the other elements of the knot = neighbourhood / strings / branches - however you call them.

i used _explode _trim _join to fix it

hope this helps - kind regrads - tom

Thanks Scott, I don’t know what shrinkwrap is but I’ll keep it in mind! It may solve actually another thing I was wondering about– whether or not you could simply grab the outside portion of everything to delete any curves/intersections on the inside if that made sense or not

The red cylinder was just a test to see if I could do any boolean operations on it– I was messing around with it and the angles to see if it was an issue of co-planar alignment and whatnot. You can delete the red cylinder for clarity, but the knot should be able to boolean union with the rest of the ring– and I was also trying to boolean union the little cup you can faintly see on the inside if you tick the visibility of “accent stones” layer I believe.

Oh, and I didn’t see the second portion! Thank you Tom. How do I go about detecting overlapping volumes in the future? Purely through visual inspection? What did you mean by neighborhood? Am I to trim the overlapping portions with a curve and rejoin the surfaces together to form a new poly surface?

check the updated version … i am done with the longer post above - happy modelling - tom

the strings / the pipes / arms / ropes ? did not find a nice name so i thought neighbourhood is somehow funny…

and yes by visual inspecting - missing edges.
_showedges might help - check command help for details

_shrinkwrap will give you a mesh object.

Aha, thank you Tom, I really appreciate it.

Yes that is what shrinkwrap does. https://www.rhino3d.com/en/features/shrinkwrap/