Newer
Older
navi-1 / manuals / lint_scad.md

mcpnavi_3dlint_scad

Что делает

Проверяет OpenSCAD-скрипт на типичные ошибки, которые часто допускают LLM при генерации кода: незакрытые скобки, отсутствующие точки с запятой, неправильные аргументы примитивов, устаревший синтаксис и т.д.

Предпосылки

  1. Файл .scad уже должен существовать. Напишите его заранее через filesystem write.

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

mcp__navi_3d__lint_scad(
    session_id="...",
    source_path="bracket.scad"
)

Параметры

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

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);
}
'

2. Запустить линтинг

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

3. Исправить ошибки

Если линт нашёл проблемы — исправьте .scad через filesystem edit и запустите линт повторно.

4. Компилировать

После чистого линта:

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

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

При успехе (ошибок нет):

Lint passed: no issues found.

При ошибках:

Lint errors (3):
  line 7: missing semicolon after cylinder()
  line 12: unexpected token '}'
  line 15: unknown parameter 'radiu' in cylinder (did you mean 'r' or 'd'?)

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

  1. Всегда линт перед компиляцией — это быстрее, чем ловить openscad_compile_error.
  2. Всегда передавайте session_id — без него инструмент не знает, в какой директории искать файлы.
  3. Линт не проверяет логику — только синтаксис и типичные LLM-ошибки. Физическую корректность проверяйте через превью.