Newer
Older
navi-1 / manuals / model_3d.md

mcpnavi_3dcompile_scad

Что делает

Компилирует существующий OpenSCAD-скрипт (.scad) в binary STL-файл.

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

Предпосылки

  1. Файл .scad уже должен существовать. Напишите его заранее через filesystem write.
  2. OpenSCAD должен быть установлен. Если нет — инструмент вернёт ошибку openscad_not_found.

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

mcp__navi_3d__compile_scad(
    session_id="...",
    source_path="handle.scad",
    output_path="handle.stl"
)

Параметры

Параметр Обязательно Описание
session_id Да UUID текущей сессии Navi. Файлы разрешаются внутри session_files/<session_id>/.
source_path Да Путь к существующему .scad-файлу (внутри сессии или абсолютный)
output_path Да Путь, куда записать сгенерированный .stl. Родительские директории создаются автоматически.

Workflow

1. Написать OpenSCAD-скрипт

filesystem write session_files/sess-abc/bracket.scad '
difference() {
    cube([40, 20, 5], center=true);
    translate([15, 0, 0]) cylinder(h=6, d=4, center=true);
    translate([-15, 0, 0]) cylinder(h=6, d=4, center=true);
}
'

2. Проверить линтингом (рекомендуется)

mcp__navi_3d__lint_scad(
    session_id="sess-abc",
    source_path="bracket.scad"
)

3. Скомпилировать в STL

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

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

content_publish(filename="bracket.stl", title="Bracket")

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

При успехе:

Generated: bracket.stl
Path: /home/.../session_files/sess-abc/bracket.stl
Size: 12.4 KB

При ошибке:

  • openscad_not_found — OpenSCAD не установлен
  • scad_not_found — исходный файл не найден
  • openscad_compile_error — ошибка компиляции (невалидный CSG, деление на ноль и т.д.)
  • no_output — OpenSCAD завершился без ошибок, но файл не создался
  • wrong_session_dir — файл находится вне разрешённой сессии

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

  1. Всегда binary STL — нет параметра ASCII/binary, всегда используется --export-format binstl.
  2. Скрипт должен существовать до вызоваcompile_scad не пишет .scad, только компилирует.
  3. Всегда передавайте session_id — без него инструмент не знает, в какой директории искать файлы.
  4. Ошибки OpenSCAD читаемы: строка, символ, тип ошибки — всё в stderr.