<br> [MAS.865](../..) &gt; [Path Planning](..) &gt; Slicers ## Slicers <div style="margin-left:2.5%"> Slicers are tools specifically targeted at path planning for additive manufacturing - more specifically for Fused Deposition Modeling (FDM) also known as Fused Filament Fabrication ([FFF](https://en.wikipedia.org/wiki/Fused_filament_fabrication)). They usually take a 3D watertight mesh as input and generate a 3D printing path (e.g. as G-Code). The assumptions that these tools make is that the whole path planning can be done as a stack of 2-D paths that are connected between slices, thus simplifying the path search space drastically. Beyond the slicing, these tools usually also consider semantics of the given additive printing process. For example, the path is composed not only of the target printed path, but often includes specific parts such as * a **raft** layer that allows better adhesion between print and platform to counter warping, * **support** structures to print overhangs, * various dense **infill** patterns, or * zigzags * space-filling curves (e.g. Hilbert curves) * spirals * sparse **infill** patterns to speed up the printing process * 2d lattices (rectangular, triangular, hexagonal "honeycomb" ...) * 3d lattices (diamond ...) * **wall** paths (usually done first for best appearance, and as a "buffer" for the interior) * **bridge** paths that can go over small __unsupported__ regions * **enclosure** paths that allow support, and protect against oozing, specifically for multi-extruder printing ![Components of a 3d print, including infill](cat-parts.png) ![Components of a 3d print, including raft](cat-raft.png) For an overview, see [From 3D models to 3D prints](https://hal.inria.fr/hal-01518469). The slicing steps includes 1. Generating support structures 2. Sampling the z-height either uniformly or adaptively 3. Intersection of geometry with slice planes (produces contours) 4. Generation of infill paths (offset curves, or clipping of pattern) 5. Path scheduling (to minimize printing time) ### Infill patterns There are mainly two different pattern types: regular and adaptive patterns. The former can basically be generated by clipping a regular pattern and thus do not require much computation. The latter adapt the pattern to each slice, either for structure, or filling. ![Dense patterns](dense-infill.png) ![Sparse patterns](sparse-infill.png) Adaptive patterns include notably spirals (related to offset curves), and notably [Connected Fermat Spirals](https://www.cs.sfu.ca/~haoz/pubs/zhao_sig16_fermat.pdf) that allow a nice optimization of the path time per slice while allowing easy control of the path starting and ending points. ### Software list Before slicing, you need to generate a watertight mesh. This means removing [non-manifold structures](https://blender.stackexchange.com/questions/7910/what-is-non-manifold-geometry), and filling holes. ![Detecting holes with Meshmixer](mesh-fix1.png) ![Filling holes with Meshmixer](mesh-fix2.png) Mesh repair: * [Meshlab](http://www.meshlab.net/) * [Meshmixer](http://www.meshmixer.com/) Mesh slicing: * [Slic3r](http://slic3r.org/) * [Skeinforge](http://fabmetheus.crsndoo.com/) (getting old) * [Cura](https://ultimaker.com/en/products/ultimaker-cura-software) from Ultimaker ([github](https://github.com/Ultimaker/CuraEngine)) * [Repetier](https://www.repetier.com) platform for [RepRap](http://reprap.org/) printers * [IceSL](http://shapeforge.loria.fr/icesl/) (also an algorithmic design tool) * [SliceCrafter](http://shapeforge.loria.fr/slicecrafter/) (web version of IceSL) * [OctoPrint](https://octoprint.org/) as a web interface to 3d printers ### Parameters There are (too) many path planning parameters. See [Cura's default settings](https://github.com/Ultimaker/Cura/blob/9ea59c1976c7d440cb7b9f4fd23be069c73b254f/resources/definitions/fdmprinter.def.json) to have an idea. Furthermore, many settings dependent on the machine, as well as the environment including the temperature, the type of material being used, or even the humidity level (e.g. fiberglass filament on Markforged). See [Mastering Cura](https://ultimaker.com/en/resources/21932-mastering-cura), [Support Settings](https://ultimaker.com/en/resources/20422-cura-support-settings) ### Resources and non-conventional additive path-planning * Work of [Sylvain Lefebvre](http://www.antexel.com/sylefeb/research) #### Support structures: * [Clever Support: Efficient Support Structure Generation for Digital Fabrication](http://hpcg.purdue.edu/papers/Vanek14SGP.pdf) * [Branching Support Structures for 3D Printing](https://www.youtube.com/watch?v=JaNImqRXF34) #### Enclosures: * [Tight printable enclosures for additive manufacturing](https://hal.inria.fr/hal-01141706/) ![Ooze Shield](oozeshield.jpg) #### Out-of-plane path planning: * [WirePrint](http://hcie.csail.mit.edu/research/wireprint/wireprint.html) * [5DOF WirePrint](http://www.cs.cornell.edu/projects/wireprint/) ![Wiremesh printing](wireprint.jpg) #### Foam path planning: * [Procedural Voronoi Foams for Additive Manufacturing](https://sites.google.com/site/jonasmartinezbayona/procvorfoam) ([video](https://youtu.be/ENksVUYBrGs)) * [Orthotropic k-Nearest Foams for Additive Manufacturing](https://hal.archives-ouvertes.fr/hal-01577859/file/MSDL17.pdf) ([video](https://www.youtube.com/watch?v=IqPC9nK0nuM)) ![Voronoi foam](foam.jpg) #### In-situ path planning: * [ReForm bidirectional](http://ourus.co.uk/reform) * [Patching Physical Objects](http://hcie.csail.mit.edu/research/patching/patching.html) * [Hybrid Path Planning](https://robertmcgrath.wordpress.com/tag/the-hybrid-artisans-a-case-study-in-smart-tools/) #### Special Extruder Path Planning * [Colored fused filament fabrication](https://arxiv.org/abs/1709.09689)