Difficulties with Boolean union

I am having difficulties with Boolean union that do not seem to make sense. I am working on a model that is bilaterally symmetric, where on one side of the model parts will union just fine, while on the other side parts fail or even get deleted after supposedly successful union. I also get error messages on the side where the union seems to be successful.

This is the section of the model I am working on. It has taken me a couple of hours to finally successfully boolean all the parts together.

I want to union everything together so I can then Mirror three times and end up with this.

On the right side I get the following message every time I try to union the long pipes with the arcs.

When I click OK this then seems to result in a successful union. Other times I get the following message, even though the parts I try to union are identical to parts I have previously completed a successful union with.

Whenever I tried to union one particular part on the left side (the second arc from the right with the long pipe at the bottom) the pipe gets deleted. However, if I boolean another arc with the pipe at the bottom first and then try to union that second arc, it works. The same thing happens when I later try to union the third arc to previously unioned parts. But if I union the third arc to the bottom pipe first this does not happen. When I do unions on the right side none of this happens. There I only get the error message dialog boxes as shown above.

I then tried to many different ways of the order in which I tried to union parts together. After many tries and many boolean fails, I finally found a sequence that resulted in getting all the parts together.

What may be the reason that many boolean unions failed and finally one was successful?

I have uploaded the file in question before the final successful boolean union, so people can take a look at this if they wish.

Cross cage brooch, 1.5 steel 03.3dm (1.0 MB)

Intersections like this between cylinders, pipes and spheres can often cause problems. I find the best thing to do is move the seams of the surfaces using SrfSeam. You need to ExtractSrf, SrfSeam and then Join all the pieces back into a closed solid. In one area the seam of the cylinder was coincident with the sharp point of the adjacent part which is causing the failure. You can run the Intersect command to troubleshoot what the Boolean commands are seeing as well. Adjusting the seams first of all the cylinders makes this work here with one BooleanUnion.

Cross cage brooch, 1.5 steel 03_bjames.3dm (933.3 KB)

I continue to have a lot of issues with Boolean Union in this file as well as the file I was trying to upload here. I can’t upload it, because it is a bit too large. (4.2 MB)

I have used SrfSeam to move the seam of the pipes on the outside and inside of the model (a different model than this one) and tried to do Boolean Union of all the parts. Many are successful, and several are not. The ones that are not do not make sense to me, because the parts I am trying to connect and fail are identical to the parts that connect just fine. This all makes no sense to me. I get the following error messages.


I am totally stumped with this one.

I can select all the parts and export as an stl file that a 3D printing company can print, and I want to be able to complete these boolean unions successfully, because I think that this is how it should be done.

This is so frustrating.

Please send the file via http://www.rhino3d.com/upload and someone will take a look.

-Pascal

Hi Zews - I got your file, thanks, and I am looking at it…

In the 'After SrfSeam file, I see this:

That is, the inner and outer rings have already been Differenced from the vertical elements - the BooleanUnion is then being asked to combine coincident surfaces there where the ends of the blue object wires hit the (red) ring. This is never, or nearly never, going to work. What you can do is remove the little end surfaces on the verrtical objects and use the edges there to trim the ring and then Join, or leave the vertical elements intact, intersecting the ring, and Union in that state.

-Pascal

This seems so easy, but I don’t get it. Very frustrating.

Hi Zews,
Golden rule for me is that multiple polysurfaces with surfaces that in part exist in the same space cannot be booleaned.

The end of your length pipes share the same surface space at the end arc pipes.

I moved that length pipe .01ml away from the end and it boolean unioned with the end arc pipe.

Next for your middle. It appears to me that you have created these by boolean differencing the ends of the arc pipes from the length pipes. This means that they now meet in the same space. You need to remove the surfaces that co exist in the same place on both your length and arc pipes and join. Boolean will not work here.

Delete one side and hide the length pipes. Now extract the end surfaces and delete them as I have done in this photo.

Now do the same for the bottom of the pieces.

With all those surfaces removed select all the arc pipes and _DupBorder

Now you want to hide the arc pipes and have your border curves and the length pipes showing. Run _SelCrv and then Trim. Click inside your curves to delete the part of the surface inside.

Should look like this with them all deleted.

Show every thing and run Join. You should get a valid closed solid.

Got to the top, split it down the middle, delete the side not needed, mirror and join.

Do a polar array of 4 items around 0 then split it at 90 degree angles.

Select the outside 4 pieces and hide them…… you will reveal all the stuff that overlapped in the middle that would have stopped your boolean working. Delete this.

Last step is to reshow your 4 pieces and join them. You should get a valid closed solid. HTH

1 Like

sochin,

Thank you very much for that step by step explanation. I have now finally been able to create that closed polysurface without using boolean union. There are some differences when I look in the Object Properties panel:

The number of surfaces, manifold edges, total edges, are different. The edge and vertex tolerances are also different, you have only zeros everywhere. And finally the number of vertices and and polygons are also different. I do not know if this is important or significant.

I have tried to add a couple of additional elements (the red objects) trying to use the same commands that you used, but have not been successful. As expected boolean union failed.

How would you go about adding those?

I started from the same file I uploaded on January 12, Cross cage brooch, 1.5 steel 03.3dm

Glad to hear that you got it to work. My guess with the tolerance difference would be that you used a boolean somewhere that did the best it could where as I used all cut, trim, join etc which is more accurate. I think others like @BrianJ will explain it better or correct me if my guess is wrong.

If you can upload the file with your new closed solid and those red pieces I or someone else should be able to show you how to fix it pretty quickly. Really need to see how they are intersecting better.

Thank you sochin. Here is the file.

Cross cage brooch, 1.5 steel 03 sochin.3dm (3.9 MB)

I get this when I try to download the file.

That is very weird. I get that too. And when I tried to upload the file again the same thing happened.

I’ll send a note to BrianJ, maybe he can figure out why this happened.

sochin,

I have something else happening that is a little weird, and I can’t figure out why this is happening.

I am trying to make the exact same model again, but with the diameters of the pipes 1.3 mm instead of 1.5 mm.

I started again the same way by making the pipes and doing a bunch of boolean differences to get the same parts as before. (The part as in my original post on the top of this topic) I did a boolean union of the three pipes of the “end cap” (horizontal straight, vertical straight and semi circular arc). This was not a problem. I then did a boolean union of this part with the four long straight pipes. This worked fine, and I did not need to move the long pipes .01 mm back.

I then again did all the things you suggested. But then, when I got to “Run _SelCrv and then Trim. Click inside your curves to delete the part of the surface inside.”, as soon as I would click inside one of the sections on any of the long pipes to delete, one or two of the long pipes suddenly changed to wireframe. In fact the part became useless. The same thing happened when I did the original boolean of the long pipes to the “end cap” with moving the pipes .01 mm or even a little more. As soon as I attempted the Trim command and clicked on a section I wanted to remove one and sometimes two pipes turned to wireframe.

However, and this is even stranger, when I don’t do SelCrv to do the trims, but pick the curves that are the result of “DupBorder” one at a time, and then do the trims one by one, everything works fine. After that I can complete the entire model again with Join, Split, Polar Array, etc.

Here is a short video that shows what I am talking about.

Trim issue.mov (6.4 MB)