Skip to content

Curve.IsShort (Double)

Public Class

Used to quickly find short curves.

Namespace: Rhino.Geometry

Assembly: RhinoCommon (in RhinoCommon.dll)

**Since:**5.0

Syntax

public bool IsShort(
double tolerance
)

Parameters

tolerance

Type:System.Double
Length threshold value for “shortness”.

Return Value

Type:Boolean
true if the length of the curve is <= tolerance.

Remarks

Faster than calling Length() and testing the result.

Examples

using Rhino.DocObjects;
partial class Examples
{
public static Rhino.Commands.Result DivideByLengthPoints(Rhino.RhinoDoc doc)
{
const ObjectType filter = Rhino.DocObjects.ObjectType.Curve;
Rhino.DocObjects.ObjRef objref;
Rhino.Commands.Result rc = Rhino.Input.RhinoGet.GetOneObject("Select curve to divide", false, filter, out objref);
if (rc != Rhino.Commands.Result.Success || objref == null)
return rc;
Rhino.Geometry.Curve crv = objref.Curve();
if (crv == null || crv.IsShort(Rhino.RhinoMath.ZeroTolerance))
return Rhino.Commands.Result.Failure;
double crv_length = crv.GetLength();
string s = string.Format("Curve length is {0:f3}. Segment length", crv_length);
double seg_length = crv_length / 2.0;
rc = Rhino.Input.RhinoGet.GetNumber(s, false, ref seg_length, 0, crv_length);
if (rc != Rhino.Commands.Result.Success)
return rc;
Rhino.Geometry.Point3d[] points;
crv.DivideByLength(seg_length, true, out points);
if (points == null)
return Rhino.Commands.Result.Failure;
foreach (Rhino.Geometry.Point3d point in points)
doc.Objects.AddPoint(point);
doc.Views.Redraw();
return Rhino.Commands.Result.Success;
}
}
import Rhino
import scriptcontext
def DivideByLengthPoints():
filter = Rhino.DocObjects.ObjectType.Curve
rc, objref = Rhino.Input.RhinoGet.GetOneObject("Select curve to divide", False, filter)
if not objref or rc!=Rhino.Commands.Result.Success: return rc
crv = objref.Curve()
if not crv or crv.IsShort(Rhino.RhinoMath.ZeroTolerance):
return Rhino.Commands.Result.Failure
crv_length = crv.GetLength()
s = "Curve length is {0:.3f}. Segment length".format(crv_length)
seg_length = crv_length / 2.0
rc, length = Rhino.Input.RhinoGet.GetNumber(s, False, seg_length, 0, crv_length)
if rc!=Rhino.Commands.Result.Success: return rc
t_vals = crv.DivideByLength(length, True)
if not t_vals:
return Rhino.Commands.Result.Failure
[scriptcontext.doc.Objects.AddPoint(crv.PointAt(t)) for t in t_vals]
scriptcontext.doc.Views.Redraw()
return Rhino.Commands.Result.Success
if __name__=="__main__":
DivideByLengthPoints()