AddSymbolsFinish method (Layer)

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

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

Layer

Синтаксис:

Visual Basic:

Sub AddSymbolsFinish()

Описание:

Метод выключает ускоренную проверку занятости точек: список координат символов, составленный методом AddSymbolsStart, освобождается.

Вызов метода без предшествующего AddSymbolsStart, как и повторный вызов, ошибки не вызывает.

Пример:

Visual Basic:

Sub Layer_AddSymbolsFinish
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
'Собираем концы всех линий, тип и режим берем у первого символа слоя
Dim X(), Y()
n = 0
TypeID = -1
Set En = L.EnumElements
En.MoveFirst
Do While Not En.IsEOF
  If En.GraphType = 2 And TypeID = -1 Then
    TypeID = En.TypeID
    ModeNum = En.ModeId
  ElseIf En.GraphType = 0 Then
    Set P = En.GetPoints
    ReDim Preserve X(n + 1), Y(n + 1)
    X(n) = P.GetX(1)
    Y(n) = P.GetY(1)
    X(n + 1) = P.GetX(P.Count)
    Y(n + 1) = P.GetY(P.Count)
    n = n + 2
  End If
  En.MoveNext
Loop
'Ставим символы в концы линий: в занятые точки символ не добавляется
L.AddSymbolsStart
Added = 0
For i = 0 To n - 1
  If L.AddSymbol(X(i), Y(i), TypeID, ModeNum) <> -1 Then Added = Added + 1
Next
L.AddSymbolsFinish
MsgBox "Концов линий: " & n & vbCrLf & "Добавлено символов: " & Added
End Sub

Python:

import zulu

def Macro_Layer_AddSymbolsFinish():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    # Собираем концы всех линий, тип и режим берем у первого символа слоя
    ends = []
    type_id = mode_num = -1
    En = L.EnumElements()
    En.MoveFirst()
    while not En.IsEOF():
        if En.GraphType == 2 and type_id == -1:
            type_id, mode_num = En.TypeID, En.ModeId
        elif En.GraphType == 0:
            P = En.GetPoints()
            ends.append((P.GetX(1), P.GetY(1)))
            ends.append((P.GetX(P.Count), P.GetY(P.Count)))
        En.MoveNext()
    # Ставим символы в концы линий: в занятые точки символ не добавляется
    L.AddSymbolsStart()
    added = 0
    for x, y in ends:
        if L.AddSymbol(x, y, type_id, mode_num) != -1:
            added += 1
    L.AddSymbolsFinish()
    print("Концов линий:", len(ends))
    print("Добавлено символов:", added)