Нахождение оптимальной ориентации для 3D печати
Благодаря широкой поддержке сетчатых геометрических областей, легко выполнить анализ пригодности для печати, начиная с нагрузки на конструкцию и заканчивая вертикальной ориентацией.
Найдите возможные ориентации для расположения модели на плоской поверхности.
код на языке Wolfram Language целиком
Out[1]=
Каждая грань выпуклой оболочки представляет собой возможную ориентацию.
In[2]:=
convexHull = ConvexHullMesh[points];
orientations = MeshPrimitives[convexHull, 2];
highlight[convexHull, cover]
Out[2]=
Используйте ортогональную проекцию центра массы для дальнейшего ограничения возможных ориентаций.
In[3]:=
masscenter = RegionCentroid[cover];
projection[polygon_, p_] := RegionNearest[AffineSpace @@ polygon, p];
candidates =
Select[orientations, RegionMember[#, projection[#, masscenter]] &];
Возможная ориентация.
In[4]:=
Show[ncover =
TransformedRegion[cover, transform[Last[SortBy[candidates, Area]]]],
Boxed -> True]
Out[4]=
Напечатать модель.
In[5]:=
Printout3D[ncover, "Shapeways"]
Out[5]=