FinishSequentialWriteMode method (Layer)

Завершает режим буферизованной записи объектов в слой, включённый методом StartSequentialWriteMode.

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

Layer

Синтаксис:

Visual Basic:

Function FinishSequentialWriteMode() As Boolean

Описание:

Метод завершает режим, включённый методом StartSequentialWriteMode. После этого объекты, добавленные в режиме, становятся доступны: их учитывают обход EnumElements, поиск ElemIDByXY, габариты слоя GetBoundsRectangle и метод GetLargestID, а линии соединяются с узлами сети. Удалять и изменять объекты снова можно, а при добавлении символа опять проверяется, занята ли точка.

Если режим не был включён, метод ничего не делает и возвращает True.

Пример:

Visual Basic:

Sub Layer_FinishSequentialWriteMode
'Берем активный слой карты
Set Src = Zulu.ActiveMapDoc.Layers.Active
'Создаем пустой слой той же структуры
Set Tools = CreateObject("ZuluLib.ZuluTools")
Tools.LayerCreateByExample Src.Name, "C:\Data\copy", "Копия слоя", 0
Set Dst = CreateObject("ZuluLib.Layer")
Dst.Open "C:\Data\copy"
'Переписываем объекты в режиме буферизованной записи
Dst.StartSequentialWriteMode
Set En = Src.EnumElements
En.MoveFirst
Do While Not En.IsEOF
  Dst.AddEnumElement En, En.ElemID, 0
  En.MoveNext
Loop
'До завершения режима новые объекты в слое не видны
Before = Dst.GetLargestID
Dst.FinishSequentialWriteMode
MsgBox "Наибольший ID до завершения режима: " & Before & vbCrLf & _
       "Наибольший ID после завершения: " & Dst.GetLargestID
End Sub

Python:

import zulu

def Macro_Layer_FinishSequentialWriteMode():
    # Берем активный слой карты
    Src = zulu.App.ActiveMapDoc.Layers.Active
    # Создаем пустой слой той же структуры
    zulu.ZuluTools().LayerCreateByExample(Src.Name, r"C:\Data\copy", "Копия слоя", 0)
    Dst = zulu.Layer()
    Dst.Open(r"C:\Data\copy")
    # Переписываем объекты в режиме буферизованной записи
    Dst.StartSequentialWriteMode()
    En = Src.EnumElements()
    En.MoveFirst()
    while not En.IsEOF():
        Dst.AddEnumElement(En, En.ElemID, 0)
        En.MoveNext()
    # До завершения режима новые объекты в слое не видны
    before = Dst.GetLargestID()
    Dst.FinishSequentialWriteMode()
    print("Наибольший ID до завершения режима:", before)
    print("Наибольший ID после завершения:", Dst.GetLargestID())