# Фигуры

- Human documentation: [https://docs.univer.ai/ru-RU/guides/docs/features/shape](https://docs.univer.ai/ru-RU/guides/docs/features/shape)

- Agent Markdown: [https://docs.univer.ai/ru-RU/guides/docs/features/shape.md](https://docs.univer.ai/ru-RU/guides/docs/features/shape.md)

- Requested language: `ru-RU`

- Content language: `ru-RU`

- Documentation version: `1.2.0`

- Source: [docs/features/shape.ru-RU.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/docs/features/shape.ru-RU.mdx)

---

#### Package metadata

```json
{
  "mobile": true,
  "plugins": [
    {
      "client": "@univerjs-pro/engine-formula"
    },
    {
      "client": "@univerjs-pro/docs-shape"
    },
    {
      "client": "@univerjs-pro/docs-shape-ui",
      "locale": "@univerjs-pro/docs-shape-ui/locale/ru-RU",
      "style": "@univerjs-pro/docs-shape-ui/lib/index.css"
    }
  ],
  "license": true,
  "server": false
}
```

Функция фигур позволяет вставлять и редактировать в документе фигуры и рисунки, включая простые геометрические фигуры, стрелки и элементы блок-схем.

## Введение

В Univer Docs с помощью фигур можно:

* **Вставлять геометрические фигуры**: добавлять прямоугольники, круги, стрелки и другие фигуры.
* **Настраивать внешний вид**: изменять цвет заливки, границы и текст.
* **Свободно размещать**: располагать фигуры в любом месте документа.

## Режим плагинов

### Установка

#### npm

```bash
npm install @univerjs-pro/engine-formula @univerjs-pro/docs-shape @univerjs-pro/docs-shape-ui
```

#### pnpm

```bash
pnpm add @univerjs-pro/engine-formula @univerjs-pro/docs-shape @univerjs-pro/docs-shape-ui
```

#### yarn

```bash
yarn add @univerjs-pro/engine-formula @univerjs-pro/docs-shape @univerjs-pro/docs-shape-ui
```

#### bun

```bash
bun add @univerjs-pro/engine-formula @univerjs-pro/docs-shape @univerjs-pro/docs-shape-ui
```

> [!WARN]
> Для фигур также требуется `UniverProFormulaEnginePlugin` из пакета `@univerjs-pro/engine-formula`. В коде базовой инициализации замените импорт и регистрацию `UniverFormulaEnginePlugin` на этот плагин. Не регистрируйте оба движка формул: иначе при вставке фигур может возникнуть ошибка отсутствующей зависимости.

### Использование

```typescript
import { UniverDocsShapePlugin } from '@univerjs-pro/docs-shape' // [!code ++]
import { UniverDocsShapeUIPlugin } from '@univerjs-pro/docs-shape-ui' // [!code ++]
import DocsShapeUIEnUS from '@univerjs-pro/docs-shape-ui/locale/en-US' // [!code ++]
import { UniverProFormulaEnginePlugin } from '@univerjs-pro/engine-formula' // [!code ++]
import { LocaleType, mergeLocales, Univer } from '@univerjs/core'

import '@univerjs-pro/docs-shape-ui/lib/index.css' // [!code ++]

const univer = new Univer({
  locale: LocaleType.EN_US,
  locales: {
    [LocaleType.EN_US]: mergeLocales(
      DocsShapeUIEnUS, // [!code ++]
    ),
  },
})

univer.registerPlugin(UniverProFormulaEnginePlugin) // [!code ++]
univer.registerPlugin(UniverDocsShapePlugin) // [!code ++]
univer.registerPlugin(UniverDocsShapeUIPlugin) // [!code ++]
```

Если у вас есть коммерческая лицензия Univer, инструкции по настройке см. в разделе [Использование лицензии в клиенте](https://docs.univer.ai/ru-RU/server/license.md#in-plugin-mode).

## Поддержка мобильных устройств

Сначала настройте [мобильный редактор](https://docs.univer.ai/ru-RU/guides/docs/getting-started/installation.md#mobile-support). В коде инициализации режима плагинов на этой странице замените указанные настольные регистрации мобильными экспортами тех же пакетов **до открытия документа**. Сохраните модели, стили, локализации и импорты Facade; не регистрируйте оба варианта.

| Пакет                         | Настольная регистрация    | Мобильная регистрация           |
| ----------------------------- | ------------------------- | ------------------------------- |
| `@univerjs-pro/docs-shape-ui` | `UniverDocsShapeUIPlugin` | `UniverDocsShapeMobileUIPlugin` |

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

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

```ts
import '@univerjs-pro/docs-shape/facade'

const document = univerAPI.getActiveDocument()
const paragraph = document?.getParagraphs()[0]
if (!document || !paragraph) throw new Error('No active document paragraph')
const shape = document.insertShape({
  shapeType: univerAPI.Enum.ShapeTypeEnum.Rect,
  placement: {
    wrappingStyle: univerAPI.Enum.TextWrappingStyle.INLINE,
    anchor: { paragraphId: paragraph.getId(), segmentId: paragraph.getSegmentId() },
  },
})
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-плагин регистрирует поведение автоматически.
