Добавляет в карту слой с указанным именем.
Visual Basic:
Sub AddLayer(Path As String)
Path - имя или URL слоя.
Имя слоя - это путь к его файлам: без расширения или с расширением главного файла .b00, оба варианта дают один и тот же слой. Так же добавляются слой рельефа (.ztr) и растровый слой (.zrs).
Новый слой встает в конец списка Layers. В пустой карте первый добавленный слой становится активным, следующие активного не меняют. После добавления карта считается несохраненной: Saved становится False.
Загружен ли уже такой слой, метод не проверяет: второй вызов с тем же путем добавляет в карту второй, отдельный слой с тем же названием.
В случае неудачи возникает исключение с одним из следующих кодов:
Код
Описание
1 Неопределённая ошибка. Возможно нарушена целостность слоя. 512 Не удалось открыть слой. 513 Слоя по указанному пути нет. Так же отвечает и пустая строка. 519 Превышено максимальное число загруженных слоёв. 771
Заблокировано. В обработчике события evMapBeforeLayerAdd был установлен skip_flag.
В макросах на python исключения нет: при неудаче метод просто не добавляет слой и возвращает None. Добавился ли слой, там проверяют по числу слоев карты.
Пример собирает отдельную карту из слоев рабочей и пробует добавить слой, которого нет.
Visual Basic:
Sub MapDoc_AddLayer 'Берем рабочую карту Set Doc = Zulu.ActiveMapDoc 'Отдельная карта без окон Set M = CreateObject("ZuluLib.MapDoc") 'Добавляем в нее слои рабочей карты по путям к их файлам, нумерация слоев с единицы For i = 1 To Doc.Layers.Count M.AddLayer Doc.Layers.Item(i).Name Next S = "Слоев в новой карте: " & M.Layers.Count & ", активный: " & M.Layers.Active.UserName S = S & vbCrLf & "карта сохранена: " & M.Saved 'Слоя по такому пути нет - будет исключение On Error Resume Next M.AddLayer "C:\Data\no_such_layer" S = S & vbCrLf & "несуществующий слой: ошибка " & Hex(Err.Number) & " " & Err.Description On Error GoTo 0 MsgBox S End SubPython:
import zulu def Macro_MapDoc_AddLayer(): # Берем рабочую карту doc = zulu.App.ActiveMapDoc # Отдельная карта без окон M = zulu.MapDoc() # Добавляем в нее слои рабочей карты по путям к их файлам, нумерация слоев с единицы for i in range(1, doc.Layers.Count + 1): M.AddLayer(doc.Layers.Item(i).Name) print("Слоев в новой карте:", M.Layers.Count, ", активный:", M.Layers.Active.UserName) print("карта сохранена:", M.Saved) # Слоя по такому пути нет - исключения в python не будет, слой просто не добавится n = M.Layers.Count M.AddLayer(r"C:\Data\no_such_layer") print("несуществующий слой добавлен:", M.Layers.Count > n)