Como conectar formas com conectores em Python

Como conectar formas com conectores em Python

Este guia mostra como conectar formas com conectores em slides do PowerPoint usando Aspose.Slides FOSS para Python. Call slide.shapes.add_connector() para criar um conector, em seguida, definir conn.start_shape_connected_to e a) conn.end_shape_connected_to O tipo de conector mais comum é o BENT_CONNECTOR3, que percorre os obstáculos com uma única curva de cotovelo.


Precondições

Instale a biblioteca no seu ambiente Python executando o seguinte comando pip antes de executar qualquer exemplo:

pip install aspose-slides-foss

Índices de sites de conexão

Cada forma tem quatro locais de ligação numerados:

Índice de preçosPosição:
0Centro superior
1Centro esquerdo
2Centro inferior
3Centro direito.

Conectar duas formas

Criar as duas formas, adicionar um conector com slide.shapes.add_connector(), então definido . start_shape_connected_to e a) end_shape_connected_to para as ligar:

from aspose.slides_foss import ShapeType
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]

    # Add two rectangles
    box1 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 200, 200, 100)
    box2 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 450, 200, 200, 100)

    box1.add_text_frame("Start")
    box2.add_text_frame("End")

    # Add a bent connector (initial bounds are overwritten by the connection)
    conn = slide.shapes.add_connector(ShapeType.BENT_CONNECTOR3, 0, 0, 10, 10)

    # Connect right side of box1 (site 3) to left side of box2 (site 1)
    conn.start_shape_connected_to = box1
    conn.start_shape_connection_site_index = 3
    conn.end_shape_connected_to = box2
    conn.end_shape_connection_site_index = 1

    prs.save("connected.pptx", SaveFormat.PPTX)

Limitação do marcador de lugar (0, 0, 10, 10) Passado para: add_connector são ignorados uma vez que os pontos finais de conexão estão definidos; PowerPoint reencaminha o conector para as formas anexadas.


Tipos de conectores

Utilização: ShapeType Opções comuns incluem linhas retas, conectores de cotovelo único e duplo:

from aspose.slides_foss import ShapeType

# Straight line
ShapeType.STRAIGHT_CONNECTOR1

# Single elbow (L-shape)
ShapeType.BENT_CONNECTOR2

# Double elbow (Z-shape): most common
ShapeType.BENT_CONNECTOR3

# Curved connector
ShapeType.CURVED_CONNECTOR3

Estilo da linha de conector

Configurar a linha do conector cor, largura e estilo de guião via conn.line_format Após a criação do conector:

from aspose.slides_foss import ShapeType, LineDashStyle
from aspose.slides_foss.drawing import Color
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]

    box1 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 150, 180, 80)
    box2 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 500, 300, 180, 80)

    conn = slide.shapes.add_connector(ShapeType.BENT_CONNECTOR3, 0, 0, 10, 10)
    conn.start_shape_connected_to = box1
    conn.start_shape_connection_site_index = 2   # bottom of box1
    conn.end_shape_connected_to = box2
    conn.end_shape_connection_site_index = 0     # top of box2

    # Style: dashed blue line, 2 pt width
    lf = conn.line_format
    lf.width = 2.0
    lf.fill_format.solid_fill_color.color = Color.from_argb(255, 0, 0, 255)  # blue
    lf.dash_style = LineDashStyle.DASH

    prs.save("styled-connector.pptx", SaveFormat.PPTX)

Diagrama de fluxo com múltiplos conectores

Construir um diagrama de fluxo multi-passo, criando várias formas e adicionando uma BENT_CONNECTOR3 Conector entre cada par consecutivo:

from aspose.slides_foss import ShapeType
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]

    # Three-step flowchart
    step1 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 350, 50, 200, 70)
    step2 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 350, 220, 200, 70)
    step3 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 350, 390, 200, 70)

    step1.add_text_frame("Step 1")
    step2.add_text_frame("Step 2")
    step3.add_text_frame("Step 3")

    def connect_vertical(shapes, top_shape, bottom_shape):
        conn = shapes.add_connector(ShapeType.BENT_CONNECTOR3, 0, 0, 10, 10)
        conn.start_shape_connected_to = top_shape
        conn.start_shape_connection_site_index = 2   # bottom
        conn.end_shape_connected_to = bottom_shape
        conn.end_shape_connection_site_index = 0     # top
        return conn

    connect_vertical(slide.shapes, step1, step2)
    connect_vertical(slide.shapes, step2, step3)

    prs.save("flowchart.pptx", SaveFormat.PPTX)

Leia Propriedades do Conector

Carregar uma apresentação existente e inspecionar cada conector de start_shape_connected_to e a) end_shape_connected_to por fundição de formas para Connector:

from aspose.slides_foss import Connector
import aspose.slides_foss as slides

with slides.Presentation("connected.pptx") as prs:
    for shape in prs.slides[0].shapes:
        if isinstance(shape, Connector):
            start = shape.start_shape_connected_to
            end = shape.end_shape_connected_to
            print(f"Connector: {getattr(start, 'name', '?')}{getattr(end, 'name', '?')}")

Ver também:

 Português