Newer
Older
navi-1 / manuals / render_3d.md

render_3d

Что делает

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

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

Предпосылки

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

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

render_3d(
    source="session_files/{session_id}/bracket.stl",
    views=["iso", "front", "top"]
)

Параметры

Параметр Обязательно Описание
source Да Путь к существующему .stl-файлу
views Нет Список ракурсов (макс. 3). Доступные: front, back, top, bottom, left, right, iso. По умолчанию ["iso"].

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

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

Workflow

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

model_3d(scad_path="...", output_path="...")

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

render_3d(
    source="session_files/sess-abc/bracket.stl",
    views=["iso", "front", "top"]
)

3. Показать пользователю

Каждый PNG сохраняется рядом с STL с суффиксом вида:

  • bracket.iso.png
  • bracket.front.png
  • bracket.top.png

Опубликуйте каждый отдельно:

content_publish(filename="bracket.iso.png", title="Bracket — Isometric")
content_publish(filename="bracket.front.png", title="Bracket — Front")
content_publish(filename="bracket.top.png", title="Bracket — Top")

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

При успехе:

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. Не склеивает в сетку — каждый ракурс — отдельный файл. Нави сама публикует каждый через content_publish.