Odd BooleanUnion behavior

mcneel1.3dm (939.4 KB)

At one point in time, I was able to booleanunion this object. In fact, now it is a closed polysurface as you will see (default layer). However, if I explode this object and re-boolean it, deformities emerge and the union fails. I also see many points of naked edges that weren’t there before. I can ctl z out of it and get a closed polysurface again. What’s going on? rex

I suppose that, in theory, this is a good question.
In practice, however, you are asking for trouble by using booleans for this. You should be using the Join command.

(If it were up to me, I’d have McNeel remove all boolean commands from Rhino - that would reduce the amount of support issues with about 80% :grin: )

A boolean command will find intersections between surfaces and use these to trim the surfaces and join them. In your example, all your surfaces have been previously trimmed so that they can be joined as they are. Apparently, for some reason (theoretically good question - I’m sure tolerances are involved), the intersections are not identical with the edges and when the newly trimmed surfaces are joined, gaps are left behind.

Hi Rex- I’m not sure quite what you mean, but for a polysurface BooleanUnion is not the ‘opposite’ of Explode. Use Join. Not sure of that addresses your point… BooleanUnion is a different thing.


Pascal, here’s what happened…
I constructed the object and performed a BooleanUnion, which worked to create a closed polysurface. I assumed (I guess incorrectly) that I would be able to explode it and successfully union it again. Not the case. I guess there is something I’m not understanding.

Are you saying that if I have a collection of surfaces and select all, they should all join if there’s nothing wrong? I’ve only been using join to do a small number of surfaces at a time.

Also, if I join a complex number of surfaces, isn’t there a lot of trimming to do? If I do a BooleanUnion, all the trimming happens automatically.

You say that BooleanUnion is a different thing… Do you mean that it’s typically used to join solids, and join is used for surfaces?

Hopefully from what I’ve said here, you can correct any misunderstandings I have, for which I would be grateful. thanks, rex

Wim, are you saying that it’s best to trim all the surfaces as you design the object, then select all and join? rex

Hi Rex -

  • BooleanUnion to combine intersecting objects (preferably closed solids for more predictable behavior, but that is not required). BU takes care of finding the curves of intersection among the objects, trimming the surfaces appropriately, and re-joining the results.

  • Join curves or surfaces that are end to end or edge to edge but do not require trimming. (Note for meshes, Join works even if the inputs do not touch - the result is a ‘disjoint’ mesh.)


You can probably put a lot into the wordings “if there’s nothing wrong”. If all edges of all of these surfaces meet each other within tolerance, then, yes, they should all join. Have you tried that with your example file?

You can pre-select the surfaces and do all of them at the same time. So you select the surfaces and only then call the command - as opposed to calling the command and then having to pick surface by surface.

That’s exactly what it is; an automated trimming and joining. Problems is that you don’t necessarily see right away why it doesn’t work as one would think (Rhino 6 will give more feedback on this). When you know that you don’t need to cut, don’t go looking for the scissors. Go straight for the tape.

You can create a lot of surfaces that don’t need trimming at all - it all depends on the situation. While learning Rhino, you might as well stay away from the booleans a few months.
my 2€

Awesome. I exploded and joined and it all came together under join. I’ve been able to fix some of the naked edges, but not all of them. I’m going to begin another thread on that topic. thanks much!