Возвращает для данного слоя объект Selection для работы с группой выделенных объектов.
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 SubPython:
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)