Week 05 - 3D Scanning and Printing
This week, we have the following tasks to complete:
- Test the design rules for your 3D printer(s).
- Design and 3D print an object (small, few cm³, limited by printer time) that could not be made subtractively.
- 3D scan an object (and optionally print it).
Group Assignment
For a general test of our Prusa MK4s and Prusa XL, I used a benchmark test by majda107.The printing process on the Prusa MK4s is shown below:
The printing process on the Prusa XL is as follows:
To test the required clearance for moving parts along the x-axis, I used Neil's clearance test. The print process on the Prusa XL is shown here:
To evaluate the required clearance in both x- and y-directions, I used a test by 3DMakerNoob from Printables. The print process is shown below:
I conducted general tests with PETG and PLA on both printers. Jakob repeated the general test and Neil's clearance test for PLA on the Prusa XL and PLA/PETG on the Prusa MK4S. Initially, I did not use Neil's test due to its high filament consumption and waste generation, but it remains a valuable test. I did not repeat the x- and y-clearance test for PLA or on the Prusa MK4S since it was irrelevant to my objectives.
The results of our group assignment can be found on our lab page.
3D Scanning
We used a Creality CR-Raptor for 3D scanning. To understand its operation, I followed the Creality documentation.
Setup and Firmware Issues
After unboxing the scanner, I installed the Creality Scan software. Upon launch, the following screen appeared:
Shortly after, an error message was displayed:
The issue was caused by outdated firmware (version below 1.3.5), which is incompatible with Windows versions released after January 15, 2025. Updating the firmware required a functional connection between the scanner and a PC, which was not possible on newer Windows versions.
To resolve this, I attempted to uninstall problematic Windows updates. However, I was unable to fully remove package KB5050009. As a workaround, I borrowed a MacBook to update the firmware. Creality acknowledges this know issue and suggests four possible solutions:
- Upgrade the firmware using the Scan Bridge ($449, unavailable in time for this assignment).
- Upgrade the firmware using a Mac.
- Use an Android smartphone and install an unverified app from Google Drive.
- Uninstall Windows updates (ineffective in my case).
Using a MacBook, we managed to connect the CR-Raptor but could not find firmware version 1.3.5 on the official website. Ultimately, we successfully updated the firmware via an Android smartphone. Initially, an S7 device failed, but Jakob's phone worked. With firmware version 1.3.5 installed, we were able to use the 3D scanner on Windows.
Scanning Process
For my scan, Ferdi assisted me, as I aimed to create a USB stick in the shape of my head and upper body.
We performed two scans. The first attempt resulted in fuzzy hair details. For the second attempt, I wore Ferdi's beanie to cover my hair, which improved the outcome. Holding a stable pose is crucial, as the process takes time. The second scan took approximately 15 minutes.
After scanning, I used the "One-Click Process" option in the right panel.
This option generated the following results:
To further process the scan, I imported the files into Blender. Below is a before/after comparison:
Portable 3D Scanning Setup
With Matthias help, we made the CR-Raptor portable. Our setup included: * Laptop * CR-Raptor * Power bank * Adapter cable
Photogrammetry
I also experimented with photogrammetry using Meshroom, following this Youtube tutorial. I used images taken by Ferdi of a bust of our first rector from the former "Thüringisches Technikum," the predecessor of TU Ilmenau.
I tested the "Fill Holes" option in the "Texturing" step. The results were as follows:
Without "Fill Holes":
With "Fill Holes":
The results were quite similar.
3D-Printing
Our FabLab features various 3D printers using different technologies. We have FFF printers and SLA printers, including a Prusa XL with five tool heads, three Prusa MK4s and a Elegoo Saturn 2.
Fused Filament Fabrication (FFF) printing
3D printing enables the creation of complex parts with undercuts and hollow structures but is quickly limited by overhanging features, especially when a high surface quality is required. Additionally, machining large radii in the Z-direction can result in noticeable layer steps, particularly when using common layer heights like 0.2 mm. While finer layer heights improve surface finish and increase Z-axis resolution, they come at a significant cost—markedly reduced strength due to the increased specific surface area and the higher number of surface defects.
Multi-Material Printing Tests
I experimented with print-and-place objects using Multi-Material prints on the Prusa XL. The goal was to use five different materials to create a movable object, showcasing the capabilities of the Prusa XL.
Another test involved printing PETG and TPU together to evaluate adhesion. The PrusaSlicer preview is shown below:
The results were surprisingly good, though I mistakenly configured PrusaSlicer to omit top and bottom layers, meaning only infill and wall thickness bonded the materials.
Cube Prototype
I started with a simple cube printed without walls or top and bottom layers, using gyroid infill for aesthetics.
My design consisted of multiple components:
- Base cube
- Rotating disks on the sides
- Transparent sections in the disks
- A TPU duck inside the cube
Multi-Material objects with highly complex shapes are either impossible or at least very difficult to manufacture using subtractive methods. This is because each part would need to be machined separately and then assembled. For simpler geometries, assembling the parts first and machining them afterward might work, but not for the geometries I chose. Features like nested parts and deep undercuts, as found in the cube, are impossible to produce subtractively at this small scale.
The first step was to test a small cube using different PETG filaments and moving disks. To accomplish this, I exported the different components from Inventor as three separate files—one for each material. I navigated to Solid Bodies, right-clicked on the first body to be exported, ensured that the "Export Object" option was checked, and left all other bodies unchecked. To improve visibility, I hid the other bodies (Alt + V).
Next, I went to File → Export → CAD Format.
I then selected a destination and chose STL as the file format. I repeated this process for the remaining two components.
Importing into PrusaSlicer
To correctly import the model into PrusaSlicer, I clicked the "Add" button in the top ribbon.
I first opened the main body—the cube.
Next, I right-clicked on the object, selected Add Part → Load..., and imported the second body (the disks).
I repeated this step for the final body (the transparent sections).
The next step was assigning the corresponding toolhead/hotend to each part. On the right-hand side of the PrusaSlicer interface, I assigned different hotends to different parts.
Knowing in advance which toolheads were loaded with which filament was helpful, allowing me to set them correctly from the start. However, adjustments could also be made later at the printer before starting the print. In my case, I wanted the cube in white (Toolhead 1), the disks in black (Toolhead 3), and the windows in translucent filament (Toolhead 4). I configured it accordingly. Ensuring the correct filaments were loaded was essential—I initially forgot to check this and had to adjust it afterward in the filament settings.
The final model with the correct toolhead settings looked like this:
The print was quite large and, to be honest, not an easy or practical part to print. To test the feasibility, I scaled it down to reduce filament usage and print time. Instead of resizing it in PrusaSlicer, I modified the original model to maintain the correct tolerances. I then repeated the export and import steps, adjusting the fillet dimensions to ensure compatibility at the smaller scale.
The result was underwhelming. My tolerances were incorrect, and some parts were too small to print well, especially during bridging.
Redesign for Improved Printability
In the end, I decided to modify the model to make it easier to print. The new design featured a multicolored base with the FabLab logo, a half-dome enclosure, and a TPU rubber duck inside. The base was rotatable within the dome but could not be removed. The assembly process was significantly simplified, following the same steps as in the first attempt. While designing, I felt a bit disappointed because the dome was originally intended to be made from translucent PETG. However, using an additional hotend was not an option, and manually modifying the G-code for filament changes on a single hotend would have taken too much time, which I didn’t have.
I initially used a wipe tower, but it caused excessive stringing and detached from the print bed. The TPU filament was at least three years old, so I should consider drying it before use.
This design produced another object that could not be manufactured subtractively.
After my initial attempt with the wipe tower, I reprinted the model without it. Although some stringing remained, the overall print quality improved significantly.
Additionally, I discovered a faster way to import files into PrusaSlicer: instead of adding each part manually, I imported all bodies at once and selected "Yes" when prompted to import them as a single object with multiple parts.
Stereolithography (SLA) Printing
SLA printing enables the creation of more detailed parts compared to FFF printing, but at the cost of being significantly messier and generating a considerable amount of toxic waste. Printing hollow parts is challenging, as it requires drainage holes for the resin to escape after printing. Additionally, curing is more complex—if the resin is not properly drained, it can diffuse through the cured walls over time.
To print my 3D scan, I used the Elegoo Saturn 2 with Elegoo Water Washable 2.0 Photopolymer Resin in Ceramic Grey. Elegoo provides a comprehensive list of print parameters for their resins, which can be found here. For learning SLA printing or troubleshooting, I recommend the documentation from Amera Labs. They also offer an excellent calibration print called "AmeraLabs Town", which I always use to fine-tune settings.
The list recommends the following parameters:
Parameter | Value from List | Value Used |
---|---|---|
Bottom Exposure | 25 - 30 s | 27,5 s |
Normal Exposure | 2,5 - 3 s | 2,75 s |
Layer Height | 0,05 mm | 0,05 mm |
Z Lifting Distance | 3 + 4 mm | 3 + 4 mm |
Z Lifting Speed | 65 + 180 mm/min | 65 + 180 mm/min |
Z Retract Speed | 180 + 65 mm/min | 180 + 65 mm/min |
Rest Time After Retract | 0,5 mm | 0,5 mm |
Before starting the actual print, we need a model. In my case, I used my 3D body scan and modified it slightly to fit a USB stick inside.
To slice it for our Elegoo Saturn 2, I first imported my files and the goat scan from Matthias into Prusa Slicer, adjusted the positioning and rotation, and generated support structures. After that, I exported it as an STL file and opened it in Chitubox Basic, where I also added the AmeraLabs Towns.
SLA Printing Process
Our SLA printer workspace is currently a work in progress and should hopefully be completed during the "Make Something Big" week.
Personal protective equipment (PPE) is crucial, especially when working with aggressive resins. For example, we have previously used BASF Ultracur3D ST45 M, which yielded excellent results, and BASF Ultracur3D ST80, which was less satisfactory. Both resins pose a hazard when combined with isopropanol, as their fumes can adhere to pulmonary alveoli. Therefore, a respirator with chemical filters and chemically resistant gloves are required.
Resin is always somewhat messy, so it must be handled carefully. To start the print, I fill the vat with more resin than needed to ensure a continuous supply and prevent the printer from running dry during the process.
Once the printer starts, the print bed moves to Z=0 and begins printing. The small monitor displays the exposed areas, where everything in blue indicates exposure. The first layers have significantly longer exposure times—typically ten times the normal layer exposure duration—to ensure proper adhesion.
After the print is completed, I rotate the print bed by 90° to allow excess resin to drip back into the vat. This step is only feasible if the parts are not too large, ensuring resin does not spill outside the vat. The print bed is left in this position for 30 to 60 minutes.
Next, I remove the print bed entirely from the printer, cover the vat, and place the print bed into the washing station. In my case, the station is still filled with 95% isopropanol (though 99% isopropanol is more effective), even though the resin is water-washable. Initially, I intended to compare water and isopropanol cleaning using the AmeraLabs Town model, but I mistakenly submerged the entire print bed into isopropanol, making it impossible to compare methods in time.
After five minutes in the isopropanol bath, I carefully scrape the parts off the print bed. A metal scraper is highly recommended, as it significantly simplifies the process. PPE is mandatory, but it's also essential to avoid contaminating specific surfaces. For example, I avoid touching the print bed screws or support arms with gloves to prevent resin contamination. One downside of Elegoo resin is its brittleness—BASF resin was significantly more flexible. Interestingly, I previously experimented with submerging BASF-printed parts in an isopropanol-water bath for 24 hours, resulting in increased flexibility.
Curing and Final Steps
After washing the parts need it to be cured. In the past I removed the support structures before this process but with the Elegoo resin it works really better to remove it after the curing process. The brittle attribute of this resin make it a lot easier to remove it afterwards.
After washing, the parts must be cured. Previously, I removed support structures before curing, but with Elegoo resin, it is much easier to do so afterward due to its brittle nature.
The support structures on my 3D body scan detached very easily.
Potential Improvements
Three aspects that could be improved:
- Smaller support contact points.
- Printing the USB slot without tolerances or with only 0.1 mm clearance (currently, the 0.3 mm clearance results in a loose fit, requiring additional material, such as thick paper, to hold the USB stick in place).
- Implementing a keyed contour design to ensure correct alignment and a small friction fit. Currently, lifting the upper part does not lift the lower part, which is not a major issue but could be improved.
The final USB stick looks like this:
What I learn this week
- 3D scanning is more complex than it appears.
- Avoid using unfamiliar Blender functions on large models without understanding their impact—this can lead to long processing times or crashes. While editing my 3D scan on my laptop, Ferdi demonstrated different remeshing methods in Blender. One method, using an automatic modifier, resulted in at least 45 minutes of waiting time, likely even longer. I eventually switched to my main PC, where processing was much smoother. However, using excessively high remesh resolutions caused similar issues. Additionally, I initially tried applying the remesh modifier in Edit Mode instead of Object Mode, preventing it from working correctly. Once I switched to Object Mode, the issue was resolved, and the remeshing process completed successfully.
- PETG and TPU bond well but require precise fitting for optimal strength.
- Designing and printing print-in-place parts is quite challenging, and I hope to improve my skills in this area.
What I want to improve next week
This week, I was pleased with my time management and workload. I included necessary breaks and felt much more motivated compared to the previous week. I want to refine this balance further. Ideally, I can maintain productivity without taking an entire day off, as I did this week for an ice-climbing trip.
Design Files
To create this page, I used ChatGPT to check my syntax and grammar.
Copyright 2025 < Benedikt Feit > - Creative Commons Attribution Non Commercial
Source code hosted at gitlab.fabcloud.org