Это относительно простая проблема.
Разбор файла STL с использованием любого метода, который вам нравится (ранее я публиковал здесь код разбора Python STL здесь , но вы также можете использовать любойсуществующие библиотеки).
Затем определите все граничные ребра.Каждый фасет имеет 3 ребра, которые можно хэшировать по их индексам и подсчитывать, сколько раз каждое ребро находится в сетке.Граничные ребра будут найдены только один раз.
Для каждого треугольника сделайте копию, переверните ее и переместите его вершины на некоторое количество в направлении нормали скопированного треугольника.
Если треугольникЕсли у вас есть граничные ребра, вы должны сгенерировать 2 треугольника на ребро грани, чтобы соединить как исходный, так и скопированный треугольник.