Week 5
3D Scanning & printing
Week assignments
- Group assignment:
- test the design rules for your 3D printer(s) ✔
- Individual assignment:
- design and 3D print an object (small, few cm3, limited by printer time) that could not be made subtractively ✔
- 3D scan an object (and optionally print it) ✔
Group assignment
As the coordinator of the digital fabrication space at ETSAC, I’ve been in charge of purchasing, setting up, and documenting the 3D printers in the FAB. On Thursday, February 21, our instructor Luis joined us online to add to Neil’s class explanations. He gave us a bunch of recommendations on how to approach the group project and how we should organize ourselves.
Francisco and Pablo had less experience using a 3D printer, so we spent the rest of the morning getting familiar with how our machines work and their main features.
Our first 3D printers arrived in November 2013. We took part in a group purchase organized by 3DEspana and got several kits. Luckily, we had the help of a former architecture school student, Xoan Sampaiño @xoan, and ended up spending a really interesting Christmas in 2013 learning how to assemble, program, and fine-tune our “new machines”.
Since then, 12 years have passed, and we’ve kept upgrading the fabrication space with more modern machines. Right now, we have a Prusa Mk3S+ printers, a RepRap delta printer, and a Formlabs Form 3.
To tackle this week’s group project, we split up the work as follows:
Even though I’ve been using a 3D printer for years, I had never printed a Heat Tower before. I always just set the temperature based on my experience with different materials, figuring out the right temp for each type of filament on my own. I had done clearance and bridge tests before, though.
In my opiniion, our Prusas are a super reliables machines with great documentation, while the Delta printer is really interesting because it lets you experiment with movements beyond the horizontal plane. I had tried that with the Prusa a while back, but because of how it’s built, it has a more limited range of motion compared to the Delta. The fan or sensor can easily bump into the freshly printed material, which makes certain moves trickier.
Link to week 5 group assignment
Based on the tests conducted in the group assignment, the printing limits without supports can be determined.
Maximum Printable Angle Without Supports
In this case, the maximum printable angle without supports should not exceed 60 degrees.
Bridge Printing Without Supports
A bridge span of 20 mm can be achieved easily. In the second test, a span of 25 mm was successfully printed without supports.
Cantilever Printing at a 90-Degree Angle
In the cantilever test without supports at a 90-degree angle, a dimension of 2 mm can be considered feasible printing in mid-air is not possible at the moment. However, thanks to the Prusa printer’s performance, after five layers from the start of the cantilever, the filament was correctly positioned at the Z-height over a 10 mm span, as shown in the image.
Individual assignment
Design and 3D print an object
To complete this task, I used the base design of the beam support that I’ll be using for my final project. The main design requirement is that the object can’t be manufactured using subtractive methods.
My idea is to design the cylindrical support so that it gets printed as a single piece with the rest of the structure, making it impossible to separate. However, the connection must have enough tolerance to allow the cylindrical section to rotate freely, since the beam should rest on the support without transmitting bending moments.
Starting from the parametric design of the bending bench, I created a component that integrates into the side walls of the support as the piece is being printed, ensuring that it can’t be removed after printing is complete. The dimensions of the piece are controlled through geometric parameters, taking into account the initial design values of the bench.
Grasshopper Strategy
At first, I considered establishing a strategy that would create an inclined plane in the contact area between the inner log and the sidewalls. However, after the initial tests, I decided that the correct option was not to apply it. This is why the image shows a value of 0 on the slider.
The tolerance required to allow the free rotation of the inner segment, as determined in the group assignment, is added to the segment’s diameter to define the hole size in the sidewalls of the support.
In Rhinoceros, I exported the model in STL format, tweaking the export settings to optimize the mesh. Then, I used PrusaSlicer to generate the G-code, which I’ll send to our Prusa Mk3S+ printer.
I also placed some simulated bricks to get an idea of the counterweight I’ll need to add when I build the bench at full scale.
Non planar 3DPrinting
Thanks to my good friend Diego García Cuevas @professorcuevas, author of Advanced 3D Printing with GH, I’ve learned how to generate GCode from Grasshopper to control our 3D printers—without being stuck with a horizontal printing plane.
The strategy starts with a series of curves to which I apply a loft
and then discretize using Divide Domain2
. I trim with Isotrim
, then evaluate the edges and vertices with Deconstruct Brep
. The idea is to generate a set of points that I use to reference lines and NURBS curves, ultimately forming a single continuous polyline from start to finish.
Next, I use
Explode
on the polyline to get a list of segments, which helps me determine their length, the amount of material I need to extrude in each case, and the X, Y, and Z positions of each point in the path. These are the control parameters to take into account:
- Filament diameter
- Nozzle diameter
- Layer Height
- % Overflow (optional)
Now I just need to put everything together
Concatenate
the initial startup protocol for my printer, the G1
command, the speed, the X, Y, and Z coordinates of each point, the amount of filament to extrude, and finally, the shutdown protocol—turning off the bed temperature, the extruder, and the motors.
Volumetric Flow Rate
The printing works well in the first layers; however, as the height increases, the printer loses some precision, especially in the rear section. To identify the cause, I have adjusted the temperature, extrusion, and ventilation parameters. Additionally, I placed polystyrene sheets to insulate the print from potential air currents and create a sort of protective raft.
Although reducing the printing speed improved the results, in the rear areas of the machine, the filament becomes unstable. The issue might be that the actual upper layers present a significant discrepancy compared to those in the G-code. In the image, the deformation is visible as the print moves up the layers.
Scanning and printing
In order to complete this assignment, I used Polycam to scan a bust. Since I was using the free version, the mesh didn’t have very high definition. I exported the model in glTF format from Polycam and tried importing it into different programs like Blender and Rhinoceros. The best option seemed to be subdividing the triangle mesh generated by Polycam and then exporting the STL file from Rhinoceros to import it into PrusaSlicer. I also adjusted the face normals and stitched some loose faces together to get a proper boundary representation of the object.
I wanted to test two different print settings. First, I tried a spiral mode, where a single continuous thread forms the entire figure. This method doesn’t allow for support structures, so in the upper part of the model, there were some layer placement issues when forming nearly horizontal surfaces. After that, I enabled internal infill, which allowed the print to finish without any problems.
Spiral Printing
Based on the tests I conducted in the group assignment, it was clear that spiral printing would fail. Nevertheless, I decided to proceed with it. I found the tiny hair left after printing kind of funny.
In the following image, you can see the correctly printed model with supports alongside the failed spiral-printed one.
The cantilever I tried to print was almost completely horizontal and went way beyond the design limits. Lesson learned.
My friend Francisco told me how well the Scaniverse app scans, and I couldn’t resist trying it out. I scanned a fish I brought back as a souvenir from one of my trips.
I’ve uploaded the result to SketchFab.
Finally I transformed the original mesh to subds and adjusted the fish platform, now the model is ready to print.
Files week 5
Delta Heat Tower
Bench Support
Mountain bricks
Wireframe non planar Gcode
ScanAbstractTere 3mf
glTF
Fish Maldives 3mf