# Гео-аудит модели под FDM — что проверяемо инструментами осмотра Лёгкая самопроверка построенной модели **существующими** инструментами осмотра MCP. Запускать на шаге 4 рабочего цикла (см. SKILL.md), перед чек-листом и экспортом. ## Что проверяемо | Проверка | Как | Статус | |---|---|---| | Нависания (приближённо) | `list_faces(normal="0,0,-1", normalTolerance=90−θ_max, minZ=)` — весь улов кандидаты; подробности `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=, maxZ=)` — очертание опорного пятна по концам рёбер (площадь пятна из `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`) — только если о нём просили.