Cannot merge bodies

I slimmed down a project of mine to these bodies only what I cannot merge:

The problem

There is overlap between yellow and green bodies because I can merge them:

Showing the overlap between yellow and green with the subtract tool

Merging yellow and green bodies ✅

There is overlap between yellow and red bodies because I can merge them:

Showing the overlap between yellow and red with the subtract tool

Merging yellow and red bodies ✅

I can even mix green and red bodies unless they’re not on the same side of yellow:

Merging yellow with two green and two red bodies ✅


There is no overlap between the green and red bodies:

Showing the overlap between green and red with the subtract tool, note the absence of the blue tick

And still, when I try to merge everything I get a “The Boolean operation failed.” error:

Merging yellow with all green and red ❌

Same error message when I try to merge bodies on one side only:

Merging yellow with one green and one red on the same side ❌



Workarounds I tried

Mirroring

Deleting the red bodies and mirroring the green ones but it doesn’t work:

Merging yellow with green and copies of green ❌





Changing yellow

Extruding some faces of yellow:

Merging after extruding the top face doesn't work ❌

Merging after extruding another face works ✅


It’s unfortunate that it’s not the shape I’m after :cry:

Simplifying yellow

After the previous partial success I examined yellow and noticed this extra edge on the rounded corner faces. I believe it’s there because I used the following face for sweeping. But to be honest I don’t understand why it’s generated at all especially because it’s not visible on the straight side faces.

The "extra" edge what I couldn't simply delete

The original face with multiple vertical lines on the right inner edge. I did it this way because my reference point was on the axis and I wanted to extrude the lower part a little bit below that.

I recreated the face with fewer lines and created a new body from it


Well, merging with this simplified body doesn't work either ❌


The funny thing is that I was able to merge these bodies earlier but after undoing some stuff I accidentally exited from the project and when I reopened it I lost the redo steps. But before I exited I exported the body so I have a reference and proof that it worked earlier. It’s too bad I cannot reimport the .3mf file to compare the bodies.

Anyway, I attached the project and the earlier export (in .zip because i’m not allowed to upload .3mf files):

i created a project with some test cases:


case 1

this is the simplified version of my original problem, you can find the sketches and bodies i used to create an intersection for the green and red elements. merging failed.


case 2

  • case 2/a: these are even more simple test cases consisting a cuboid and two cylinders cut in half. all elements are on the same vertical plane, front and back faces are aligned together. merging was successful.
  • case 2/b: the half cylinders are slid a bit outside of the vertical plane to the front. merging failed.
  • case 2/c: the half cylinders are skewed to the front but the bottom of the bodies are still aligned to the face of the cuboid. merging was successful.
  • case 2/d: same skewed cylinders as in 2/c but this time they’re moved to the front like in case 2/b. merging failed.

case 3

  • case 3/a: i was wondering what if the green and red bodies don’t touch each other so i added a space between them. this is the only change compared to 2/a. (and there is extra space on the two sides but i think it’s not connected to this problem). merging was successful.
  • case 3/b: half cylinders moved to the front. merging was successful.
  • case 3/c: added skewing like in 2/c. merging was successful.
  • case 3/d: moved the skewed elements to the front like in 2/d. merging was successful.

conclusion

feels like skewing doesn’t add anything to this case and since the space between my elements solved the issue i’m gonna leave these cases out from the following tests.


case 4

  • case 4/a: i wanted to try more shapes to see if the circle (case 2 & 3) or spline (case 1) is the problem. in this series i used rectangles/cuboids. merging was successful.
  • case 4/b: moved the elements to the front like in all “b” cases. merging was successful.

case 5

  • case 5/a: there was no space between the rectangles so i wanted to try triangles as well. merging was successful.
  • case 5/b: moved the elements to the front like in all “b” cases. merging failed.

case 6

  • case 6/a: i revisited the failing test cases but this time i used two separate lines at the bottom for the two sketches instead of one. you can check the floating sketches in front of all “a” cases. i did this because the only connection between the green and red shapes was using the same bottom line (apart from the joined corners of the extruded shapes). merging was successful.
  • case 6/b: merging failed.

