Boolean Union Failing

I can’t figure out what Im doing wrong here. Id seriously love some input.

I am trying to convert the file name jankytree1 into something similar to the nice looking mesh in the file named finishedproduct. I have actually succeeded here once - but now its not letting me repeat the same workflow. I guess the first try was an exception and not the rule and theres a problem rhino is encountering that I somehow avoided in the first place. Im trying to boolean union all the branches together in the janky tree, then convert the thing to a mesh and then run it through a weaverbird script which smooths things out nicely resulting in the finished product

So it did work once but not anymore. All the polysurfaces are closed in the janky tree. When I try to boolean union it deletes everything and outputs one or two of the original closed polysurfaces…? If I try it another time another, completely random closed polysuface will be output witheverything else deleted. If I try to do a couple pieces at a time it will work - but that wont do for a small forest of these things. I know theres a lot of intersections going on but again, it did work before this. Im so confused. Please help me.

edit: the trees are procedural and generated from a grasshopper script - this is perhaps why the first try worked since the two objects are not the same tree - and why I need to figure this out for later when Im trying to smooth out a few dozen unique trees. (I can attach the grasshopper script if relevant)

Janky tree1.3dm (19.3 MB)
Finished Product.3dm (9.6 MB)

The normals of some your closed polysurfaces point inwards. The normals need to point outward. Use Dir to check which way the normals point.

Rhino is supposed to automatically make the normals of closed surfaces but occasionally the normals point inward. I don’t know of a single step method to flip the normals of a closed object but the method below should work.

To flip the direction of the normals:of a closed polysurface:
Select the closed polysurface with normals to be flipped.
Explode the selected polysurface
With the exploded surfaces still selected Flip
With the exploded surfaces still selected Join
The closed polysurface should not have the normals pointing outward. Use Dir to check.
Added: It may be possible to script the Explode Flip Join sequence.

Thank you so much. I just exploded the whole thing in grasshopper and rejoined it - that strategy seemed to unify everything and let me boolean union properly.

e/ seems to not work some of the time though - so maybe this is half solved. The boolean union on some of the trees works perfectly now (which didnt before) and on others it seems to fail similarly to before…

The solution does seem like a bit of a brute force way to do it - it takes a lot of time to rejoin which is unfortunate. Im not sure if theres a smarter way to cull closed poly surfaces that have normals pointing outwards and then just explode + rejoin the outliers - that would speed things up which would be nice.

I marked your answer as solved since it did work, but Im curious if theres a more elegant solution for this that can weed out the offenders.


You need to check each closed polysurface and only flip the normals of the surfaces with inward facing normals. It sounds like you flipped the normals of all the closed polysurfaces so that the objects with correct outward facing normals now have inward facing normals.

If you start a new thread with your Grasshopper network which results in the inward facing normals and ask why it results in some of the polysurfaces having inward facing normsls, then someone may be able to offer a fix to the Grasshopper network. Just describe the problem with flipped normals; no need for a detailed description of your project. You can reference this thread if desired.d