Create Mesh from Brep

Demonstrates how to create a mesh from a selected surface or polysurface.

partial class Examples
{
  public static Result CreateMeshFromBrep(RhinoDoc doc)
  {
    ObjRef obj_ref;
    var rc = RhinoGet.GetOneObject("Select surface or polysurface to mesh", true, ObjectType.Surface | ObjectType.PolysrfFilter, out obj_ref);
    if (rc != Result.Success)
      return rc;
    var brep = obj_ref.Brep();
    if (null == brep)
      return Result.Failure;

    // you could choose anyone of these for example
    var jagged_and_faster = MeshingParameters.Coarse;
    var smooth_and_slower = MeshingParameters.Smooth;
    var default_mesh_params = MeshingParameters.Default;
    var minimal = MeshingParameters.Minimal;

    var meshes = Mesh.CreateFromBrep(brep, smooth_and_slower);
    if (meshes == null || meshes.Length == 0)
      return Result.Failure;

    var brep_mesh = new Mesh();
    foreach (var mesh in meshes)
      brep_mesh.Append(mesh);
    doc.Objects.AddMesh(brep_mesh);
    doc.Views.Redraw();

    return Result.Success;
  }
}
Partial Friend Class Examples
  Public Shared Function CreateMeshFromBrep(ByVal doc As RhinoDoc) As Result
	Dim obj_ref As ObjRef = Nothing
	Dim rc = RhinoGet.GetOneObject("Select surface or polysurface to mesh", True, ObjectType.Surface Or ObjectType.PolysrfFilter, obj_ref)
	If rc IsNot Result.Success Then
	  Return rc
	End If
	Dim brep = obj_ref.Brep()
	If Nothing Is brep Then
	  Return Result.Failure
	End If

	' you could choose anyone of these for example
	Dim jagged_and_faster = MeshingParameters.Coarse
	Dim smooth_and_slower = MeshingParameters.Smooth
	Dim default_mesh_params = MeshingParameters.Default
	Dim minimal = MeshingParameters.Minimal

	Dim meshes = Mesh.CreateFromBrep(brep, smooth_and_slower)
	If meshes Is Nothing OrElse meshes.Length = 0 Then
	  Return Result.Failure
	End If

	Dim brep_mesh = New Mesh()
	For Each mesh In meshes
	  brep_mesh.Append(mesh)
	Next mesh
	doc.Objects.AddMesh(brep_mesh)
	doc.Views.Redraw()

	Return Result.Success
  End Function
End Class
import Rhino
from Rhino.Geometry import *
from Rhino.Input import RhinoGet
from Rhino.Commands import Result
from Rhino.DocObjects import ObjectType
import rhinoscriptsyntax as rs
from scriptcontext import doc

def RunCommand():
  rc, objRef = RhinoGet.GetOneObject("Select surface or polysurface to mesh", True,
                                     ObjectType.Surface | ObjectType.PolysrfFilter)
  if rc <> Result.Success:
    return rc
  brep = objRef.Brep()
  if None == brep:
    return Result.Failure

  jaggedAndFaster = MeshingParameters.Coarse
  smoothAndSlower = MeshingParameters.Smooth
  defaultMeshParams = MeshingParameters.Default
  minimal = MeshingParameters.Minimal

  meshes = Mesh.CreateFromBrep(brep, smoothAndSlower)
  if meshes == None or meshes.Length == 0:
    return Result.Failure

  brepMesh = Mesh()
  for mesh in meshes:
    brepMesh.Append(mesh)
  doc.Objects.AddMesh(brepMesh)
  doc.Views.Redraw()

if __name__ == "__main__":
  RunCommand()