case 7

  • case 7/a: same experiment with the sketch: splitting the bottom line into two to have a separate one for each shape. merging was successful.
  • case 7/b: merging failed.

results

aligned moved out skewed moved out + skewed
circles :white_check_mark: :x: :white_check_mark: :x:
circles /w space between :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
rectangles :white_check_mark: :white_check_mark: - -
triangles :white_check_mark: :x: - -
circles /w separate sketch lines :white_check_mark: :x: - -
triangles /w separate sketch lines :white_check_mark: :x: - -

results are the same in all three environments i have access to:

  • ipados 16.6.1 / shapr3d 5.460
  • macos 13.5.2 / shapr3d 5.460.0 (5746)
  • macos 13.5.2 / shapr3d beta 5.460.0 (5748)

attachments

merge-fail-reproduction.shapr (72.4 KB)

1 Like

Hi @gex ,
This is not exactly what you want, but close :wink:

When I looked at your model, it seems to be an “edge case” (my term, not Sharp’s). I have had problems when doing Boolean ops on bodies that seem to have coincident edges. Like perhaps Shapr thinks it is making a body that is not “water tight.” (I don’t remember the correct term:-)

Anyway, I did the following:

  • merge the red into the yellow body
  • move the green .01mm down into the yellow
  • merge the green into the yellow
    gex.shapr (524.6 KB)
1 Like

First of all, I love the amount of work you put into your investigation. Its always nice to see motivated people looking to learn more about the nature of their problem and putting in effort :slight_smile:

The biggest clue as to what the issue is already in your experiments and initial problem statement:

I can even mix green and red bodies unless they’re not on the same side of yellow

I was wondering what if the green and red bodies don’t touch each other so i added a space between them. this is the only change compared to 2/a. (and there is extra space on the two sides but i think it’s not connected to this problem). merging was successful.

The problem with the original union, and subsequent smaller reproductions is that you are asking Shapr to create non manifold geometry by creating two solid regions which touch in a non-manifold edge:

If you were to merge these three bodies together the resulting solid would have an edge which has 4 neighbour faces, making in non-manifold. Such topology cannot exist in real life, thus Shapr refuses to do the merging for you.

My best guess is that the model used to work because you had the flat yellow surface on the screenshot slightly higher in the past, so that it would cover the problematic region like this:

You don’t need to raise the blue face so high: Making it so that it concides with the bottom flat faces of the green and red bodies would be sufficient too ahe planar red, green and blue faces touching would be deleted anyway as the three shapes are unioned together to represent a single volume. In this body the problematic edge would have only two neighbour faces once more.

2 Likes

TIL non-manifold edge.

one thing that could be improved is this boolean operation failed error message. it’s too generic and after reading this community forum for a few weeks i think i’m not the only one who is often confused by it. a little hint would be helpful, non-manifold edge found, overlapping faces found, etc. even just seeing the term non-manifold would have prevented this whole thread and i would have used google/chatgpt/whatever instead.

anyway, thank you @David_M very much for the detailed explanation, it was useful and it helped a lot!

i also opened my exported file with a slicer app and you were right, the model i exported earlier was slightly different and i didn’t have this edge with 4 faces.

thank you @Bob3DPO i’m gonna do something like what you suggested!

I do agree that we could do better to surface some of the internal errors in a more digestible manner, but in particular boolean operations can go wrong in myriad of ways. Covering them all in a way that is understandable or results in a searchable term in all of the localised languages is a herculean task that we just cannot undertake right now with the heavy focus on HBPM. :slight_smile:

While I cannot show/tell any specifics, I can probably share that we also feel the need for improved/more intuitive diagnostics with the additional complexity of HBPM, and will likely look into possible improvements in the future.

1 Like

Hey @David_M , thanks for reminding me the correct term… non-manifold (doesn’t hold water):wink: