CopyLayer method (Layer)

Копирует информацию слоя в новый слой.

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

Layer

Синтаксис:

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 Sub

Python:

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("Слой не скопирован")