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ços | Posição: |
|---|---|
0 | Centro superior |
1 | Centro esquerdo |
2 | Centro inferior |
3 | Centro 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_CONNECTOR3Estilo 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', '?')}")