Подтягивает начала и концы участков к близлежащим узлам, находящимся в заданной окрестности.
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 SubPython:
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))