Краткая информация
Объект GroupElement обеспечивает доступ к свойствам элементов группы в компоновке.
Обсуждение
Метод listElements для объекта Layout возвращает список Python элементов компоновки. Чтобы вернуть список только объектов GroupElement, используйте константу GROUP_ELEMENT для параметра element_type. Значение wildcard также может быть использовано для дальнейшей тонкой настройки поиска на основе значения name элемента. Важно, чтобы каждому элементу было присвоено уникальное имя, чтобы на него можно было легко ссылаться.
Элементы группы можно создавать используя метод createGroupElement для класса ArcGISProject. Для создания элемента группы, элементы должны существовать и быть добавлены к обязательному параметру element_list. Другими словами, вы не можете создать пустой элемент группы. Вы можете создавать элементы группы внутри других существующих элементов группы.
Объект GroupElement важен для многих методов создания графики и элементов компоновки карты. Как и объект GroupElement, многие другие методы имеют целевой параметр container, и если значение является элементом группы, вновь созданные объекты будут добавлены к указанному элементу группы. Параметр container может быть слоем графики на карте, Layout или ссылкой на существующий объект GroupElement в компоновке.
Примечание:
Вы можете группировать только элементы, находящиеся на одном уровне на панели Содержание. Например, вы можете сгруппировать элемент графики, элемент группы и элемент зарамочного оформления карты, расположенные в корне панели Содержание, в новую группу, но вы не можете сгруппировать элемент графики на корневом уровне и другой элемент графики в группу.
Метод deleteElement для класса Layout позволяет удалять элементы в компоновке. Чтобы удалить элементы группы, которые могут существовать внутри других элементов группы, вы должны удалить элементы группы в обратном порядке, потому что вы должны удалить дочерние группы перед родительской группой. См. второй пример кода ниже.
Примечание:
До версии 3.2, элементы группы в компоновке классифицировались, как GraphicElement и возвращали значение type, равное GRAPHIC_ELEMENT. Для обеспечения совместимости со старыми скриптами, свойство isGroup было перенесено из объекта GraphicElement. Нет необходимости использовать это свойство с новыми скриптами, потому что элемент группы теперь имеет значение type, равное GROUP_ELEMENT, и его можно искать и ссылаться на него, используя метод Layout listElements со значением GROUP_ELEMENT для списка выбора element_type.
Свойства
Свойство | Описание | Тип данных |
anchor (только чтение) | Возвращает одно из следующих строковых значений, которые описывают текущую позицию якоря. Чтобы изменить значение, используйте метод setAnchor.
| String |
elementHeight (чтение и запись) | Высота элемента в единицах страницы компоновки или карты. | Double |
elementPositionX (чтение и запись) | X-положение позиции точки якоря элемента в единицах страницы компоновки или карты. | Double |
elementPositionY (чтение и запись) | Y-положение позиции точки якоря элемента в единицах страницы компоновки или карты. | Double |
elementRotation (чтение и запись) | Угол поворота элемента в градусах. Положительные значения поворачивают по часовой стрелке, а отрицательные – против часовой стрелки. | Double |
elementWidth (чтение и запись) | Ширина элемента в единицах страницы компоновки или карты. | Double |
locked (чтение и запись) | Если установлено значение True, элемент нельзя выбрать графически в виде компоновки. | Boolean |
name (чтение и запись) | Имя элемента. Важно, чтобы все элементы имели уникальное имя, благодаря чему на них было бы легко ссылаться по имени. | String |
type (только чтение) | Возвращает значение GROUP_ELEMENT. | String |
visible (чтение и запись) | Возвращает True, если элемент является видимым. | Boolean |
Обзор метода
Метод | Описание |
getDefinition (cim_version) | Возвращает определение CIM графического элемента. |
setAnchor (anchor) | Метод setAnchor, управляющий положением якоря для значения GroupElement. |
setDefinition (definition_object) | Задает определение CIM группового элемента. |
Методы
getDefinition (cim_version)
Параметр | Описание | Тип данных |
cim_version | A string that represents the major version of the CIM that will be used.
| String |
Тип данных | Описание |
Object | Возвращает определение CIM для значения GraphicElement. |
Более подробно о работе с CIM и примеры см. Доступ к CIM в Python.
setAnchor (anchor)
Параметр | Описание | Тип данных |
anchor | A string that specifies the location of the anchor position.
| String |
Задание положения якоря привязки полезно, поскольку с его помощью вы можете контролировать, как элемент будет расширяться при изменении размера. Например, положение якоря по умолчанию для группы элементов - BOTTOM_LEFT_CORNER. Если вы измените положение якоря на TOP_RIGHT_CORNER, изменение значения elementHeight приведет к расширению элемента вниз вместо расширения вверх (по умолчанию), а изменение значения elementWidth - к расширению элемента влево.
setDefinition (definition_object)
Параметр | Описание | Тип данных |
definition_object | A modified CIM definition object originally retrieved using getDefinition. | Object |
Более подробно о работе с CIM и примеры см. Доступ к CIM в Python.
Пример кода
Следующий скрипт группирует все объекты GraphicElement в одну группу, а все объекты TextElement — во вторую группу. Затем оба получившихся элемента групп группируются в третью, родительскую группу. В начале скрипта все элементы находятся на корневом уровне панели Содержание.
p = arcpy.mp.ArcGISProject('current')
lyt = p.listLayouts('Layout')[0]
#Group graphic elements
graElmList = []
for gra in lyt.listElements('GRAPHIC_ELEMENT'):
graElmList.append(gra)
graphics = p.createGroupElement(lyt, graElmList, 'Graphic Elements')
#Group text elements
txtElmList = []
for txt in lyt.listElements('TEXT_ELEMENT'):
txtElmList.append(txt)
text = p.createGroupElement(lyt, txtElmList, 'Text Elements')
#Group of groups
supGrp = p.createGroupElement(lyt, [graphics, text], 'Group of Groups')
Следующий скрипт удаляет все элементы компоновки. Если элементы групп существуют внутри других элементов групп, важно удалить элементы групп в обратном порядке, поскольку дочерние группы необходимо удалить перед родительскими группами.
p = arcpy.mp.ArcGISProject('current')
lyt = p.listLayouts('Layout')[0]
# delete all the group elements and their children in reverse order
for elm in reversed(lyt.listElements('GROUP_ELEMENT')):
lyt.deleteElement(elm)
# delete remaining elements
for elm in lyt.listElements():
lyt.deleteElement(elm)