Нахождение оптимальной ориентации для 3D печати
Благодаря широкой поддержке сетчатых геометрических областей, легко выполнить анализ пригодности для печати, начиная с нагрузки на конструкцию и заканчивая вертикальной ориентацией.
Найдите возможные ориентации для расположения модели на плоской поверхности.
код на языке Wolfram Language целиком
Out[1]=
![](assets.ru/find-optimal-3d-print-orientations/O_27.png)
Каждая грань выпуклой оболочки представляет собой возможную ориентацию.
In[2]:=
![Click for copyable input](assets.ru/find-optimal-3d-print-orientations/In_27.png)
convexHull = ConvexHullMesh[points];
orientations = MeshPrimitives[convexHull, 2];
highlight[convexHull, cover]
Out[2]=
![](assets.ru/find-optimal-3d-print-orientations/O_28.png)
Используйте ортогональную проекцию центра массы для дальнейшего ограничения возможных ориентаций.
In[3]:=
![Click for copyable input](assets.ru/find-optimal-3d-print-orientations/In_28.png)
masscenter = RegionCentroid[cover];
projection[polygon_, p_] := RegionNearest[AffineSpace @@ polygon, p];
candidates =
Select[orientations, RegionMember[#, projection[#, masscenter]] &];
Возможная ориентация.
In[4]:=
![Click for copyable input](assets.ru/find-optimal-3d-print-orientations/In_29.png)
Show[ncover =
TransformedRegion[cover, transform[Last[SortBy[candidates, Area]]]],
Boxed -> True]
Out[4]=
![](assets.ru/find-optimal-3d-print-orientations/O_29.png)
Напечатать модель.
In[5]:=
![Click for copyable input](assets.ru/find-optimal-3d-print-orientations/In_30.png)
Printout3D[ncover, "Shapeways"]
Out[5]=
![](assets.ru/find-optimal-3d-print-orientations/O_30.png)