-
- ' 坐标点排序函数
- ' 语法:SortPoints(Points, SortMode)
- ' Points为坐标点数组
- ' SortMode为排序方式:0=X向,1=Y向,2=Z向
- ' 返回值为排序后的坐标点数组
- Public Function SortPoints(Points As Variant, SortMode As String) As Variant
- Dim NewPoints() As Variant
- ReDim NewPoints(UBound(Points))
- Dim k As Long
- For k = 0 To UBound(NewPoints)
- NewPoints(k) = Points(k)
- Next k
-
- Dim BestPoint As Variant
- Dim Pnt1 As Double
- Dim Pnt2 As Double
- Dim i As Long
- Dim j As Long
- Dim Best_Value As Double
- Dim Best_j As Long
- For i = 0 To UBound(NewPoints) - 1
- Best_Value = NewPoints(i)(SortMode)
- BestPoint = NewPoints(i)
- Best_j = i
- For j = i + 1 To UBound(NewPoints)
- If NewPoints(j)(SortMode) pt2(n) Eqv A Then
- points(i) = pt2
- points(j) = pt1
- End If
- Next j
- Next i
- '副方向排序
- For i = LBound(points) To UBound(points)
- For j = i To UBound(points)
- pt1 = points(i)
- pt2 = points(j)
- If pt1(n) = pt2(n) Then
- If pt1(1 - n) > pt2(1 - n) Eqv B Then
- points(i) = pt2
- points(j) = pt1
- End If
- End If
- Next j
- Next i
-
- End Sub
|