ExcludeSymbolsEx method (Selection)

Из слоя удаляются символьные объекты группы, соединенные с двумя участками, если они удовлетворяют условиям, заданным объектом ExcludeSymbolsParams. Участки объединяются в один объект.

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

Selection

Синтаксис:

Visual Basic:

Function ExcludeSymbolsEx(iParams As ExcludeSymbolsParams) As Long

iParams - объект с параметрами операции.

Описание:

В отличие от ExcludeSymbols, обрабатываются только символы тех типов и режимов, которые добавлены методом AddTypeMode. Пока не добавлено ни одного типа и режима, метод не выполняет никаких действий.

Дополнительно можно потребовать совпадения значений полей семантической базы (AddEqualityCheckField) и суммирования значений полей у объединяемых участков (AddSumValuesField).

Метод возвращает число выполненных объединений. Если объединять нечего — повторный вызов на том же слое или вызов без единого добавленного типа — возвращается 0.

Пример:

Visual Basic:

Sub Selection_ExcludeSymbolsEx
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
'Готовим параметры операции
Set P = CreateObject("ZuluLib.ExcludeSymbolsParams")
'Добавляем все символьные типы слоя со всеми их режимами
Set OTs = L.ObjectTypes
For i = 0 To OTs.Count - 1
  Set T = OTs.GetItemByIndex(i)
  'GraphicType = 1 - символьный тип
  If T.GraphicType = 1 Then
    'нумерация режимов начинается с единицы
    For m = 1 To T.Modes.Count - 1
      P.AddTypeMode T.Id, m, 1
    Next
  End If
Next
'Выделяем все объекты слоя и выполняем операцию
Set S = L.Selection
S.SelectAll
n = L.ElementKeys.Count
S.ExcludeSymbolsEx P
MsgBox "Объектов было: " & n & vbCrLf & "стало: " & L.ElementKeys.Count
End Sub

Python:

import zulu

def Macro_Selection_ExcludeSymbolsEx():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    # Готовим параметры операции
    P = zulu.ExcludeSymbolsParams()
    # Добавляем все символьные типы слоя со всеми их режимами
    OTs = L.ObjectTypes
    for i in range(OTs.Count):
        T = OTs.GetItemByIndex(i)
        # GraphicType = 1 - символьный тип
        if T.GraphicType == 1:
            # нумерация режимов начинается с единицы
            for m in range(1, T.Modes.Count):
                P.AddTypeMode(T.Id, m, 1)
    # Выделяем все объекты слоя и выполняем операцию
    S = L.Selection
    S.SelectAll()
    n = L.ElementKeys.Count
    S.ExcludeSymbolsEx(P)
    print("Объектов было:", n, "стало:", L.ElementKeys.Count)