Возвращает коллекцию Themes тематических раскрасок слоя.
Visual Basic:
Property Themes As Themes
read-only
Раскраски слоя нумеруются с нуля. У каждой есть ID (ThemeId), название для пользователя (ThemeUserName) и имя (ThemeName) - им служит полный путь к файлу раскраски рядом со слоем, с расширением вида .c00. Номер и ID связывает метод GetIndexById, а сам объект раскраски дает GetTheme.
Включение и выключение - методами SetEnabled, GetEnabled и DisableAll; одновременно может быть включено несколько раскрасок. Новая раскраска появляется в коллекции после CreateTheme и создается выключенной; временную раскраску из файла добавляет SetTemporaryTheme.
Убрать раскраску из коллекции через объектную модель нечем: метод Remove объекта Theme проходит без ошибки, но число раскрасок не меняется.
Пример создает раскраску по первому фильтру слоя, перечисляет раскраски и гасит их.
Visual Basic:
Sub Layer_Themes 'Берем активный слой карты Set L = Zulu.ActiveMapDoc.Layers.Active S = "Раскрасок у слоя: " & L.Themes.Count 'Если фильтры есть, делаем по первому из них раскраску If L.ThemeFilters.Count > 0 Then Id = L.CreateTheme(L.ThemeFilters.GetIdByIndex(0), -1, "Проба раскраски") L.Themes.SetEnabled Id, True S = S & vbCrLf & "создана раскраска " & Id End If 'Перечисляем раскраски слоя For i = 0 To L.Themes.Count - 1 Id = L.Themes.ThemeId(i) S = S & vbCrLf & "номер " & i & ": ID " & Id & ", " & L.Themes.ThemeUserName(i) & _ ", включена " & L.Themes.GetEnabled(Id) Next 'Гасим все раскраски L.Themes.DisableAll S = S & vbCrLf & "после DisableAll включенных нет" MsgBox S End SubPython:
import zulu def Macro_Layer_Themes(): # Берем активный слой карты L = zulu.App.ActiveMapDoc.Layers.Active print("Раскрасок у слоя:", L.Themes.Count) # Если фильтры есть, делаем по первому из них раскраску if L.ThemeFilters.Count > 0: ident = L.CreateTheme(L.ThemeFilters.GetIdByIndex(0), -1, "Проба раскраски") L.Themes.SetEnabled(ident, True) print("создана раскраска", ident) # Перечисляем раскраски слоя for i in range(L.Themes.Count): ident = L.Themes.ThemeId(i) print("номер", i, ": ID", ident, ",", L.Themes.ThemeUserName(i), ", включена", L.Themes.GetEnabled(ident)) # Гасим все раскраски L.Themes.DisableAll() print("после DisableAll включенных нет")