Создает тематическую раскраску слоя по указанному тематическому фильтру.
Visual Basic:
Function CreateTheme(FilterID As Long, ThemeId As Long, ThemeDisplayName As String) As Long
FilterID - идентификатор тематического фильтра
ThemeId - идентификатор создаваемой раскраски (-1 для новой).
ThemeDisplayName - пользовательское название варианта раскраски.
Если в качестве идентификатора темы задан идентификатор уже существующего варианта раскраски, он будет заменен на новую раскраску под тем же идентификатором.
Метод возвращает ID созданной раскраски, если операция прошла успешно, в противном случае метод возвращает -1.
Фильтры слоя перечисляет свойство ThemeFilters, а сами раскраски — свойство Themes. Для несуществующего фильтра метод возвращает -1 и раскраску не создаёт.
Созданная раскраска хранится вместе со слоем: её видит и другой объект Layer, открытый для того же слоя. Название из ThemeDisplayName становится её пользовательским названием.
Раскраска создаётся выключенной, поэтому вид карты после вызова не меняется. Объекты слоя перекрашиваются, когда раскраску включают методом SetEnabled.
Visual Basic:
Sub Layer_CreateTheme 'Берем активный слой карты Set L = Zulu.ActiveMapDoc.Layers.Active If L.ThemeFilters.Count = 0 Then MsgBox "У слоя нет тематических фильтров" Exit Sub End If 'Создаем раскраску по первому фильтру слоя FilterID = L.ThemeFilters.GetIdByIndex(0) ThemeID = L.CreateTheme(FilterID, -1, "Проба раскраски") If ThemeID = -1 Then MsgBox "Раскраска не создана" Else MsgBox "Создана раскраска " & ThemeID & " «" & L.Themes.ThemeUserName(L.Themes.GetIndexById(ThemeID)) & _ "» по фильтру " & FilterID & vbCrLf & "Всего раскрасок у слоя: " & L.Themes.Count End If End SubPython:
import zulu def Macro_Layer_CreateTheme(): # Берем активный слой карты L = zulu.App.ActiveMapDoc.Layers.Active if L.ThemeFilters.Count == 0: print("У слоя нет тематических фильтров") return # Создаем раскраску по первому фильтру слоя filter_id = L.ThemeFilters.GetIdByIndex(0) theme_id = L.CreateTheme(filter_id, -1, "Проба раскраски") if theme_id == -1: print("Раскраска не создана") else: print("Создана раскраска", theme_id, L.Themes.ThemeUserName(L.Themes.GetIndexById(theme_id)), "по фильтру", filter_id) print("Всего раскрасок у слоя:", L.Themes.Count)