Копирует информацию слоя в новый слой.
Visual Basic:
Function CopyLayer(NewLayerPath As String, NewLayerUsername As String, Flags As Long) As Boolean
NewLayerPath - имя нового слоя (путь или URL).
NewLayerUsername - пользовательское название нового слоя.
Flags - флаги, определяющие параметры копирования:
0x0 - копируется вся информация слоя (структура, графика, табличные базы, тематические раскраски, бирки)
0x1 - наследовать ключи графических объектов.
0x4 - копировать структуру графической базы.
0x8 - копировать графическую базу.
0x10 - копировать структуру семантической базы.
0x20 - копировать семантические базы.
0x40 - копировать фильтры тематических раскрасок.
0x80 - копировать тематические раскраски.
0x100 - копировать шаблоны бирок.
0x200 - копировать варианты бирки.
0x80000000 - копировать только выделенные объекты (при копировании графики).
0x4+0x10+0x40+0x100 - копировать только структуру слоя.
Метод возвращает True, если операция прошла успешно, в противном случае метод возвращает False — например, если папки для нового слоя не существует.
При копировании всей информации объекты копии сохраняют свои ключи (ID). Копия только структуры содержит типы объектов и базы данных слоя, но не объекты.
Если слой с именем NewLayerPath уже существует, он заменяется копией.
Visual Basic:
Sub Layer_CopyLayer 'Берем активный слой карты Set L = Zulu.ActiveMapDoc.Layers.Active 'Копируем только структуру слоя: типы и базы данных без объектов If L.CopyLayer("C:\Data\struct", "Структура слоя", &H4 + &H10 + &H40 + &H100) Then Set C = CreateObject("ZuluLib.Layer") C.Open "C:\Data\struct" MsgBox "Создан слой «" & C.UserName & "»: типов " & C.ObjectTypes.Count & ", баз данных " & C.Bases.Count Else MsgBox "Слой не скопирован" End If End SubPython:
import zulu def Macro_Layer_CopyLayer(): # Берем активный слой карты L = zulu.App.ActiveMapDoc.Layers.Active # Копируем только структуру слоя: типы и базы данных без объектов if L.CopyLayer(r"C:\Data\struct", "Структура слоя", 0x4 + 0x10 + 0x40 + 0x100): C = zulu.Layer() C.Open(r"C:\Data\struct") print("Создан слой", C.UserName, ": типов", C.ObjectTypes.Count, ", баз данных", C.Bases.Count) else: print("Слой не скопирован")