Тема: поиск второй координаты линии

Имеется последовательность "line'ов" соединенных между собой последовательно. Возможно ли програмно найти вторую координату линии зная первую? (суть программы в автоматическом  измерении всей длины этой "змейки" из линий, при выборе первой линии) Есть альтернатива перебора всех линий которые есть на чертеже и сравнения их координат, на на большом чертеже очень тормозит. Может есть что-нибудь оптимальней?
                                                 Спасибо.

Re: поиск второй координаты линии

> keypro
Если я правильно уловил постановку задачи, то нужно найти все соединенные концами отрезки имея один из них (не обязательно крайний). Если все отрезки видны на экране (это очень важное условие), то можно воспользоваться выбором небольшой секущей рамкой у концов отрезков, а затем уже из отобранных проверять на совпадение начал/концов с текущим. И так далее по всей змейке. Если речь идет только об отрезках то можно заменить секущую рамку на фильтр по DXF группам 10 и 11 (сравнение на >=,<=) Фильтр будет достаточно сложный, но тогда требование о видимости всех отрезков на кране снимается. Но это тоже может быть достаточно долгий процесс, т.к. AutoCAD будет пробегаться по всей базе чертежа и выискивать примитивы удовлетворяющие фильтру. Так как в VBA не силен, то код писать не буду. Думаю, что идея и так ясна.

Re: поиск второй координаты линии

Спасибо за совет. Уточняю программа задумывалась следующим образом: выделение первого отрезка (получение координат начала и конца отрезка, получение значение длины); вычисление второй координаты следующего отрезка  (это то мне и необходимо понять как вычислить)(первая координата второго отрезка совпадает c концом первого отрезка); вычисление длины второго отрезка ; суммирование длин первого и второго отрезка ; и так далее в цикле пока отрезки не закончаться
При этом все отрезки в одном слое, с одним типом линий, одним цветом, одной толщины.

Re: поиск второй координаты линии

> keypro
Довольно близкая по духу задача решалась здесь:
https://www.caduser.ru/forum/topic20184.html

Re: поиск второй координаты линии

Да вы правы это то что нужно. Только если вас не затруднит не могли бы обьяснить основную идею поиска концов отрезков. С конкретным примером кода. Буду очень благодарен.
P.S.Программа отлично работает.

Re: поиск второй координаты линии

> keypro
А тебе обязательно на VBA или лисп сгодится?

Re: поиск второй координаты линии

Ага на VBA нужно.

Re: поиск второй координаты линии

Эта программы кусочек большого приложения написанного на VBA.

Re: поиск второй координаты линии

> keypro
Если вопрос адресован мне, то -
идея более чем тривиальна:
Из имеющегося набора примитивов-линий выбираем координаты концов этих линий а затем сравниваем точки, все со всеми. Если в одном конце не начинается (или не заканчивается) другая линия, то это искомая точка разрыва.

'Перебор-сравнение точек:
Private Sub BreakPoint(PointSet As Collection, BreakPoints As Collection)
    Dim TerminPoint() As Double
    Dim Point() As Double
    Dim i As Integer
    Dim j As Integer
    Dim k As Boolean
    For i = 1 To PointSet.Count
        k = True
        TerminPoint() = PointSet(i)
'interior loop:
        For j = 1 To PointSet.Count
            Point() = PointSet(j)
            If (ToAgree(TerminPoint(), Point()) And (i <> j)) Then
                k = False
                Exit For
            End If
        Next j
        If (k) Then
            BreakPoints.Add TerminPoint()
        End If
   Next i
   Set PointSet = Nothing
End Sub
'Cравнение координат точек:
Private Function ToAgree(TerminPoint() As Double, Point() As Double) As Boolean
    ToAgree = False
    If ((CSng(TerminPoint(0)) = CSng(Point(0))) And (CSng(TerminPoint(1)) = CSng(Point(1)))) Then
        ToAgree = True
    End If
End Function

Re: поиск второй координаты линии

Большое спасибо! Осталось только в коде разобраться. Я честно признаться не давно начал освоение VBA так что  кое что не понятно. Я так понял что PointSet и есть семейство координат концов линий которые имеются на чертеже а i и j  это координаты x y или я ошибаюсь?

Re: поиск второй координаты линии

> keypro
Я сочинил эту программу давненько, и не расписал подробный комментарий, так что мне самому надо разбираться, что там к чему...
Но. В разделе выложен полный код и при желании можно все разложить по полочкам, что всегда полезно начинающим. Я бы посоветовал.
А i и j это счетчики цикла.

Re: поиск второй координаты линии

Будем разбираться)