Skip to content

M_Rhino_Geometry_Curve_IsPolyline

Will Pearson edited this page Aug 12, 2016 · 2 revisions

Curve.IsPolyline Method

Several types of Curve can have the form of a polyline including a degree 1 NurbsCurve, a PolylineCurve, and a PolyCurve all of whose segments are some form of polyline. IsPolyline tests a curve to see if it can be represented as a polyline.

Namespace: Rhino.Geometry
Assembly: RhinoCommon (in RhinoCommon.dll) Version: Rhino 6.0

Syntax

C#

public bool IsPolyline()

VB

Public Function IsPolyline As Boolean

Return Value

Type: Boolean
true if this curve can be represented as a polyline; otherwise, false.

Examples

VB

Imports Rhino
Imports Rhino.DocObjects
Imports Rhino.Commands
Imports Rhino.Geometry
Imports Rhino.Input

Namespace examples_vb
  Public Class AddRadialDimensionCommand
    Inherits Rhino.Commands.Command
    Public Overrides ReadOnly Property EnglishName() As String
      Get
        Return "vbAddRadialDimension"
      End Get
    End Property

    Protected Overrides Function RunCommand(doc As RhinoDoc, mode As RunMode) As Result
      Dim obj_ref As ObjRef = Nothing
      Dim rc = RhinoGet.GetOneObject("Select curve for radius dimension", True, ObjectType.Curve, obj_ref)
      If rc <> Result.Success Then
        Return rc
      End If
      Dim curve_parameter As Double
      Dim curve = obj_ref.CurveParameter(curve_parameter)
      If curve Is Nothing Then
        Return Result.Failure
      End If

      If curve.IsLinear() OrElse curve.IsPolyline() Then
        RhinoApp.WriteLine("Curve must be non-linear.")
        Return Result.[Nothing]
      End If

      ' in this example just deal with planar curves
      If Not curve.IsPlanar() Then
        RhinoApp.WriteLine("Curve must be planar.")
        Return Result.[Nothing]
      End If

      Dim point_on_curve = curve.PointAt(curve_parameter)
      Dim curvature_vector = curve.CurvatureAt(curve_parameter)
      Dim len = curvature_vector.Length
      If len < RhinoMath.SqrtEpsilon Then
        RhinoApp.WriteLine("Curve is almost linear and therefore has no curvature.")
        Return Result.[Nothing]
      End If

      Dim center = point_on_curve + (curvature_vector / (len * len))
      Dim plane As Plane
      curve.TryGetPlane(plane)
      Dim radial_dimension = New RadialDimension(center, point_on_curve, plane.XAxis, plane.Normal, 5.0)
      doc.Objects.AddRadialDimension(radial_dimension)
      doc.Views.Redraw()
      Return Result.Success
    End Function
  End Class
End Namespace

C#

using Rhino;
using Rhino.DocObjects;
using Rhino.Commands;
using Rhino.Geometry;
using Rhino.Input;

namespace examples_cs
{
  public class AddRadialDimensionCommand : Rhino.Commands.Command
  {
    public override string EnglishName
    {
      get { return "csAddRadialDimension"; }
    }

    protected override Result RunCommand(RhinoDoc doc, RunMode mode)
    {
      ObjRef obj_ref;
      var rc = RhinoGet.GetOneObject("Select curve for radius dimension", 
        true, ObjectType.Curve, out obj_ref);
      if (rc != Result.Success)
        return rc;
      double curve_parameter;
      var curve = obj_ref.CurveParameter(out curve_parameter);
      if (curve == null)
        return Result.Failure;

      if (curve.IsLinear() || curve.IsPolyline())
      {
        RhinoApp.WriteLine("Curve must be non-linear.");
        return Result.Nothing;
      }

      // in this example just deal with planar curves
      if (!curve.IsPlanar())
      {
        RhinoApp.WriteLine("Curve must be planar.");
        return Result.Nothing;
      }

      var point_on_curve = curve.PointAt(curve_parameter);
      var curvature_vector = curve.CurvatureAt(curve_parameter);
      var len = curvature_vector.Length;
      if (len < RhinoMath.SqrtEpsilon)
      {
        RhinoApp.WriteLine("Curve is almost linear and therefore has no curvature.");
        return Result.Nothing;
      }

      var center = point_on_curve + (curvature_vector/(len*len));
      Plane plane;
      curve.TryGetPlane(out plane);
      var radial_dimension = 
        new RadialDimension(center, point_on_curve, plane.XAxis, plane.Normal, 5.0);
      doc.Objects.AddRadialDimension(radial_dimension);
      doc.Views.Redraw();
      return Result.Success;
    }
  }
}

Python

from Rhino import *
from Rhino.DocObjects import *
from Rhino.Commands import *
from Rhino.Geometry import *
from Rhino.Input import *
from scriptcontext import doc

def RunCommand():
  rc, obj_ref = RhinoGet.GetOneObject("Select curve for radius dimension", 
    True, ObjectType.Curve)
  if rc != Result.Success:
    return rc
  curve, curve_parameter = obj_ref.CurveParameter()
  if curve == None:
    return Result.Failure

  if curve.IsLinear() or curve.IsPolyline():
    print "Curve must be non-linear."
    return Result.Nothing

  # in this example just deal with planar curves
  if not curve.IsPlanar():
    print "Curve must be planar."
    return Result.Nothing

  point_on_curve = curve.PointAt(curve_parameter)
  curvature_vector = curve.CurvatureAt(curve_parameter)
  len = curvature_vector.Length
  if len < RhinoMath.SqrtEpsilon:
    print "Curve is almost linear and therefore has no curvature."
    return Result.Nothing

  center = point_on_curve + (curvature_vector/(len*len))
  _, plane = curve.TryGetPlane()
  radial_dimension = \
    RadialDimension(center, point_on_curve, plane.XAxis, plane.Normal, 5.0)
  doc.Objects.AddRadialDimension(radial_dimension)
  doc.Views.Redraw()
  return Result.Success

if __name__=="__main__":
  RunCommand()

Version Information

Supported in: 6.0.16224.21491, 5D58w

See Also

Reference

Curve Class
Rhino.Geometry Namespace

Clone this wiki locally