Join Meshes with coinciding faces

I try to describe the problem I’m having as good as possible.

I have a rather complicated mesh which is like a shell (I’m trying to design grillz).
When I add a cube to this model, there is a part of this cube that is inside this shell, which I’d like to remove:

So I went the intuitive route and used MeshBooleanSplit to divide said cube in all the different parts:

After that, I deleted all the parts I didn’t need and ended up with this, which looked promising:

Now I’m having problems joining the two remaining meshes again.
MeshBooleanUnion doesn’t work, as through this process there are perfectly coinciding faces which prevent MeshBooleanUnion from working.
Join on the other hand doesn’t work either, as the RepairMesh command shows selfintersections:

Now my question is: How do I solve this?
I should be able to somehow remove the coinciding faces and then rejoin the meshes, but I don’t know how to do that. Which command should I use for that?

Here’s the file if you want to try it yourself:

Test.3dm (4.1 MB)

Hi Bastian, MeshBooleanUnion seems like the right thing here, if I understand.


This doesn’t work for me. If I try to use MeshBooleanUnion, the two meshes just stay unconnected…

Hmmm, so you’re trying to remove the part of the box inside the grill - I find BooleanSplit and BooleanIntersection to be a little hit and miss compared to Union and Difference - so you could use MeshBooleanDifference, because it’s one mesh, you end up with one disjoint mesh which you can separate using SplitDisjointMesh and then paste your teeth back in and delete whichever part of the box you aren’t interested in?


Hey there, thanks for stepping in!
I was able to remove the part that was inside of the grillz. The problem I’m having is, that I can’t connect the outer part of the box with the grillz again.
Using MeshBooleanUnion doesn’t work (the two meshes stay disconnected) and when I use join it works, however the coinciding faces are recognized as self intersections which prevents me from further working with this mesh.

I see, I wonder - are you sure you NEED to join them into one object? Whether you’re fabricating from this file or rendering with it, there’s not reason for it to be one single mesh - unless you’re doing something else with it?

What if you move one of the meshes a tiny short distance towards/into the other mesh and then try to Boolean?


When I want to further work with the part all the other functions don’t work properly anymore. I managed to kind of do it with a grasshopper script and the dendro plugin, however, I am bewildered that there is no rhino function that does the trick and that I have to back up to a plugin.
Anyways, thank you for looking into it!

That would be a possibility, however as I’m modelling grillz and they should fit perfectly, I don’t know if that is the solution I am looking for…
Thank you for the tip anyways!

You can move only the vertices which is inside the cube, or facing the side of the cube which will remain after boolean. Those vertices would disappear anyway when the BooleanUnion succeeeds.


I was thinking Dendro, I wasn’t sure you were a Gh user, glad you worked it out!

While it is exceptionally annoying, perhaps reading this will make you see how much work is happening under the hood to enable boolean operations - this article should explain why Rolf was suggesting moving things about too and hopefully make it easier to troubleshoot in the future

  • Sash