I’ve had a few conversations over the years with people about the future of 3D printing. One of the topics that arises frequently is the slicer, the software that turns a 3D model into paths for a 3D printer. I thought it would be a good idea to visualize what slicing, and by extension 3D printing, could be. I’ve always been a proponent of just building something, but sometimes it’s very easy to keep polishing the solution we have now rather than looking for and imagining the solutions that could be. Many of the things I’ll mention have been worked on or solved in one context or another, but not blended into a cohesive package.
I believe that fused deposition modelling (FDM), which is the cheapest and most common technology, can produce parts superior to other production techniques if treated properly. It should be possible to produce parts that handle forces in unique ways such that machining, molding, sintering, and other commonly implemented methods will have a hard time competing with in many applications.
Re-envisioning the slicer is no small task, so I’m going to tackle it in three articles. Part One, here, will cover the improvements yet to be had with the 2D and layer height model of slicing. It is the first and most accessible avenue for improvement in slicing technologies. It will require new software to be written but does not dramatically affect the current construction of 3D printers today. It should translate to every printer currently operating without even a firmware change.
Part Two will involve making mechanical changes to the printer: multiple materials, temperatures, and nozzle sizes at least. The slicer will need to work with the printer’s new capabilities to take full advantage of them.
Finally, in Part Three, we’ll consider adding more axes. A five axis 3D printer with advanced software, differing nozzle geometries, and multi material capabilities will be able to produce parts of significantly reduced weight while incorporating internal features exceeding our current composites in many ways. Five axis paths begin to allow for weaving techniques and advanced “grain” in the layers put down by the 3D printer.
Part One: Improving What We’ve Got
The current goal of a slicer is to take a model and render it as geometrically accurately as possible. The slicer doesn’t care about the strength of the part, or know its place in an assembly. It simply tries to produce an outer manifold surface that matches the original as closely as it can. It does this by slicing the model into layers and then drawing 2D paths within that layer via a filling algorithm. There’s more to it than that, but for the most part it disregards the design intent completely. Instead, it checks for failure points in the 3D printing process by moving up and down a layer during its generation stage. If the exterior of the resulting shape matches the input file, the slicer is happy.
Telling the Software Why It’s Making
To really begin to get the most out of simple 3D Cartesian printing, we must tell our software not about the geometry of our part, but its design intent. If we can give the slicer information about how the part will be used in the future, it can begin to optimize the paths and infills it chooses. For example, a surface which will act as a cam or gear tooth needs multiple perimeters of plastic and more infill behind those layers. Mechanically, the gear won’t need a lot of infill between the teeth and the hub, but the hub will probably need more infill and layers.
Another useful set of instructions to give to the software is the dimensions and tolerances of the part. The industry standard for this worldwide is GD&T. How many times have you printed a part with a slot and key only to find that they do not slide together as intended? A corner with too much plastic, or a blob where the printer chose to start the layer blocking a good mechanical fit. With GD&T communicated to the slicer, it can know useful things like, this tower is decorative, but this cylinder is a shaft and needs to be within .25 mm or it wont fit. That way the printer can slow down on the shaft or even incorporate dwell times to make extra certain that all the dimensions are accurate.
One way to do it, a new software interface.
So how will we enter the forces on something into the software? One solution is the strict engineering one: a person would select a hole and then say it will receive ten lbs of force parallel to an axis. Or that the GD&T is rigidly and properly defined as if were sitting on a granite plate.
There are easier ways, too. For example, a person could use a software very much like Z-brush. The person could then paint a “heatmap” of expected forces on the model. This wouldn’t necessarily communicate the same useful information as the engineering version, but it could allow the slicer to automatically determine the thickness of the walls at that location.
The same “heatmap” technique could be used to indicate surfaces of increased geometrical accuracy. A person could paint on “high precision” or “+-.05”mm. In these areas the printer may choose to implement a higher layer height resolution or slow down significantly to reduce acceleration-induced artifacts in the final print. It will lack information such as the positional relationship between holes and the tolerance stack, but for the most part it will serve.
The hard engineering approach does have its advantages. Especially when it comes to assemblies. You could tell the software that a stepper motor is going to transmit 80N of force into one hole on the part and have the software determine the rest of the experienced forces for the assembly from that, automatically optimizing the part as it went a long. The hard engineering approach will also have additional benefits in later chapter when we begin to examine some of the potential in multi-material and axis printing.
Finally, the “heatmap” technique can be used within the slicer to indicate areas you would like the slicing to pay extra attention to. I think this is the most quickly implemented strategy. It is most similar to the one for applying tolerances, but it is just an easy way for a user to tell the printer to slow down in areas or dynamically adjust the layer height. For example, should you print once and find the printer has absolutely wrecked an important corner, simply open up the slicer and paint that corner with the color for detail. The slicer will then slow down and take its time around those corners to produce a more accurate section.
FEA integration for the computationally inclined.
It was touched on in the earlier section, but once design intent starting being communicated to the slicer, [finite element analysis](https://en.wikipedia.org/wiki/Finite_element_method) (FEA) could be used to help generate advanced paths.
There are a few commercial solutions out there that offer similar capabilities for parts that are machined or cast. FDM 3D printers have an advantage over SLA and SLS printers in this arena too. Only FDM can create hollow sections within a manifold volume. SLS and SLA printer can benefit more from solutions like Solidthinking’s to the right.
On the simplest level, infill and layer densities can be increased in areas of the print’s internal volume to increase strength. There’s no reason that a post which experiences a significant load can’t have solid infill closest to the load, and fan out to sparser infill as the forces dissipate. The printer could also do things like dwell time on areas of stress concentration to force a stronger layer bond.
The slicer could also generate paths that have grain in the correct orientation for the loads the part will be seeing. I’ve had a few parts fail because I didn’t have the part rotated correctly for the rings of the 3D print to resist the forces correctly. With FEA capability, the slicer could simulate the load on the part and then try it in different orientations until the layer seams no longer cause a failure.
Once you get started on the additional possibilities this provides, it’s hard to stop.
The Next Logical Step, a Shiny New File Format
There are no commonly accepted file formats in use today that communicate design intent. As mentioned before, if the Open Source community were to band together, or if an open source company could oversee the creation of such a format, they would be leading the world. The format should be able to communicate a few critical things.
- Manufacturing Method: SLA, SLS, FDM, Injection Molding, Stamping, Turning, Machining, etc. Including this information will help future software automate its approach to the geometry and simulation.
- Dimensions and Tolerances: Using GD&T the file should contain all the information necessary to produce a 2D or 3D drawing for manufacture and inspection. Software will use this to automatically tune CAM generation for the manufacturing method.
- Design Intent, Features: There are very standard things in machine design such as hole, weldment, live hinge, composite layers, CAM surface, etc. Telling the software that this is a hole and it has a tolerance is important.
- Design Intent, Forces: Either define the forces that the part will see or define another part in the assembly that will transmit forces to it.
- Design Intent, Assembly: Which parts link to the file? Not only will this allow for simulation, but it will let the computer check the tolerance stack and find problems with fit.
- Design Intent, Composite: Is the part made of two plastics? How can one file define the two colored tree frog example? Or a R/C car wheel with a stiff inner part and flexible outer?
- Design Intent, Materials: What materials are the part expected to be made of? Especially with multi-material printing this will be important. It also lets the software simulate with minimal configuration.
- Parametric geometry data: A data file that stores the geometry in as generational a format as possible rather than rigid polygons that must be scaled or subdivided. OpenSCAD, Soldiworks, Inventor, and others work this way. They calculate the geometry, rather than storing it.
- Extensibility. It would be nice to start out with a simple, text-editable container format as the core. This would also avoid the need to write the whole format all at once.
- Standard Libraries: The format should always contain the latest material definitions, but it should have the ability for self updating. If Taulman wants to host a repository of data about its filament, the software should be able to find the latest version and update.
Printer to Slicer Calibration:
One major issue with slicers today is that they very much reflect the hodgepodge evolutionary nature of 3D printing. The values entered into a slicer to determine print speeds and feeds have very little to do with the actual mechanics and dynamics of extruding a plastic for a nozzle. Rather than a volume-in, volume-out determination based on the configuration you have, these programs rely on you to adjust to an expected result by printing a geometry, measuring it, and arbitrarily changing multipliers until the geometry printed matches the geometry expected. While at face value this seems to be a good and cogent solution, it instead results in prints that have too little infill, or excess plastic in odd edgecases. Better understanding of nozzle pressures, geometries, and filament properties will allow us to calibrate our software better.
Part 1 Conclusion
In the end these are just my thoughts about the future. Fused Deposition Modeling has been around since the 80s. However, in 36 years, its core technology hasn’t improved much at all. I’ve used the industrial systems and they work with layers, infill, and perimeters too. In fact, in many ways they’re worse and harder to use than the open source solutions out now.
At least in terms of the software, 3D manufacturing is way behind other fields. My favorite example of where we should be heading is gaming. Video games have incredible tools — tools that put the best solid modelers and the best simulators in 3D printing to absolute shame. Some companies like Autodesk are starting to push new boundaries, but for the most part the field is moving at a snail’s pace. Incremental progress is great, but it’s always good to envision the future. Maybe we’ll start to realize what we don’t have, and get the urge to build it.