Возвращает объект CustomData, для работы с дополнительной информацией слоя.
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 SubPython:
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)