Surface from Edge Curves

Create a Surface from Edge Curves

partial class Examples
{
  public static Result EdgeSrf(RhinoDoc doc)
  {
    var go = new GetObject();
    go.SetCommandPrompt("Select 2, 3, or 4 open curves");
    go.GeometryFilter = ObjectType.Curve;
    go.GeometryAttributeFilter = GeometryAttributeFilter.OpenCurve;
    go.GetMultiple(2, 4);
    if (go.CommandResult() != Result.Success)
      return go.CommandResult();

    var curves = go.Objects().Select(o => o.Curve());

    var brep = Brep.CreateEdgeSurface(curves);

    if (brep != null)
    {
      doc.Objects.AddBrep(brep);
      doc.Views.Redraw();
    }

    return Result.Success;
  }
}
Partial Friend Class Examples
  Public Shared Function EdgeSrf(ByVal doc As RhinoDoc) As Result
	Dim go = New GetObject()
	go.SetCommandPrompt("Select 2, 3, or 4 open curves")
	go.GeometryFilter = ObjectType.Curve
	go.GeometryAttributeFilter = GeometryAttributeFilter.OpenCurve
	go.GetMultiple(2, 4)
	If go.CommandResult() <> Result.Success Then
	  Return go.CommandResult()
	End If

	Dim curves = go.Objects().Select(Function(o) o.Curve())

	Dim brep = Brep.CreateEdgeSurface(curves)

	If brep IsNot Nothing Then
	  doc.Objects.AddBrep(brep)
	  doc.Views.Redraw()
	End If

	Return Result.Success
  End Function
End Class
from Rhino import *
from Rhino.Commands import *
from Rhino.DocObjects import *
from Rhino.Geometry import *
from Rhino.Input.Custom import *
from scriptcontext import doc

def RunCommand():
  go = GetObject()
  go.SetCommandPrompt("Select 2, 3, or 4 open curves")
  go.GeometryFilter = ObjectType.Curve
  go.GeometryAttributeFilter = GeometryAttributeFilter.OpenCurve
  go.GetMultiple(2, 4)
  if go.CommandResult() <> Result.Success:
    return go.CommandResult()

  curves = [o.Curve() for o in go.Objects()]

  brep = Brep.CreateEdgeSurface(curves)

  if brep <> None:
    doc.Objects.AddBrep(brep)
    doc.Views.Redraw()

  return Result.Success

if __name__ == "__main__":
  RunCommand()