Computes the distance between two points.
Namespace:
Rhino.Geometry
Assembly:
RhinoCommon (in RhinoCommon.dll)
Since: 5.0
Syntax public double DistanceTo(
Point2d other
)
Public Function DistanceTo (
other As Point2d
) As Double
Parameters
- other
- Type: Rhino.GeometryPoint2d
Another point.
Return Value
Type:
DoubleThe length of the line between the two points, or 0 if either point is invalid.
Examples using Rhino;
using Rhino.Geometry;
using Rhino.Commands;
using System.Collections.Generic;
using System.Linq;
namespace examples_cs
{
public class LeaderCommand : Command
{
public override string EnglishName { get { return "csLeader"; } }
protected override Result RunCommand(RhinoDoc doc, RunMode mode)
{
var points = new Point3d[]
{
new Point3d(1, 1, 0),
new Point3d(5, 1, 0),
new Point3d(5, 5, 0),
new Point3d(9, 5, 0)
};
var xy_plane = Plane.WorldXY;
var points2d = new List<Point2d>();
foreach (var point3d in points)
{
double x, y;
if (xy_plane.ClosestParameter(point3d, out x, out y))
{
var point2d = new Point2d(x, y);
if (points2d.Count < 1 || point2d.DistanceTo(points2d.Last<Point2d>()) > RhinoMath.SqrtEpsilon)
points2d.Add(point2d);
}
}
doc.Objects.AddLeader(xy_plane, points2d);
doc.Views.Redraw();
return Result.Success;
}
}
}
Imports Rhino
Imports Rhino.Geometry
Imports Rhino.Commands
Imports System.Collections.Generic
Imports System.Linq
Namespace examples_vb
Public Class LeaderCommand
Inherits Command
Public Overrides ReadOnly Property EnglishName() As String
Get
Return "vbLeader"
End Get
End Property
Protected Overrides Function RunCommand(doc As RhinoDoc, mode As RunMode) As Result
Dim points = New List(Of Point3d)() From { _
New Point3d(1, 1, 0), _
New Point3d(5, 1, 0), _
New Point3d(5, 5, 0), _
New Point3d(9, 5, 0) _
}
Dim xyPlane = Plane.WorldXY
Dim points2d = New List(Of Point2d)()
For Each point3d As Point3d In points
Dim x As Double, y As Double
If xyPlane.ClosestParameter(point3d, x, y) Then
Dim point2d = New Point2d(x, y)
If points2d.Count < 1 OrElse point2d.DistanceTo(points2d.Last()) > RhinoMath.SqrtEpsilon Then
points2d.Add(point2d)
End If
End If
Next
doc.Objects.AddLeader(xyPlane, points2d)
doc.Views.Redraw()
Return Result.Success
End Function
End Class
End Namespace
import rhinoscriptsyntax as rs
def RunCommand():
points = [(1,1,0), (5,1,0), (5,5,0), (9,5,0)]
rs.AddLeader(points)
if __name__ == "__main__":
RunCommand()
See Also