StartSequentialWriteMode method (Layer)

Инициализирует режим буферизованной записи объектов в слой.

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

Layer

Синтаксис:

Visual Basic:

Function StartSequentialWriteMode() As Boolean

Описание:

Режим буферизованной записи предназначен для последовательной записи большого числа объектов с высокой скоростью. Этот режим удобно использовать при написании собственных конверторов в формат Zulu, при перезаписи большого числа объектов из одного слоя в другой и т.д.

При добавлении объектов в этом режиме ядром системы не выполняется ряд внутренних операций по индексации добавляемых объектов, что существенно повышает скорость добавления объектов, но делает невозможным работу с данными слоя в полном объеме вплоть до завершения режима. Поэтому в режиме буферизованной записи не допускаются никакие операции со слоем, кроме операций по добавлению объектов в слой: AddContour, AddElement, AddElementEx, AddEnumElement, AddPolyContour, AddPolyLine, AddPolyPolyLine, AddSimpleSymbol, AddSymbol, AddText.

Инициированный методом StartSequentialWriteMode режим записи обязательно должен быть завершен вызовом метода FinishSequentialWriteMode. После завершения режима буферизованной записи состояние слоя соответствует обычному режиму, в котором разрешены все операции.

Пример:

'Создаем новый слой и переписываем в него все объекты другого слоя
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
'Начинаем режим буферизованной записи
DestLayer.StartSequentialWriteMode
'Получаем итератор для слоя источника
Set En = SrcLayer.EnumElements
           
En.MoveFirst 'Встали на первый элемент
Do
    If  En.IsEOF Then Exit Do 'Если элементы кончились, выходим

'Записываем очередной объект в новый слой
    'без проверки на уникальность ключа, т.к. 
    'в качестве ключа берем ключ слоя источника
    'а до начала записи слой для записи объектов не 'содержал               
    DestLayer.AddEnumElement En, En.ElemID, 0
         
    En.MoveNext 'Встаем на следующий элемент
Loop
        
    'Завершаем режим буферизованной записи
    DestLayer.FinishSequentialWriteMode

End Sub