Wolfram 언어

3D 프린팅

3D 인쇄의 최적 배치 구하기

메쉬 기반의 기하학적 영역에 대한 광범위한 지원을 통해 구조의 로드에서 수직 배치까지 인쇄에 적정한 분석을 손쉽게 실시할 수 있게 되었습니다.

평면 모델을 위치시키는 경우의 배치 후보를 구합니다.

전체 Wolfram 언어 입력 표시하기
In[1]:=
Click for copyable input
cover = TransformedRegion[ MeshRegion[ Import["http://www.thingiverse.com/download:342676", "STL"], PlotTheme -> "Minimal"], TransformationFunction[{{1., 0.5, 0.03, -0.06}, {-0.05, 0.03, 1.1, 0.1}, {0.53, -1.02, 0.05, 0.19}, {0, 0, 0, 1.}}]]; points = MeshCoordinates[cover]; transform[Polygon[points_]] := Module[{proj = points}, proj[[All, 3]] = 0; Last[FindGeometricTransform[proj, points]]]; highlight[convexHull_, cover_] := Show[HighlightMesh[ convexHull, {Style[1, Brown], Style[2, Opacity[0.3, Brown]]}], cover]; Show[cover, Boxed -> True]
Out[1]=

볼록한 선체의 각각의 면은 배치의 후보를 나타냅니다.

In[2]:=
Click for copyable input
convexHull = ConvexHullMesh[points]; orientations = MeshPrimitives[convexHull, 2]; highlight[convexHull, cover]
Out[2]=

중심의 정투영도법을 사용하여 후보의 방향을 더 제한합니다.

In[3]:=
Click for copyable input
masscenter = RegionCentroid[cover]; projection[polygon_, p_] := RegionNearest[AffineSpace @@ polygon, p]; candidates = Select[orientations, RegionMember[#, projection[#, masscenter]] &];

배치 후보를 살펴봅니다.

In[4]:=
Click for copyable input
Show[ncover = TransformedRegion[cover, transform[Last[SortBy[candidates, Area]]]], Boxed -> True]
Out[4]=

모델을 인쇄합니다.

In[5]:=
Click for copyable input
Printout3D[ncover, "Shapeways"]
Out[5]=

관련 예제

de en es fr ja pt-br ru zh