# Фигуры и текст

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

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

- Requested language: `ru-RU`

- Content language: `ru-RU`

- Documentation version: `1.2.0`

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

---

Slides использует общий движок Shape для редактируемых фигур, соединителей и текста. `FSlide.insertShape()` возвращает Facade фигуры, работающий через командный конвейер Slides.

## Вставка фигуры

```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()` может вернуть `null`, если адаптер Shape недоступен или входные данные нельзя создать. Перед вставкой зарегистрируйте зависимости Shape из конфигурации Slides.

## Добавление форматированного текста

```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)
}
```

Получайте фигуры через `slide.getShape(id)` или `slide.getShapes()`. Общие методы изменяют положение, размер, видимость, имя и описание; `slide.deleteElement(shape)` удаляет фигуру.

## Редактирование текста фигуры

Используйте фигуру, возвращённую `insertShape()` ниже или в предыдущем примере. `getText()` возвращает активный объект [FShapeText](https://docs.univer.ai/ru-RU/reference/facade/shape-text.md). Метод `getPlainText()` читает текст, `setText()` заменяет его целиком; методы форматирования задают шрифт, цвет и выравнивание.

```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()` заменяет существующий текст. Для нескольких стилей используйте `setRichText()`. Чтобы изменить существующий форматированный текст, вызовите `getRichText()?.copy()`, измените полученный построитель и передайте его в `setRichText()`. Изменения построителя не применяются автоматически. См. также [стили текста](https://docs.univer.ai/ru-RU/reference/facade/shape-text.md#settextstyle) и [отступы и компоновку текстового блока](https://docs.univer.ai/ru-RU/reference/facade/shape-text.md#settextboxoptions).

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

## Копирование формата фигур

Выберите исходную фигуру, включите копирование формата и выберите целевую. Копируются заливка, контур, эффекты и поддерживаемое оформление текста; идентификатор, геометрия, текст и связи формул цели сохраняются. Очистка формата восстанавливает настройки вставки. SmartArt исключён. Соответствующий UI-плагин регистрирует поведение автоматически.
