Site Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

developer:rhinocommonsamples:curvebrepbox [2015/09/14] (current)
Line 1: Line 1:
 +===== Sample: Create a Box From a Curve'​s Bounding Box =====
 +
 +===== C# =====
 +<code c#>
 +[System.Runtime.InteropServices.Guid("​6F954183-C359-4CEF-94C1-3A108D36B366"​)]
 +public class BrepFromCurveBBoxCommand : Command
 +{
 +  public override string EnglishName { get { return "​csBrepFromCurveBBox";​ } }
 +
 +  protected override Result RunCommand(RhinoDoc doc, RunMode mode)
 +  {
 +    Rhino.DocObjects.ObjRef objref;
 +    var rc = RhinoGet.GetOneObject("​Select Curve",​ false, ObjectType.Curve,​ out objref);
 +    if( rc != Result.Success )
 +      return rc;
 +    var curve = objref.Curve();​
 +
 +    var view = doc.Views.ActiveView;​
 +    var plane = view.ActiveViewport.ConstructionPlane();​
 +    // Create a construction plane aligned bounding box
 +    var bbox = curve.GetBoundingBox(plane);​
 +
 +    if (bbox.IsDegenerate(doc.ModelAbsoluteTolerance) > 0) {
 +      RhinoApp.WriteLine("​the curve'​s bounding box is degenerate (flat) in at least one direction so a box cannot be created."​);​
 +      return Result.Failure;​
 +    }
 +    var brep = Brep.CreateFromBox(bbox);​
 +    doc.Objects.AddBrep(brep);​
 +    doc.Views.Redraw();​
 +    return Result.Success;​
 +  }
 +}
 +</​code>​
 +===== VB.NET =====
 +<code vb>
 +<​System.Runtime.InteropServices.Guid("​A7E8558B-5F4E-426C-9352-BEFFA645AC33"​)>​ _
 +Public Class BrepFromCurveBBoxCommand
 +  Inherits Command
 +  Public Overrides ReadOnly Property EnglishName() As String
 +    Get
 +      Return "​vbBrepFromCurveBBox"​
 +    End Get
 +  End Property
 +
 +  Protected Overrides Function RunCommand(doc As RhinoDoc, mode As RunMode) As Result
 +    Dim objref As Rhino.DocObjects.ObjRef
 +    Dim rc = RhinoGet.GetOneObject("​Select Curve",​ False, Rhino.DocObjects.ObjectType.Curve,​ objref)
 +    If rc <> Result.Success Then
 +      Return rc
 +    End If
 +    Dim curve = objref.Curve()
 +
 +    Dim view = doc.Views.ActiveView
 +    Dim plane = view.ActiveViewport.ConstructionPlane()
 +    ' Create a construction plane aligned bounding box
 +    Dim bbox = curve.GetBoundingBox(plane)
 +
 +    If bbox.IsDegenerate(doc.ModelAbsoluteTolerance) > 0 Then
 +      RhinoApp.WriteLine("​the curve'​s bounding box is degenerate (flat) in at least one direction so a box cannot be created."​)
 +      Return Result.Failure
 +    End If
 +    Dim brep__1 = Brep.CreateFromBox(bbox)
 +    doc.Objects.AddBrep(brep__1)
 +    doc.Views.Redraw()
 +    Return Result.Success
 +  End Function
 +End Class
 +d Namespace
 +</​code>​
 +===== Python =====
 +<code python>
 +import Rhino
 +from Rhino.Geometry import *
 +from Rhino.Commands import Result
 +from Rhino.Input import RhinoGet
 +from Rhino.DocObjects import ObjectType
 +import rhinoscriptsyntax as rs
 +from scriptcontext import doc
 +
 +def RunCommand():​
 +  rc, objRef = RhinoGet.GetOneObject("​Select curve",​ False, ObjectType.Curve)
 +  if rc <> Result.Success:​
 +    return rc
 +  curve = objRef.Curve()
 +  if None == curve:
 +    return Result.Failure
 +
 +  view = doc.Views.ActiveView
 +  plane = view.ActiveViewport.ConstructionPlane()
 +  # Create a construction plane aligned bounding box
 +  bbox = curve.GetBoundingBox(plane)
 +
 +  if bbox.IsDegenerate(doc.ModelAbsoluteTolerance) > 0:
 +    print "the curve'​s bounding box is degenerate (flat) in at least one direction so a box cannot be created."​
 +    return Result.Failure
 +
 +  brep = Brep.CreateFromBox(bbox)
 +  doc.Objects.AddBrep(brep)
 +  doc.Views.Redraw()
 +
 +  return Result.Success
 +
 +if __name__ == "​__main__":​
 +  print RunCommand()
 +</​code>​
 +
 +{{tag>​Developer rhinocommon}}
  
developer/rhinocommonsamples/curvebrepbox.txt ยท Last modified: 2015/09/14 (external edit)