Добавляет в слой текущий элемент итератора EnumElements другого слоя c присвоением ему заданного ID.
Visual Basic:
Function AddEnumElement(Elems As IZEnumElements, ElemID As Long, Flags As Long) As Long
Elems - итератор EnumElements слоя источника.
ElemID - ID добавляемого элемента.
Flags - признак необходимости проверки на существование указанного ElemID ( 0 - не проверять, 1 - проверять),
Если значение ElemID равно -1, то записываемому элементу ID присваивается автоматически.
При отсутствии проверки на существование в слое элемента с указанным ElemID метод работает быстрее, но в этом случае разработчик должен сам быть уверен, что повторение ключа исключается (например, последовательная запись в новый слой с увеличением значения очередного ElemID на единицу).
Если такой уверенности нет, то нужно задавать флаг проверки Flags равным 1. Тогда, если ключ с указанным ElemID в слое уже существует, в добавлении нового элемента будет отказано.
Если добавление элемента выполнено успешно, метод возвращает ID добавленного элемента. В противном случае метод возвращает -1.
'Создаем новый слой и переписываем в него все объекты другого слоя Private Sub CopyLayerGraphics( SrcLayer As Layer, DestLayerName As String, DestLayerTitle As String) Dim DestLayer As Layer Dim En As IZEnumElements Dim Tools As ZuluTools Set Tools = New ZuluTools 'Создаем новый слой Tools.LayerCreate DestLayerName, DestLayerTitle, eMixedLayer 'Открываем созданный слой Set DestLayer = New Layer DestLayer.Open DestLayerName 'Получаем итератор для слоя источника Set En = SrcLayer.EnumElements En.MoveFirst 'Встали на первый элемент Do If En.IsEOF Then Exit Do 'Если элементы кончились, выходим 'Записываем очередной объект в новый слой 'без проверки на уникальность ключа, т.к. 'в качестве ключа берем ключ слоя источника 'а до начала записи слой для записи объектов не 'содержал DestLayer.AddEnumElement En, En.ElemID, 0 En.MoveNext 'Встаем на следующий элемент Loop End Sub