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 Rhinoimport 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()