CustomData property (Layer)

Возвращает объект CustomData, для работы с дополнительной информацией слоя.

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

Layer

Синтаксис:

Visual Basic:

Property CustomData As Object

Описание:

Свойство доступно только для чтения.

Каждое обращение к свойству возвращает отдельный объект со своей копией записей. Изменения, сделанные в одном таком объекте, не видны в остальных, пока этот же объект не запишет их в слой методом Commit. Поэтому объект нужно сохранить в переменной и работать с ним, а не обращаться к свойству заново на каждое действие.

Записи хранятся вместе со слоем: после Commit их видит и другой объект Layer, открытый для того же слоя, и они сохраняются после закрытия слоя.

Слой всегда хранит и свои собственные записи, например габариты слоя и сведения о его базе данных. Их имена начинаются с zulu_sys_.

В случае неудачи возникает исключение с одним из следующих кодов:

Код

Описание

513

Слой не открыт. Операция проводится со слоем, который либо не загружен в карту, либо не открыт с помощью метода Open.

Пример:

Visual Basic:

Sub Layer_CustomData
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
'Берем дополнительную информацию слоя в переменную
Set CD = L.CustomData
'Смотрим, что слой уже хранит
s = "Записей у слоя: " & CD.Count
For i = 0 To CD.Count - 1
  s = s & vbCrLf & CD.GetItemName(i) & " = " & CD.GetItemString(i)
Next
'Добавляем свою запись и сохраняем ее в слое
CD.PutItemString "Примечание", "Дополнительная информация слоя", 0
CD.Commit
i = CD.GetIndexByName("Примечание")
s = s & vbCrLf & vbCrLf & "Добавлена запись " & i & ": " & CD.GetItemString(i)
'Проверяем, что запись попала в слой
s = s & vbCrLf & "Новое обращение к свойству видит ее под номером " & L.CustomData.GetIndexByName("Примечание")
'Убираем ее обратно
CD.DeleteItem i
CD.Commit
s = s & vbCrLf & "После удаления записей: " & CD.Count
MsgBox s
End Sub

Python:

import zulu

def Macro_Layer_CustomData():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    # Берем дополнительную информацию слоя в переменную
    CD = L.CustomData
    # Смотрим, что слой уже хранит
    print("Записей у слоя:", CD.Count)
    for i in range(CD.Count):
        print(CD.GetItemName(i), "=", CD.GetItemString(i))
    # Добавляем свою запись и сохраняем ее в слое
    CD.PutItemString("Примечание", "Дополнительная информация слоя", 0)
    CD.Commit()
    i = CD.GetIndexByName("Примечание")
    print("Добавлена запись", i, ":", CD.GetItemString(i))
    # Проверяем, что запись попала в слой
    print("Новое обращение к свойству видит ее под номером",
          L.CustomData.GetIndexByName("Примечание"))
    # Убираем ее обратно
    CD.DeleteItem(i)
    CD.Commit()
    print("После удаления записей:", CD.Count)