7.1 KiB
Гео-аудит модели под 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=<Zmin−0.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-солвера).
- Аудит эвристический и НЕ доказывает печатнопригодность (не ловит анизотропию/путь нагрузки). Вывод — список флагов для решения, не «приговор». Слайсер навык не зовёт намеренно.
Как применять в цикле
- После построения, убедившись что оно чистое, — пройти таблицу выше сверху вниз.
- Каждый флаг — сверить с соответствующим правилом
fdm-rules.mdи решить: исправить геометрию или принять осознанно. - Путь нагрузки и косметические грани взять из ответа пользователя или из постановки (правило 1),
не из габарита; ориентацию закрыть прикидкой
σ_меж/σ. - Затем — чек-лист печатнопригодности (SKILL.md) → выдача; обменный файл (
export_model) — только если о нём просили.