SetTemporaryTheme method (Layer)

Подключает к слою файл раскраски с заданным именем в качестве временного варианта раскраски.

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

Layer

Синтаксис:

Visual Basic:

Sub SetTemporaryTheme(FileName As String)

FileName - имя подключаемого файла раскраски.

Описание:

Подключаемый файл раскраски не добавляется в список постоянных раскрасок слоя. Это раскраска временная и действует только на период подключения к слою. При подключении к слою на сервере эта раскраска не будет видна и доступна другим пользователям.

Подключаемый файл раскраски может быть создан и заполнен через объект Theme.

Порядок такой: Create(путь к файлу, название, путь к слою) создает раскраску, Parameter(ключ объекта, поле) задает объекту цвет или другой параметр, Save записывает файл.

После подключения раскраска появляется в коллекции Themes слоя - с названием из Create и признаком «включена». Метод ничего не возвращает и на несуществующий файл не жалуется - раскрасок в этом случае просто не прибавляется.

Пустая строка раскраску не снимает: она остается в коллекции. Чтобы ее погасить, есть методы коллекции - SetEnabled(ID, False) и DisableAll.

Пример:

Пример делает свой файл раскраски, подключает его к слою как временный и гасит.

Visual Basic:

Sub Layer_SetTemporaryTheme
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
'Делаем свой файл раскраски и красим в нем первый объект слоя
Path = "C:\Data\proba_theme.zlt"
Set T = CreateObject("ZuluLib.Theme")
T.Create Path, "Проба раскраски", L.Name
T.Parameter(L.ElementKeys.Item(1), 1) = 255
T.Save
T.Close
'Подключаем раскраску как временную
S = "Раскрасок было: " & L.Themes.Count
L.SetTemporaryTheme Path
S = S & vbCrLf & "стало: " & L.Themes.Count
If L.Themes.Count > 0 Then
  Id = L.Themes.ThemeId(0)
  S = S & vbCrLf & "ID " & Id & ", включена: " & L.Themes.GetEnabled(Id)
  'Гасим её
  L.Themes.SetEnabled Id, False
  S = S & vbCrLf & "после выключения: " & L.Themes.GetEnabled(Id)
End If
MsgBox S
End Sub

Python:

import zulu

def Macro_Layer_SetTemporaryTheme():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    # Делаем свой файл раскраски и красим в нем первый объект слоя
    path = r"C:\Data\proba_theme.zlt"
    t = zulu.Theme()
    t.Create(path, "Проба раскраски", L.Name)
    t.SetParameter(L.ElementKeys.Item(1), 1, 255)
    t.Save()
    t.Close()
    # Подключаем раскраску как временную
    print("Раскрасок было:", L.Themes.Count)
    L.SetTemporaryTheme(path)
    print("стало:", L.Themes.Count)
    if L.Themes.Count > 0:
        ident = L.Themes.ThemeId(0)
        print("ID", ident, ", включена:", L.Themes.GetEnabled(ident))
        # Гасим её
        L.Themes.SetEnabled(ident, False)
        print("после выключения:", L.Themes.GetEnabled(ident))