AttachToNodes method (Layer)

Подтягивает начала и концы участков к близлежащим узлам, находящимся в заданной окрестности.

Применяется к:

Layer

Синтаксис:

Visual Basic:

Function AttachToNodes(Delta As double, Flags As Long ) As Long

Delta - окрестность для поиска ближайшего узла в метрах

Flags - параметр зарезервирован, должен быть равен 0

Описание:

Если метод выполнен успешно, метод возвращает 0. В противном случае метод возвращает -1.

Метод обрабатывает только выделенные линии слоя — и типовые, и примитивы; выделение задаётся через свойство Selection. Начало или конец выделенной линии, лежащие не дальше Delta от узла, переносятся точно в точку узла. Окрестность задаётся в метрах независимо от единиц, в которых хранятся координаты слоя.

Пример:

Visual Basic:

Sub Layer_AttachToNodes
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
'Выделяем все линии слоя
L.Selection.Clear
Set En = L.EnumElements
En.MoveFirst
n = 0
Do While Not En.IsEOF
  If En.GraphType = 0 Then
    L.Selection.AddElem En.ElemID
    n = n + 1
  End If
  En.MoveNext
Loop
'Подтягиваем их концы к узлам, лежащим не дальше полуметра
MsgBox "Выделено линий: " & n & vbCrLf & "Результат: " & L.AttachToNodes(0.5, 0)
End Sub

Python:

import zulu

def Macro_Layer_AttachToNodes():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    # Выделяем все линии слоя
    L.Selection.Clear()
    En = L.EnumElements()
    En.MoveFirst()
    n = 0
    while not En.IsEOF():
        if En.GraphType == 0:
            L.Selection.AddElem(En.ElemID)
            n += 1
        En.MoveNext()
    # Подтягиваем их концы к узлам, лежащим не дальше полуметра
    print("Выделено линий:", n)
    print("Результат:", L.AttachToNodes(0.5, 0))