Тема: Метод Select объекта SelectionSets, порядок выделения
Здравствуйте! Имеется несколько вертикальных линий. Пользователю предлагается выбрать две точки (левее и правее) линий. После чего требуется концы (начала)линии сверху соеденить полилинией. Кусок кода следующий:
Dim lineObj As AcadLine Dim lineObj2 As AcadLine Dim lineObj3 As AcadLine Dim startPt(0 To 2) As Double Dim endPt As Variant Dim plineObj As AcadPolyline Dim returnPnt As Variant Dim returnPnt2 As Variant returnPnt = ThisDrawing.Utility.GetPoint(, "1:") endPt = ThisDrawing.Utility.GetPoint(, "2:") endPt(1) = returnPnt(1) Set lineObj = ThisDrawing.ModelSpace.AddLine(returnPnt, endPt) Dim ssetObj As AcadSelectionSet Set ssetObj = ThisDrawing.SelectionSets.Add("SSET") Dim mode As Integer mode = acSelectionSetCrossing ssetObj.Select mode, returnPnt, endPt Dim ar() As Double For i = 0 To ssetObj.Count - 1 ReDim Preserve ar(i * 3 + 2) Set lineObj3 = ssetObj.Item(i) If lineObj3.startPoint(1) > lineObj3.endPoint(1) Then ar(i * 3) = lineObj3.startPoint(0) ar(i * 3 + 1) = lineObj3.startPoint(1) ar(i * 3 + 2) = lineObj3.startPoint(2) Else ar(i * 3) = lineObj3.endPoint(0) ar(i * 3 + 1) = lineObj3.endPoint(1) ar(i * 3 + 2) = lineObj3.endPoint(2) End If Set plineObj = ThisDrawing.ModelSpace.AddPolyline(ar)
Все бы ничего, но перебирая линии, попавшие в выделение, и строя по их верхним точкам полилинию, получается так, что линии в выделении ssetObj нумеруются не по порядку следования слева направо или справо налево, а в порядке их создания на чертеже. Это значительно ухудшает дело. Если массив точек полилинии еще можно отсортровать, то вторую задачу, стоящую передо мной, а именно - вычисления расстояниями между линиями, становится не так-то просто решить, если порядок создания не слева направо или наоборот.
Есть какие-нибудь идеи?
Заранее благодарю