3D Bauteilverschachtelung / Plating / Nesting / Bin Packing
Bauteile verschachteln macht Sinn, um beispielsweise mehrere Bauteile auf engeren Raum anzuordnen. Diverse Slicer / 3D Druck Programme haben eine einfache Funktion zum automatischen anordnen. Leider sind diese Anordnungen meistens unschön. Es gibt ein paar wenige kostenfreie Programme, um diesen Job zu übernehmen. Auf dieser Seite finden sich Erläuterungen und nutzbare Programme. Insbesondere für SLA/SLS/DLP/FDM 3D-Drucker kann ein 3D Bin Packing Vorteile bringen. Das 3D Packing ist äußerst rechenintensiv und erfolgt über Anäherungsberechnungen
Unterschiede im Nesting und Beispiele
Grundsätzlich muss beim 3D Nesting unterschieden werden, ob die Teile lediglich in der Ebene kompakt ineinander geschachtelt werden, oder ob sie auch in ihrer Höhenausdehnung bzw. dem ganzen Volumen geschachtelt werden. Das Nesting in der Ebene entspricht in den Wesenszügen der 2D Bauteilverschachtelung / Plating / Nesting / Bin Packing. Auf der Seite ist auch beschrieben, wie sich das Nesting von zweidimensionalen und dreidimensionalen Bauteilen auf einer Schachtelebene unterscheidet. In der Regel besteht der Unterschied im Dateiformat. Letztlich können Nesting-Programme für 3D-Bauteile (z.B. STL, OBJ) auch für zweidimensionale Probleme verwendet werden (nach geeigneten Konvertierungsschritten).
Vollvolumentrisches 3D-Nesting | 3D-Nesting in der Ebene |
Siehe auch https://de.wikipedia.org/wiki/Rucksackproblem (knapsack problem)
Open Source oder kostenfreie Tools
- fogleman/pack3d (Vollvolumen, keine freien Rotationen (nur X+/X-/Y+/Y-/Z+/Z-))
- NicoSchlueter/FuseNest (Ebene)
- Rhoban/Plater (Ebene)
- tamasmeszaros/libnest2d (Ebene)
- AutoDesk Meshmixer (Ebene)
- Oscar-Oliveira/BPP-3D-Viewer (Vollvolumen, beschränkt auf Quader)
- dennisdebel/pluriform-3d-bin-packing (Vollvolumen)
- ahmedmdl/3d-binary-packing (Vollvolumen)
- https://github.com/SebLeich/storage-manager-2.0
Ein Beispielvergleich zwischen Plater und PrusaSlicer. Der Versuch 8x Riffy (ein kleiner Schlüsselorganizer, bestehend aus 4 Teilen) zu importieren und vollständig auf das Bett zu verteilen wie folgt:
In PrusaSlicer bleiben 10 Teile übrig | In Plater bleibt kein einziges Teil übrig (je nach Plating-Durchlauf max. 1-2 Teile übrig) | |
![]() |
pack3d
- https://github.com/fogleman/pack3d oder https://github.com/vmario89/pack3d
- https://www.michaelfogleman.com/pack3
Benchy nesting cluster (Bildquelle: https://github.com/fogleman/pack3d)
Der Code ist in Go geschrieben (< 1000 Zeilen) und besteht aus zwei Binaries
- pack3d zum dichten Packen von Objekten mittels sog. "Annealing" (enges Anähern/Glühen)
- binpack, um möglichst viele Objekte in ein vorgegebenes Volumen (z.B. das Volumen des Druckers) zu packen.
Das Programm schachtelt nicht beliebige Rotationen, sondern "lediglich" in die 6 Grundrotationsrichtungen X+/X-/Y+/Y-/Z+/Z-. Freie Rotationen sind nicht möglich, sodass auch beim Schachteln mit pack3d noch viel Luft zwischen den Modellen bleibt.
Plater
Quelle: https://github.com/Rhoban/Plater
- erzeugt ein einziges STL als Output
- kann in PrusaSlicer nachträglich wieder in Einzelteileaufgebrochen werden!
Re-Splitting with PrusaSlicer
Mit Hilfe von PrusaSlicer lasten sich die migrierten Plattenzusammenstellungen wieder in einzelne Teile aufbrechen.
Importieren
Splitten
Die Teile können nun einzeln bearbeitet werden. Allerdings ist ein Verschieben nicht möglich. Außerdem ist das Zuweisen teilweise recht aufwendig:
Autodesk Meshmixer
AutoDesk MeshMixer 3.5 läuft auf Windows und auch mit Wine (getestet auf Ubuntu 20 LTS)
Download → http://www.meshmixer.com/download.html
libnest2d
https://github.com/tamasmeszaros/libnest2d
(Bildquelle: https://github.com/tamasmeszaros/libnest2d)
Keine Kommentare vorhanden
Keine Kommentare vorhanden