Find Closest Curve to Point
Windows only
Demonstrates how to find the closest curve to test point using RhinoScript.
Sub FindClosestCurve Const rhPoint = 1 Const rhCurve = 4 'Dim arrCurves : arrCurves = Rhino.ObjectsByType(rhCurve) Dim arrCurves: arrCurves = Rhino.GetObjects("Select curves to test", rhCurve) If Not IsArray(arrCurves) Then Exit Sub Dim strPoint : strPoint = Rhino.GetObject("Select test point", rhPoint) If IsNull(strPoint) Then Exit Sub Dim arrPoint : arrPoint = Rhino.PointCoordinates(strPoint) Dim dblDistance : dblDistance = Null Dim strCurve : strCurve = Null Dim dblParameter : dblParameter = Null Dim arrPt : arrPt = Null Dim i, b, t, pt, d For i = 0 To UBound(arrCurves) b = vbFalse t = Rhino.CurveClosestPoint( arrCurves(i), arrPoint ) If Not IsNull(t) Then pt = Rhino.EvaluateCurve( arrCurves(i), t ) If IsArray(pt) Then d = Rhino.Distance(pt, arrPoint) If IsNull(dblDistance) Then b = vbTrue ElseIf (d < dblDistance) Then b = vbTrue End If If (b = vbTrue) Then dblDistance = d strCurve = arrCurves(i) dblParameter = t arrPt = pt End If End If End If Next If Not IsNull(dblDistance) Then Rhino.Print "Closest curve = " & CStr(strCurve) Rhino.Print "Curve parameter = " & CStr(dblParameter) Rhino.Print "Point = " & Rhino.Pt2Str(arrPt) Rhino.Print "Distance = " & CStr(dblDistance) Rhino.SelectObject strCurve Rhino.SelectObject Rhino.AddPoint(arrPt) End If End Sub