Files

7.1 KiB
Raw Permalink Blame History

Гео-аудит модели под FDM — что проверяемо инструментами осмотра

Лёгкая самопроверка построенной модели существующими инструментами осмотра MCP. Запускать на шаге 4 рабочего цикла (см. SKILL.md), перед чек-листом и экспортом.

Что проверяемо

Проверка Как Статус
Нависания (приближённо) list_faces(normal="0,0,-1", normalTolerance=90−θ_max, minZ=<Zmin+0.1>) — весь улов кандидаты; подробности list_faces(index=N) плоские; ⚠️ криволинейные грубо
Ориентация (геом. прокси) describe_model(sections="box"): как ось слоёв соотносится с габаритом ⚠️ длинная ось ≠ путь нагрузки
Горизонтальные круглые отверстия list_faces(index=N): цилиндр с горизонтальной осью → «нужен teardrop»
Пролёт моста measure(kind1="face", index1=…, kind2="face", index2=…) между внутренними гранями опор
Устойчивость высокой печати describe_model(sections="mass") — центр масс; list_edges(minZ=<Zmin0.1>, maxZ=<Zmin+0.1>) — очертание опорного пятна по концам рёбер (площадь пятна из list_faces для этого не годится) проекция ЦМ; ⚠️ порог по высоте — эвристика
Номиналы / зазоры / габариты measure между гранями; describe_model(sections="box")
Тело / манифолд перед выдачей describe_model(sections="bodies") (одно тело?), итог проверки построения в ответе операции

Почему допуск отбора нависаний равен 90−θ_max. θ_max меряют от вертикали, а отбор идёт по НОРМАЛИ: у поверхности, наклонённой на θ от вертикали, нормаль отстоит от −Z на 90−θ. Значит нависание (θ > θ_max) — это в точности «нормаль ближе 90−θ_max к −Z». При дефолтном θ_max=45° допуск численно равен 45, и это совпадение сбивает: для PETG с θ_max=40° правильный допуск 50, а не 40.

И почему у отбора нависаний обязано быть minZ. Отбор по нормали ЗНАКОВЫЙ: грань проходит, если её нормаль отклонилась от заданного направления не более чем на допуск. У грани, лежащей на столе, внешняя нормаль равна ровно (0, 0, −1) — отклонение нулевое, значит она проходит при ЛЮБОМ допуске и по описанному критерию («тем хуже, чем ближе к чистому −Z») выглядит худшим нависанием детали. Замер: тот же отбор без minZ (допуск 45°) на кронштейне вернул девять граней, наибольшая — 515.44 мм² с центром ровно на Zmin (−50.50) — и это опорное пятно, а не нависание. Нижняя граница окна (minZ = Zmin + 0.1, Zmin из describe_model(sections="box")) убирает первый слой из улова.

Пролёт и пятно — числа, а не впечатления. Замеры на кронштейне камеры: пролёт между стойками 49.0 мм (потолок PLA по §2 fdm-rules.md — 15–25 мм, то есть редизайн); опорное пятно «стоя» — list_edges(minZ=51, maxZ=50) дал четыре ребра, X 50.50…50.50, Y 0.00…8.00, то есть 101 × 8 мм, а ЦМ из sections="mass"(0.00, 4.93, 56.61): проекция внутри пятна, но высота ЦМ над столом 107.1 мм против полуширины 4 мм — 27× при пороге 3×. Ни то, ни другое не выводится из эскиза арифметикой — оба стоят одного вызова.

Граница честности

  • Угол нависания мерить в той же конвенции, что fdm-rules.md (от вертикали; нижняя грань с поверхностью > θ_max от вертикали = нависание) — не путать с углом нормали от горизонтали.
  • Путь нагрузки агент НЕ выводит из габарита — берёт из задачи, из опроса, а работая автономно — из постановки, и тогда записывает допущением (правило 1). Длинная ось ≠ несущая.
  • «Нагрузка в XY» — требование с порогом, а не догма. Обязательность ориентации решает запас σ_меж/σ (SKILL.md, §«Ориентация: когда три требования не сходятся»); при запасе ≥10× выбор делают нависания и устойчивость, а не слои.
  • Истинная мин. толщина стенки и полный детект криволинейных нависаний — не решаются (нет thickness/overhang-солвера).
  • Аудит эвристический и НЕ доказывает печатнопригодность (не ловит анизотропию/путь нагрузки). Вывод — список флагов для решения, не «приговор». Слайсер навык не зовёт намеренно.

Как применять в цикле

  1. После построения, убедившись что оно чистое, — пройти таблицу выше сверху вниз.
  2. Каждый флаг — сверить с соответствующим правилом fdm-rules.md и решить: исправить геометрию или принять осознанно.
  3. Путь нагрузки и косметические грани взять из ответа пользователя или из постановки (правило 1), не из габарита; ориентацию закрыть прикидкой σ_меж/σ.
  4. Затем — чек-лист печатнопригодности (SKILL.md) → выдача; обменный файл (export_model) — только если о нём просили.