# Formas y texto

- Human documentation: [https://docs.univer.ai/es-ES/guides/slides/features/core/shapes-and-text](https://docs.univer.ai/es-ES/guides/slides/features/core/shapes-and-text)

- Agent Markdown: [https://docs.univer.ai/es-ES/guides/slides/features/core/shapes-and-text.md](https://docs.univer.ai/es-ES/guides/slides/features/core/shapes-and-text.md)

- Requested language: `es-ES`

- Content language: `es-ES`

- Documentation version: `1.2.0`

- Source: [slides/features/core/shapes-and-text.es-ES.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/slides/features/core/shapes-and-text.es-ES.mdx)

---

Slides usa el motor Shape compartido para formas, conectores y texto editables. `FSlide.insertShape()` devuelve una Facade de forma respaldada por la canalización de comandos de Slides.

## Insertar una forma

```ts
const slide = univerAPI.getActivePresentation()?.getActiveSlide()

if (!slide) {
  throw new Error('No active slide')
}

const shape = slide.insertShape({
  shapeType: univerAPI.Enum.ShapeTypeEnum.RoundRect,
  transform: { left: 80, top: 64, width: 320, height: 120 },
  visible: true,
  selectable: true,
  shapeData: {
    fill: {
      fillType: univerAPI.Enum.ShapeFillEnum.SolidFill,
      color: '#dbeafe',
    },
  },
})
```

`insertShape()` puede devolver `null` cuando el adaptador Shape no está disponible o no puede crear la entrada. Registre las dependencias Shape de la configuración de Slides antes de insertar formas.

## Añadir texto enriquecido

```ts
if (shape) {
  const richText = univerAPI.newRichText()
    .text('Quarterly ')
    .bold('review')

  shape.getText()
    .setRichText(richText)
    .setHorizontalAlign(univerAPI.Enum.HorizontalAlign.CENTER)
    .setVerticalAlign(univerAPI.Enum.VerticalAlign.MIDDLE)
}
```

Use `slide.getShape(id)` o `slide.getShapes()` para recuperar formas. Los métodos comunes actualizan posición, tamaño, visibilidad, nombre y descripción; `slide.deleteElement(shape)` elimina la forma.

## Editar el texto de una forma

Utiliza la forma devuelta por `insertShape()` a continuación o en el ejemplo anterior. `getText()` devuelve un objeto [FShapeText](https://docs.univer.ai/es-ES/reference/facade/shape-text.md) activo. Lee el texto con `getPlainText()`, reemplázalo por completo con `setText()` y configura la fuente, el color y la alineación.

```ts
if (!shape) throw new Error('Shape is not available')
const shapeText = shape.getText()
console.log(shapeText.getPlainText())
shapeText
  .setText('Quarterly review')
  .setFontSize(18)
  .setColor('#2563eb')
  .setBold(true)
  .setHorizontalAlign(univerAPI.Enum.HorizontalAlign.CENTER)
  .setVerticalAlign(univerAPI.Enum.VerticalAlign.MIDDLE)
```

`setText()` reemplaza el texto existente. Utiliza `setRichText()` para combinar varios estilos. Para editar texto enriquecido existente, llama a `getRichText()?.copy()`, modifica el constructor y pásalo a `setRichText()`. Los cambios del constructor no se aplican automáticamente. Consulta también los [estilos de texto](https://docs.univer.ai/es-ES/reference/facade/shape-text.md#settextstyle) y los [márgenes y la disposición del cuadro de texto](https://docs.univer.ai/es-ES/reference/facade/shape-text.md#settextboxoptions).

```ts
const richText = univerAPI.newRichText()
  .text('Quarterly ')
  .bold('review')
shapeText.setRichText(richText)
```

## Copiar formato de formas

Selecciona la forma original, activa el pincel y elige la forma de destino. Se copian relleno, contorno, efectos y formato de texto compatible, conservando identidad, geometría, contenido y vínculos de fórmulas del destino. Borrar formato restaura los valores de inserción. SmartArt queda excluido. El plugin UI correspondiente registra esta función automáticamente.
