M_Rhino_Geometry_Curve_PointAtLength - mcneel/rhinocommon-api-docs GitHub Wiki
Gets a point at a certain length along the curve. The length must be non-negative and less than or equal to the length of the curve. Lengths will not be wrapped when the curve is closed or periodic.
Namespace: Rhino.Geometry
Assembly: RhinoCommon (in RhinoCommon.dll) Version: Rhino 6.0
C#
public Point3d PointAtLength(
double length
)
VB
Public Function PointAtLength (
length As Double
) As Point3d
- length
- Type: System.Double
Length along the curve between the start point and the returned point.
Type: Point3d
Point on the curve at the specified length from the start point or Poin3d.Unset on failure.
VB
Partial Class Examples
Public Shared Function ArcLengthPoint(ByVal doc As Rhino.RhinoDoc) As Rhino.Commands.Result
Dim objref As Rhino.DocObjects.ObjRef = Nothing
Dim rc As Rhino.Commands.Result = Rhino.Input.RhinoGet.GetOneObject("Select curve", True, Rhino.DocObjects.ObjectType.Curve, objref)
If rc <> Rhino.Commands.Result.Success Then
Return rc
End If
Dim crv As Rhino.Geometry.Curve = objref.Curve()
If crv Is Nothing Then
Return Rhino.Commands.Result.Failure
End If
Dim crv_length As Double = crv.GetLength()
Dim length As Double = 0
rc = Rhino.Input.RhinoGet.GetNumber("Length from start", True, length, 0, crv_length)
If rc <> Rhino.Commands.Result.Success Then
Return rc
End If
Dim pt As Rhino.Geometry.Point3d = crv.PointAtLength(length)
If pt.IsValid Then
doc.Objects.AddPoint(pt)
doc.Views.Redraw()
End If
Return Rhino.Commands.Result.Success
End Function
End Class
C#
partial class Examples
{
public static Rhino.Commands.Result ArcLengthPoint(Rhino.RhinoDoc doc)
{
Rhino.DocObjects.ObjRef objref;
Rhino.Commands.Result rc = Rhino.Input.RhinoGet.GetOneObject("Select curve",
true, Rhino.DocObjects.ObjectType.Curve,out objref);
if(rc!= Rhino.Commands.Result.Success)
return rc;
Rhino.Geometry.Curve crv = objref.Curve();
if( crv==null )
return Rhino.Commands.Result.Failure;
double crv_length = crv.GetLength();
double length = 0;
rc = Rhino.Input.RhinoGet.GetNumber("Length from start", true, ref length, 0, crv_length);
if(rc!= Rhino.Commands.Result.Success)
return rc;
Rhino.Geometry.Point3d pt = crv.PointAtLength(length);
if (pt.IsValid)
{
doc.Objects.AddPoint(pt);
doc.Views.Redraw();
}
return Rhino.Commands.Result.Success;
}
}
Python
import Rhino
import scriptcontext
def ArcLengthPoint():
rc, objref = Rhino.Input.RhinoGet.GetOneObject("Select curve", True, Rhino.DocObjects.ObjectType.Curve)
if rc!=Rhino.Commands.Result.Success: return rc
crv = objref.Curve()
if not crv: return Rhino.Commands.Result.Failure
crv_length = crv.GetLength()
length = 0
rc, length = Rhino.Input.RhinoGet.GetNumber("Length from start", True, length, 0, crv_length)
if rc!=Rhino.Commands.Result.Success: return rc
pt = crv.PointAtLength(length)
if pt.IsValid:
scriptcontext.doc.Objects.AddPoint(pt)
scriptcontext.doc.Views.Redraw()
return Rhino.Commands.Result.Success
if __name__=="__main__":
ArcLengthPoint()
Supported in: 6.0.16224.21491, 5D58w