摘要
GroupElement 对象提供了对布局中组元素属性的访问。
说明
Layout 对象上的 listElements 方法将返回布局元素的 Python 列表。 要仅返回 GroupElement 对象的列表,应对 element_type 参数使用 GROUP_ELEMENT 常量。 还可以使用 wildcard 值,基于元素的 name 值对搜索进行进一步优化。 需要确保每个元素均具有唯一名称,以便轻松对其进行引用。
可以使用 ArcGISProject 类上的 createGroupElement 方法创建组元素。 要创建组元素,元素必须存在并将其添加至所需 element_list 参数。 即,无法创建空的组元素。 可以在其他现有组元素内创建组元素。
GroupElement 对象对于许多地图图形和布局元素创建方法都非常重要。 与 GroupElement 对象一样,许多其他方法都具有目标 container 参数,如果该值为组元素,则会将新创建的对象添加至指定组元素。 container 参数可以是地图中的图形图层、Layout 或者对布局中现有 GroupElement 对象的引用。
注:
只能对内容窗格中同一级别的元素进行分组。 例如,可以将位于内容窗格根部的图形元素、组元素和地图整饰要素元素分组到一个新组中,但无法对根级别的图形元素以及组中的另一个图形元素进行分组。
Layout 类上的 deleteElement 方法用于删除布局中的元素。 要移除可能存在于其他组元素内部的组元素,必须以相反的顺序删除组元素,因为在删除父组之前,必须先删除子组。 请参阅以下第二个代码示例。
注:
在低于 3.2 的版本中,布局中的组元素被归类为 GraphicElement 并将返回 GRAPHIC_ELEMENT 的 type 值。 为了保持与旧脚本的兼容性,isGroup 属性是从 GraphicElement 对象继承的。 无需将此属性与较新的脚本配合使用,因为组元素现在的 type 值为 GROUP_ELEMENT,并且可以使用 LayoutlistElements 方法以及 element_type 选择列表的 GROUP_ELEMENT 值对其进行搜索和引用。
属性
属性 | 说明 | 数据类型 |
anchor (只读) | 返回表示当前锚点位置的以下字符串值之一。 要更改值,请使用 setAnchor 方法。
| String |
elementHeight (可读写) | 采用布局页面单位或地图单位的元素高度。 | Double |
elementPositionX (可读写) | 采用布局页面单位或地图单位的元素锚点位置的 x 位置。 | Double |
elementPositionY (可读写) | 采用布局页面单位或地图单位的元素锚点位置的 y 位置。 | Double |
elementRotation (可读写) | 元素旋转角度(以度为单位)。 正值将使方向顺时针旋转,负值将使方向逆时针旋转。 | Double |
elements (只读) | 返回 GroupElement 对象中的元素列表。 | List |
elementWidth (可读写) | 采用布局页面单位或地图单位的元素宽度。 | Double |
isGroup (只读) | 如果元素是 GroupElement,则返回 True。 请参阅讨论以获取其他信息。 | Boolean |
locked (可读写) | 设置为 True 时,无法在布局视图中以图形方式选择元素。 | Boolean |
longName (只读) | 元素的全名,包括组信息(如果存在)。 例如,在一个名称为 Group Element 的组元素中,名称为 Point 的元素将返回 Group Element\\Point 的 longName 值。 如果元素不在组中,则 longName 与 name 值相同。 | String |
name (可读写) | 元素的名称。 有必要确保所有元素均具有唯一名称,因为这样可以轻松对其进行引用。 | String |
parentGroupElement (只读) | 如果元素(包括 GroupElement)在组中,则返回的值为 GroupElement,否则返回 NoneType。 | GroupElement |
type (只读) | 返回值 GROUP_ELEMENT。 | String |
visible (可读写) | 如果元素可见,则返回 True。 | Boolean |
方法概述
方法 | 说明 |
getDefinition (cim_version) | 返回图形元素的 CIM 定义。 |
setAnchor (anchor) | setAnchor 方法可控制 GroupElement 值的锚点位置。 |
setDefinition (definition_object) | 设置群组元素的 CIM 定义。 |
ungroupElements () | ungroupElements 方法可在群组元素中分隔元素。 |
方法
getDefinition (cim_version)
参数 | 说明 | 数据类型 |
cim_version | A string that represents the major version of the CIM that will be used.
| String |
数据类型 | 说明 |
Object | 返回 GraphicElement 的 CIM 定义。 |
有关使用 CIM 和示例的详细信息,请参阅 Python CIM 访问。
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 和示例的详细信息,请参阅 Python CIM 访问。
ungroupElements ()
将元素分隔为 GroupElement 值的 parentGroup 值并移除群组元素。 如果不存在父群组,则元素将放置在布局的根级别。
代码示例
以下脚本将所有 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)