Mesh Intersection Milestones for Rhino 7

Rhino V7 WIP contains new mesh intersection code for a few commands.

  • DupBorder

    DupBorder accepts several types of geometry: when a mesh is part of the input set, the new code is used for it. This gets rid of, or readdresses with a more final fix, a few known bugs.

    Bug fixes

  • MeshIntersect

    This command has fully been rewritten. It has also a few new options, that should be helpful in case of partial overlaps. In addition, for the first time, tolerance is allowed to be modified by the user: the new Default tolerance takes into consideration the absolute Rhino document tolerance, and allows features 3 orders of magnitude smaller than that.

    Bug fixes | Todo list | Dedicated topic…

  • MeshSelfIntersect

    This is the first stub of a new command that facilitates the search of self-intersections within the same mesh. It will be more useful once SplitMeshWithCurve will switch to new code.

  • MeshSplit

    MeshSplit is the first higher-level command that is able to partition meshes. It’s been reworked actively now, and we welcome all feedback.

    In January 2020, a new feature is added that maintains the split face shape.

    Bug fixes | Todo list | Dedicated topic…

  • Contour & Section

    These two commands now use the new mesh intersector to intersect mesh planes and user meshes. As a bonus, Section now respects the end of the line boundary when constructing polylines.

    Added in Oct 2019 | Bug fixed

  • MeshTrim

    MeshTrim now uses the new SDK function, and therefore has the new behavior. The command itself still needs to be polished for the new intersector to work more seamlessly with it.

    Added in Oct 2019

  • Project

    Project, when dealing with meshes, now uses the new SDK functions, and therefore has the new behavior.

    Added in June 2020 | Bug fixes | Todo list

Other Rhino 7 WIP commands use the old functionality. When they will be updated, this page will be updated. They will be addressed approximately in the following order.

  • SplitMeshWithCurve
  • MeshBooleanUnion
  • MeshBooleanDifference
  • MeshBooleanInteresection
  • MeshBooleanSplit

Note: there is no prediction for the final release date of these commands. They may or may not be part of the final Rhino 7.

Download Rhino 7.0 WIP…


Hi @piac ,
Thanks for the new Mesh intersectors!
Are parts of this functionality already available in the V7 SDK? I noticed that there is a new “general” Intersection.MeshMesh. I’m using the old tools with lot of manual clean up and wonder if there already is something new to experiment with.
Thanks, Jess

Regarding RhinoCommon:

New functions use new functionality:

  • Intersect.MeshMesh(...). This will be the main function in V7. This might not be the final incarnation, we are discussing some possible changes: RH-54662
  • Mesh.Split(...) These functions use the new intersector. From next week, the old ones will also respects the value of the Intersection.UseNewMeshIntersections variable.

Old functions currently work like this:

  • Intersect.MeshMeshAccurate() depends on the Intersection.UseNewMeshIntersections variable. Respects old behavior.
  • Intersect.MeshMeshFast() depends on the Intersection.UseNewMeshIntersections variable. Respects old behavior.

Please note that, as a user, you do not need to do anything to use the new functionality.


@Jess, please do not depend on the existence of the new MeshMesh function that Giulio references. This function is still under review and may change in the next week.

Hi Steve,
don’t worry - experimenting is not depending.
But I urgently need more reliable mesh intersections.

1 Like

I am trying to make this work better :slight_smile: . And there is a lot of new code, that did not go through a lot of field testing; so please let me know cases that are not yet working well. Especially simpler, understandable cases would help.


A post was split to a new topic: NullReferenceException with MeshMeshFast

5 posts were split to a new topic: Mesh Mesh Intersections and RhinoCompute

RH-54662 is fixed in the latest WIP

4 posts were split to a new topic: MeshBooleanUnion improvements?

A post was merged into an existing topic: MeshBooleanUnion improvements?

I’m leaning on the mesh boolean functions in a v7 C# grasshopper plugin and getting some incorrect results from some intersection operations. Did the mesh boolean functions get updated as planned in Rhino v7? Or are improvements scheduled for later release?

No, several commands got improved, also outside this list, but the MeshBooleanX commands are still the same as V6.