Добавляет в редактируемый слой объект, введенный в редакторе карты (дублирует команду Добавить элемента управления MapCtrl).
Visual Basic:
Sub EditorAdd()
Метод завершает ввод объекта в окне карты: линия, которую пользователь начал рисовать щелчками мыши (например, в режиме eEditModePolyline, EditMode = 3), становится объектом редактируемого слоя (EditLayer), и объектов в нем становится на один больше. Редактор после этого остается в том же режиме ввода, и можно рисовать следующий объект.
Введенные точки читаются из свойства InputPolyline. Если точек нет, метод ничего не добавляет.
Методу нужно окно карты с редактируемым слоем: у карты, созданной отдельно от окон ZuluGIS как объект ZuluLib.MapDoc, он ничего не делает.
Пример добавляет в редактируемый слой линию, которую пользователь уже начал рисовать на карте, и сообщает, сколько объектов стало в слое. Перед запуском включите редактирование слоя, режим ввода ломаной и отметьте на карте несколько точек.
Visual Basic:
Sub MapDoc_EditorAdd 'Берем рабочую карту и редактируемый слой Set Doc = Zulu.ActiveMapDoc Set L = Doc.Layers.EditLayer If L Is Nothing Then MsgBox "Редактирование слоя не включено" Else n = L.ElementKeys.Count S = "Точек во вводимой линии: " & Doc.InputPolyline.NumTops 'Добавляем введенную линию в слой Doc.EditorAdd MsgBox S & vbCrLf & "объектов в слое было " & n & ", стало " & L.ElementKeys.Count End If End SubPython:
import zulu def Macro_MapDoc_EditorAdd(): # Берем рабочую карту и редактируемый слой doc = zulu.App.ActiveMapDoc L = doc.Layers.EditLayer if L is None: print("Редактирование слоя не включено") else: n = L.ElementKeys.Count print("Точек во вводимой линии:", doc.InputPolyline.NumTops) # Добавляем введенную линию в слой doc.EditorAdd() print("объектов в слое было", n, ", стало", L.ElementKeys.Count)