I try to programmatically unionize solids with RhinoCommon.
For this I use an iterative process:
I take two solids from the list and calculate the BooleanUnion.
If successful (valid and closed) the result is added to the list and the input solids are removed.
This does not work sometimes for non-intersecting but touching solids.
Tolerance is a big deal when joining surfaces and performing Boolean operations. The model units seem reasonable. Are you using an alternative tolerance when building your solids or performing the union?
But, no, there is no silver bullet for this - sorry.
I’ve taken another look at this model and, honestly, it’s a bit of a mess. It’s probably more efficient to take some time and clean it up manually just using Rhino.
The “Building Solid” layer contains 11 closed solid polysurfaces.
I do not understand what is meant by a bit of a mess.
Do you mean the (random) division of the 11 solids? This is due to the iterative approach, which simply unifies the parts that produce a valid result.
When I try to make a BooleanUnion in Rhino, it fails too (Boolean union failed.)
I have tried different Model Absolute Tolerance settings in the Document Properties. Without success.
Therefore it would help me if you could briefly explain what I should clean up.