# mcp__navi_3d__render_stl

## Что делает

Рендерит PNG-скриншоты ракурсов из STL-файла через OpenSCAD CLI.

**Требует:** OpenSCAD установлен в системе (`openscad` в PATH).

## Предпосылки

1. **STL-файл уже должен существовать.** Сгенерируйте его через `mcp__navi_3d__compile_scad` заранее.
2. **OpenSCAD должен быть установлен.**

## Формат вызова

```python
mcp__navi_3d__render_stl(
    session_id="...",
    source_path="bracket.stl",
    views=["iso", "front", "top"]
)
```

## Параметры

| Параметр | Обязательно | Описание |
|---|---|---|
| `session_id` | Да | UUID текущей сессии Navi. Файлы разрешаются внутри `session_files/<session_id>/`. |
| `source_path` | Да | Путь к существующему `.stl`-файлу (внутри сессии или абсолютный) |
| `views` | Нет | Список ракурсов (макс. 3). Доступные: `front`, `back`, `top`, `bottom`, `left`, `right`, `iso`. По умолчанию `["iso"]`. |

## Доступные ракурсы

| Ракурс | Описание |
|---|---|
| `front` | Вид спереди |
| `back` | Вид сзади |
| `top` | Вид сверху |
| `bottom` | Вид снизу |
| `left` | Вид слева |
| `right` | Вид справа |
| `iso` | Изометрия (по умолчанию) |

## Workflow

### 1. Сгенерировать STL

```
mcp__navi_3d__compile_scad(
    session_id="sess-abc",
    source_path="bracket.scad",
    output_path="bracket.stl"
)
```

### 2. Отрендерить ракурсы

```
mcp__navi_3d__render_stl(
    session_id="sess-abc",
    source_path="bracket.stl",
    views=["iso", "front", "top"]
)
```

### 3. Проверить рендеры

Каждый PNG сохраняется рядом с STL с суффиксом вида:
- `bracket.iso.png`
- `bracket.front.png`
- `bracket.top.png`

Обычно эти PNG нужны Нави для внутренней проверки геометрии перед публикацией STL. Откройте их через `image_view` и проверьте форму, пропорции и физическую корректность.

Не публикуйте PNG пользователю, если пользователь явно не попросил preview-картинки.

```
image_view(source="session_files/sess-abc/bracket.iso.png")
image_view(source="session_files/sess-abc/bracket.front.png")
image_view(source="session_files/sess-abc/bracket.top.png")
```

## Что возвращает

При успехе:
```
Generated 3 image(s):
  bracket.iso.png
  bracket.front.png
  bracket.top.png
```

При ошибке:
- `openscad_not_found` — OpenSCAD не установлен
- `stl_not_found` — исходный файл не найден
- `too_many_views` — больше 3 ракурсов за раз
- `invalid_views` — неизвестное имя ракурса
- `render_failed` — все рендеры не удались

## Важные правила

1. **Максимум 3 ракурса за вызов** — если нужно больше, разбейте на несколько вызовов.
2. **Фиксированное разрешение** — 400×300, не настраивается.
3. **PNG сохраняются рядом с STL** — в той же директории, с суффиксом ракурса.
4. **Всегда preview mode** — быстрый рендер, не полный CSG.
5. **Не склеивает в сетку** — каждый ракурс — отдельный файл. PNG обычно нужны для внутренней проверки; публикуйте их только по явной просьбе пользователя.
6. **Всегда передавайте `session_id`** — без него инструмент не знает, в какой директории искать файлы.
