The ability to Trim, Union, Subtract, and Split mesh geometry is critical when working with imported models. We continue to re-write new mesh commands to work on models that would previously fail.
Results of boolean have been greatly improved.
Mesh faces keep the same mesh organization as inputs.
More mesh models are successful even if not always well structured.
This code is a work in progress. We’re continuing to work on improving the results in hopes you’ll have a chance to test and report examples that work better and those having trouble.
Developers can access the new code through: Rhino.Geometry.Mesh.Split(), Rhino.Geometry.Mesh.CreateBooleanUnion(), Rhino.Geometry.Mesh.CreateBooleanDifference(), Rhino.Geometry.Mesh.CreateBooleanSplit() is available in RhinoCommon for use in C# and Python.
I just tested a mesh boolean in today’s updated WIP, something very basic: an open mesh from a loft that is passing right through another close mesh, yet the open mesh has normals clearly define and compatible to create a clean boolean subtraction, it still failed.
@gustojunk I’ve written up a YT for your file, thanks for sending. The following is currently invisible to public due to your sent file link. RH-74786 MeshBooleanDifference fail
Thanks for your great test file, @gustojunk. I’d like to explain why you get this. The code algorithms of Mesh Booleans are now, by design, almost entirely normals-independent. It is still expected, however, that for some cases of open meshes, this might give “wrong” (actually I would rather use the word “unexpected”) results. This is because our brain infers information about what is “inside” from the object itself.
For this reason, we are adding a subset of instructions to conduct some sort of resolution in case of open meshes, using normals this time. This code isn’t ready yet, so it’s only partially enabled.
I’ve made @Gijs’ link public so that you can follow at least some part of the progress.
Thanks,
Giulio
–
Giulio Piacentino
for Robert McNeel & Associates giulio@mcneel.com
Hi Giulio, thanks for the update and explanation. In this particular case is almost trivial needing to pay attention to normals since the boolean operand can easily be closed. But for us being able to do booleans in the way we want/expect with open (= half-modeled) operands is a huge time saver. So I really hope that this functionally is not eliminated regardless of the topology type.