Selection property (Layer)

Возвращает для данного слоя объект Selection для работы с группой выделенных объектов.

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

Layer

Синтаксис:

Visual Basic:

Property Selection As Selection

read-only

Описание:

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

Объекты набираются поштучно (AddElem, RemoveElem), целиком (SelectAll), наоборот (Invert) или по условию - методами ModifyByType, ModifyByKeys, AddByContour. Снимает выделение Clear, а проверяет отдельный объект - IsSelected. Ключи выделенного лежат в ElementKeys, а Length и Area дают суммарную длину линейных и площадь площадных объектов группы.

Выделением пользуются методы слоя, работающие с группой: MoveSelection, RotateSelection, ScaleSelection, JoinSelectedElements.

В случае неудачи возникает исключение с одним из следующих кодов:

Код

Описание

513

Слой не открыт. Операция проводится со слоем, который либо не загружен в карту, либо не открыт с помощью метода Open.

Пример:

Пример набирает выделение разными способами и в конце снимает его.

Visual Basic:

Sub Layer_Selection
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
Set Sel = L.Selection
Sel.Clear
'Добавляем два первых объекта слоя
Set Keys = L.ElementKeys
Sel.AddElem Keys.Item(1)
Sel.AddElem Keys.Item(2)
S = "выделено: " & Sel.ElementKeys.Count & ", длина " & Round(Sel.Length, 1)
'Выделяем все, кроме них
Sel.Invert
S = S & vbCrLf & "после Invert: " & Sel.ElementKeys.Count
'Весь слой целиком
Sel.SelectAll
S = S & vbCrLf & "после SelectAll: " & Sel.ElementKeys.Count
'Снимаем выделение
Sel.Clear
S = S & vbCrLf & "после Clear: " & Sel.ElementKeys.Count
MsgBox S
End Sub

Python:

import zulu

def Macro_Layer_Selection():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    sel = L.Selection
    sel.Clear()
    # Добавляем два первых объекта слоя
    keys = L.ElementKeys
    sel.AddElem(keys.Item(1))
    sel.AddElem(keys.Item(2))
    print("выделено:", sel.ElementKeys.Count, ", длина", round(sel.Length(), 1))
    # Выделяем все, кроме них
    sel.Invert()
    print("после Invert:", sel.ElementKeys.Count)
    # Весь слой целиком
    sel.SelectAll()
    print("после SelectAll:", sel.ElementKeys.Count)
    # Снимаем выделение
    sel.Clear()
    print("после Clear:", sel.ElementKeys.Count)