How to merge (boolean) two objects that share faces/edges I'm working on some modeling for a jewelry box and I'm doing most of the modeling with primitives. I frequently end up doing something like the following: I want a bar with a bulb in the middle.

So I create a box: 48x10x10. Then I create a cylinder: 20x20x10. Both of these are at the origin. So this puts the cylinder right in the middle of the box and the top/bottom faces of both the box and cylinder are on the same plane.

At this point if you try to add a boolean modifier to one and select the other as the target; then you get some . . . odd results. Sometimes the initial one will work but then future boolean modifiers will cause crazy stuff.

I understand from previous posts that this has something to do with them sharing a face/edge/etc. and lovely divide by zero errors or something.

Is there a good way to do this type of operation? I just want these to objects to be one single one so that when I make another cylinder later I can cut a hole out of the middle of it.

In the past I've gotten around this by just not joining them at all and letting them overlap. Then when I pull the model into Cura for 3D printing Cura doesn't care about overlapping items or shared walls etc. But this is less than ideal for the modeling portion because any time I want to move the thing I have to make sure to select all the individual parts that comprise my "unit".

EDIT: Per requests here are sample images. Horizontal bar and cylinder are the items I want to join/merge/keep. The vertical bar is for a difference boolean to show the issue.



Now I am going to put two boolean modifiers on the horizontal bar. The first one is a "union" with the cylinder. The second is a difference with the vertical bar. This is the result. You can see by the highlighted wires and the odd interior faces that something strange is going on.


However if I move the cylinder up one unit so it doesn't have top/bottom faces on the same plane as the horizontal bar then it works as expected.
Boolean operation doesnt handle this co-planar faces, known issue. That is why I used in thelink Remesh. In your case (from screens) it can be done by several ways.


like in your last screen higher cylinder, after boolean select upper vertices, scale (S) Z = 0, than delete (X) Limited Disolve (or after boolean ad another cube and cut it from both sides at once)
on top of cylinder add rectangle in edit mode and use Knife Project so you got edges on place were cube cross cylinder, select faces and extrude
or try Remesh Modifier with some luck https://blender.stackexchange.com/a/165574/2214


... or any other technique, but there is no direct setup for Booleans to fix this issue, sorry.