РЕДАКТИРОВАНИЕ · РЕМОНТ
Ремонт сетки STL: открытые рёбра, дыры и нормали
Ремонт STL идёт целиком в браузере — файл не покидает устройство. Проверка сама пересчитывает открытые рёбра, non-manifold и вырожденные треугольники после открытия файла и после каждой операции над сеткой. Кнопка «Проверить и исправить» удаляет пустые грани, сваривает совпадающие вершины, закрывает дыры с границей до 64 рёбер и разворачивает вывернутые оболочки — над всей моделью, в отдельном воркере.
Инструмент откроется на демо-модели Benchy — свой файл можно открыть там же
Файл не покидает устройство
Паспорт инструмента
- «Проверить» — что считается
- открытых рёбер (одна грань на ребро), non-manifold (больше двух граней), вырожденных (площадь² < 1e-18), оболочек, перевёрнутых (знаковый объём < −1e-9), ниже стола (z < −1e-4)
- Вердикт
- «Нужен ремонт» — если есть хотя бы одно открытое, non-manifold или вырожденное; «Готово с оговорками» — если есть треугольники ниже стола или перевёрнутые оболочки; иначе «Готово к печати: топология замкнута.»
- «удалено»
- треугольники с нечисловыми координатами и вырожденные с площадью² < 1e-18
- «сварено»
- вершины сводятся с допуском 1e-5 (mergeVertices); тот же допуск использует проверка
- «дыр закрыто»
- только замкнутые граничные петли от 3 до 64 рёбер; каждая закрывается веером треугольников от первой вершины петли
- «нормалей исправлено»
- 1 на меш: при знаковом объёме < −1e-9 обход всех треугольников переворачивается, затем нормали удаляются и строятся заново
- Где считается
- отдельный Web Worker «polyzon-mesh-task», стадии «Проверка топологии» 25%, «Очистка сетки» 20%, «Передача результата» 90%
- Предел времени операции
- 120 000 мс; после — «Превышено время операции. Модель слишком детализирована.»
Ремонт STL: как это работает
- Откройте модель кнопкой «Открыть модель» или перетащите файл в окно — проверка топологии запустится сама, без нажатий.
- Переключитесь в «Редактирование» и выберите «Ремонт» в рейке «Инструменты модели». Второй вход — из «Расчётов»: если объём помечен недостоверным, под ним есть кнопка «Починить сетку», она ведёт прямо сюда.
- Прочитайте вердикт и счётчики над кнопкой: «открытых рёбер», «non-manifold», «вырожденных», «оболочек», «перевёрнутых», «ниже стола». Кнопка «Проверить» пересчитывает их в любой момент.
- Нажмите «Проверить и исправить». На панели идёт прогресс: «Подготовка сетки к ремонту» → «Очистка сетки» → «Передача результата»; кнопка «Отменить» останавливает воркер, и это не считается ошибкой.
- Сверьте итог во второй строке: «удалено», «сварено», «дыр закрыто», «нормалей исправлено». Проверка перезапускается сама, модель заново сажается на стол, в истории появляется запись «Ремонт сетки» — Ctrl/Cmd+Z возвращает исходную сетку.
- Экспортируйте: STL, 3MF, GLB или OBJ уходят уже с починенной геометрией, потому что она заменила исходную в самой модели.
Ремонт STL: где предел
- Закрываются только небольшие дыры — граничные петли до 64 рёбер, плоским веером от одной вершины, без учёта кривизны. Более длинные границы остаются открытыми, и вердикт после ремонта честно это покажет. Допуск сварки 1e-5 и предел 64 рёбра зашиты в код — настроек у инструмента нет.
- Non-manifold рёбра проверка считает, но ремонт их не устраняет: шага для них в алгоритме нет, счётчик после ремонта может остаться ненулевым.
- Вывернутость определяется по знаку объёма всего меша: переворачивается меш целиком, а не отдельные грани. Ориентация нормалей у незамкнутой сетки — известный отложенный дефект алгоритма; тесты его намеренно не проверяют.
- Ремонт применяется ко всей модели, а не к выбранному объекту, и перестраивает топологию: полость и дренажи сбрасываются, слои покраски с изменившимся числом треугольников пересоздаются пустыми, а пока идёт другая операция над сеткой или экспорт — кнопка ждёт.
Ремонт STL: вопросы
- Как проверить STL на дыры и открытые рёбра перед печатью в браузере?
- Откройте файл в редакторе — проверка топологии запускается сама после загрузки, и повторяется после каждой операции над сеткой. Во вкладке «Ремонт» она показывает число открытых рёбер, non-manifold, вырожденных треугольников, оболочек, перевёрнутых оболочек и треугольников ниже стола. Перед подсчётом вершины сводятся с допуском 1e-5, так что «щели» в пределах этого допуска дырами не считаются.
- Что значит «Нужен ремонт: объём и расход могут быть недостоверны»?
- Объём считается интегралом по замкнутой поверхности; на сетке с открытыми, non-manifold или вырожденными треугольниками он математически не определён. Поэтому в «Расчётах» объём, вес, длина, время и цена помечаются недостоверными, а рядом появляется кнопка «Починить сетку» — она переключает в «Редактирование» и открывает «Ремонт». Как только проверка после ремонта насчитает нули по всем трём счётчикам, пометка снимается.
- Почему после ремонта остались открытые рёбра или non-manifold?
- Ремонт закрывает только петли не длиннее 64 рёбер — большая недостающая часть поверхности так и останется открытой. Non-manifold рёбра он вообще не трогает: в алгоритме есть удаление вырожденных граней, сварка, закрытие небольших дыр и разворот оболочек, но не расщепление рёбер с тремя и более гранями. Кнопка «Проверить и исправить ещё раз» повторит проход, а вердикт покажет, что осталось.
- Как отменить ремонт и вернуть исходную сетку модели?
- Ремонт пишется в историю как «Ремонт сетки» со снимками до и после: Ctrl/Cmd+Z откатывает его, Ctrl/Cmd+Shift+Z или Ctrl/Cmd+Y — повторяет. Проверка после отката перезапускается сама. Восстановление сессии тоже учитывает ремонт: автосохранение делает структурный снимок починенной сетки, а не трансформации поверх исходных байтов файла.
- Уходит ли файл на сервер, чтобы починить сетку?
- Нет. И проверка, и ремонт выполняются в отдельном Web Worker внутри вкладки — модель сериализуется в воркер и возвращается обратно новыми геометриями. Аналитика редактора отправляет только событие «repair» с типом принтера и числом удалённых треугольников и закрытых дыр, и только при включённом согласии на аналитику; имена файлов и геометрия не передаются.