Hofstadter's law: It always takes longer than you expect, even when you take into account Hofstadter's law.
Neil's law: You will cast the opposite of what you expect, even after learning about Neil's law.
Group Assignment
This week, I joined Kat's training session to learn about molding and casting. She showed us several examples covering molding, casting techniques, and materials. I also reviewed Safety Data Sheets (SDS) for two materials by Smooth-On: Oomoo 30 silicone rubber and Smooth-Cast 300 plastic. Understanding material properties and safety protocols is essential when working with these chemicals.
See additional documentation in the group notes.
Manual Particle Accelerator
Who doesn't like particle physics? Smashing particles together at near light speed could make cool images and win you a Nobel prize. Worried about creating a black hole? That's been debunked. In this project, you can safely accelerate a particle by hand!
I imagined a torus shaped device. It hurts my brain to imagine the positive/negative relationships involved in casting. I found sketching an effective way to develop the concept.
Concept sketch
After sketching out the positive/negative and hard/soft material relationships, I was ready to start fabrication. The design called for two shell components that, when closed like a clam, would form a torus in which you could accelerate a metal ball by shaking it. Similar to how self-winding watch feels.
The CAM Debacle
My initial plan was simple and naive: CNC wax mold → plastic part. I've been using Onshape for its Linux compatibility, but learning from Week 7 that using other people's Fusion 360 for CAM adds significant overhead, I decided to learn FreeCAD CAM this week to have a personalized workflow.
I studied two reference tutorials to understand the CAM capabilities:
Attempt 1: Onshape Modeling → FreeCAD CAM
I started by measuring the stock size so I could size the parts accordingly.
Stock measurement
- Width: 76.45mm
- Length: 87.45mm
- Height: 38.21mm
I modeled the parts in Onshape and imported them into FreeCAD for toolpath generation. I found an effective workflow that uses a boolean operation to simulate the casting.
Simulated casting using the subtract boolean operation
A quick boolean operation against stock geometry immediately revealed a design flaw: I had edges without thickness, which would be impossible to mill.
Boolean operation reveals design flaw
After fixing the geometry, I managed to set up the machine job by creating tool bits based on example endmill shapes and modifying the JSON configuration, following this YouTube tutorial.
{
"version": 2,
"name": "1/8 inch Endmill",
"shape": "endmill.fcstd",
"parameter": {
"CuttingEdgeHeight": "30.0000 mm",
"Diameter": "3.1750 mm",
"Length": "50.0000 mm",
"ShankDiameter": "3.0000 mm"
},
"attribute": {}
}
However, a new problem emerged. The toolpath algorithm couldn't fit the bit in the narrow, ring-like pocket geometry.
Toolpath with excessive vertical movement
Increasing the ring width to be significantly greater than the tool diameter would solve the problem, but I didn't want to compromise the design. Additionally, FreeCAD's multiple toolpath feature proved very buggy. After generating the first toolpath, producing paths for the remaining material simply had no effect: subsequent toolpaths would start over from the surface of the stock.
Attempt 2: FreeCAD Modeling → FreeCAD CAM
Thinking the import process might be causing issues, I decided to model directly in FreeCAD.
Modeling in FreeCAD
The transition from Onshape to FreeCAD was rough but manageable given that they share a similar mental model. I finished the mold design and tested it in CAM, but the multiple toolpath issues persisted.
Toolpath missing half of the geometry
Attempt 3: Switching to Mods
Frustrated with FreeCAD's CAM limitations, I switched to Mods for toolpath generation, using the G-code/mill 2.5D stl program. Unfortunately, Mods couldn't generate sequential toolpaths that build on each other. Worse, I realized that my U-pipe geometry would require a ball endmill, and adding custom bit geometry would take too long to implement.
Excessive horizontal movement in Onshape model
Incomplete paths in FreeCAD model
Mods failed to generate proper toolpaths with issues similar to what I experienced in FreeCAD. At this point, I suspected fundamental problems with my modeling approach rather than toolpath algorithms.
Summary of Failed Attempts
| CAD Software | CAM Software | Issues Encountered |
|---|---|---|
| Onshape | FreeCAD | Unnecessary vertical travels |
| FreeCAD | FreeCAD | Ibid, and missing toolpaths on half of the ring |
| Onshape | Mods | Unnecessary horizontal back-and-forth travels |
| FreeCAD | Mods | Ibid, and missing toolpaths on half of the ring |
After spending considerable time troubleshooting, I needed to embrace pragmatism. In the spirit of supply-driven project management, I decided to move forward with something I could make real progress on: 3D printing the mother mold instead of CNC milling wax.
Table of Contents, Literally
Before diving into the technical details, I want to show the physical manifestation of this week's iterative process. I laid out all my artifacts on a table. Each row visualizes an iteration cycle from mother mold to a point where I either reached a milestone or learned from a mistake.
v1 through v7 of molding and casting using 3D printing
V1: Perfectly Making The Wrong Thing
First Iteration: PLA Mother Mold
I slightly modified the CNC model to be the mother mold, sliced it with PrusaSlicer, and printed it in PLA.
Modeling the mold
The print came out clean despite pronounced layer lines. I wanted to cast it first to see how bad the surface finish would be. Let's try Smooth-On Oomoo 30 silicone rubber.
Gathering materials for casting
Estimating the amount of silicone rubber needed using water
I noticed that part B has much higher density than part A. It makes sense to add A first so part B can sink and improve the mixing.
Before mixing, clear separation between part A and B
After mixing, the color is uniform
Using a small cup was a mistake. A larger cup would make mixing much easier.
Pouring is a battle against bubbles and requires perfect balance: too fast, you could spill or introduce bubbles. Too slow, it could drip and also cause bubbles. Too high, it could splash and make bubbles. Too low, the bubbles wouldn't be able to stretch and pop before entering the mold.
Pouring in action
The curing process requires keeping the mold undisturbed for 6 hours.
Curing
The result looks great, except... I cast the opposite of what I wanted. I knew Neil warned us in the lecture about making such a mistake. How on earth did I still manage to do it? In retrospect, I subconsciously believed that I could cast directly from the 3D printed mold. If I were able to cast hard material from the 3D printed mold, the outcome would be correct.
Good but wrong result
The result also confirmed the surface finish issue. The layer lines transferred to the silicone mold and would ultimately transfer to the final cast. I needed to smooth the surface, so I considered a few options:
- Resin coating: Kat warned that resin inhibits silicone curing
- Wax coating: Wax melts PLA, requiring a switch to PETG
- Acetone vapor smoothing: Only works for ABS, not PLA or PETG
- Sanding and polishing: Labor intensive and inconsistent results
By elimination, I decided to try wax coating with PETG for the next iteration.
V2: PETG with Wax Coating
I started V2 before realizing the positive/negative issue. Since the goal was to characterize surface treatment methods, I proceeded with the PETG print with the wrong geometry. At least I would be able to compare identical geometries across different surface treatments.
3D printed PETG mold
I used a heat gun to melt wax pellets and brushed them onto the PETG mold.
Wax pellets
Brushing wax onto the PETG mold
The final step involved applying heat to re-melt the wax in the mold and drain the excess. Unfortunately, I warped the PETG during the drain process when the material was still hot and pliable.
Warped PETG mold
Despite the warping, I proceeded to cast the silicone mold. The results were disappointing. The wax coating couldn't eliminate the layer lines, and worse, it destroyed the sharp edges that were critical to my design.
Left: PLA without surface treatment. Right: PETG with wax coating.
V3-V5: Pushing The Limit of PLA
I switched back to PLA and recalled a feature from the 3D printing assignment: ironing. This could potentially smooth the top surface without requiring post-processing. I explored several tweaks to optimize the print quality:
- Added ironing at 10% flow and 0.1mm gap for surface smoothing
- Reduced layer height to 0.05mm
- Switched to concentric infill
Setup for ironing in PrusaSlicer
The concentric infill change had an unexpected benefit of significantly speeding up the print. My geometry is circular, so concentric infill minimizes travel moves compared to the default rectilinear pattern.
I tested various ironing parameters to find the optimal settings:
Setting up different processes in one job
2 by 2 grid of results
| Position | Setting | Result |
|---|---|---|
| Top left | Monotonic line infill | Baseline |
| Top right | Concentric infill | Cleaner, faster |
| Bottom left | Ironing: 0.15mm spacing, 15% flow | Good improvement |
| Bottom right | Ironing: 0.1mm spacing, 10% flow | Best surface finish |
In summary, everything we need to know to improve 3D printing is already captured in the culinary wisdom:
Low and slow.
-- Texas BBQ pitmasters
Low layer height and slow ironing did the trick. I observed much better interior layers thanks to concentric infill:
Ironing and concentric infill in action
Here is the full mold using the ironing and concentric infill settings. Unfortunately, the 3D printer had some issues extruding consistently despite my tuning of the temperature. It was not as good as my characterization test from another printer.
Ironed mold, sub-optimal surface and rough wall texture
When casting the silicone mold from the new PLA mother mold, I used a glass plate to press down the backside of the rubber as it cured, creating a flat surface to make the final casting easier to level.
Leveling the surface
This made a perfectly flat rubber surface, but it also created a vacuum suction that made it very difficult to remove it from the glass. I would not recommend this technique to others.
Due to the rough wall texture, the silicone mold adhered strongly to the PLA mother mold. During demolding, I tore the wall apart from the rubber base.
Damaged silicone mold after demolding
The right-most gutter made demolding very difficult
I wanted to proceed with the final casting to gain more experience and reveal other potential issues.
3D printed support ring to hold the damaged mold in shape
With the support ring, I was able to cast the final parts. The Smooth-On Smooth-Cast 300 plastic came with the instruction that you should stir or shake the bottles before mixing. That was a very bad idea. After shaking, the mixture was full of bubbles that would not go away. I had to switch to another bottle while letting those bubbles dissipate over time.
Casting the final parts despite the damaged mold (left)
I attempted to remove bubbles using a vacuum chamber, but it backfired. The vacuum caused surface roughness on the bottom side of the mold that would be visible in the final part.
Using vacuum chamber to remove bubbles
This marks the first production of the final parts. Good news is that the geometry is correct this time.
Design validated
To make the molds ready for assembly, I deburred the edges and sanded down rough surfaces.
Deburring the casted parts
For fun, I hand-painted some graphic details with a sharpie. It was clear that vacuum processing was not only unnecessary but also detrimental to surface quality.
Smooth side without vacuum processing
Rough side due to vacuum processing
The two sides didn't fit very well due to an inconsistent interface. I had to belt-sand the edges and deburr the groove to make them fit. I also repeatedly coupled and decoupled the two parts until they finally fit smoothly.
How hard should I shake to reach 99% the speed of light?
V6-V7: Details
During these final iterations, I made the following improvements based on everything observed in previous versions:
- Add chamfer to mother mold for easier demolding
- Increase silicone base thickness to prevent tearing
- Add fillets to interface for easier assembly
- Reduced coupling surface for easier assembly
- Use the highest quality PLA printer available in the lab
Simplified model with chamfers and fillets
Using the highest level setting, it took 5 hours to print the mold. It was the highest quality print I've ever made in this class.
Incredible surface finish
Demolding and casting was smooth-sailing thanks to all the mistakes and lessons learned in previous iterations. The only issue is that due to the improved print quality, the fit between the two parts became a bit loose. I would have to adjust the model for future versions.
Mother mold, silicone mold, and final cast assembly
I deeply enjoyed this project. It could even become a final project if I add a digital frequency analyzer and laser-cut graphic masks.
Reflections
Sequential Workflows Demand Pipelining
The mother mold → silicone mold → plastic cast workflow is inherently sequential, where any failure causes significant rework. However, by staggering multiple iterations in parallel, I could manage the long iteration cycles effectively and continuously integrate feedback into the next iterations. If I had worked in a strictly single-threaded manner, this project would have taken more than 60 hours.
Emotional Factors in Decision Making
During one 3D print that was near completion, I realized I should have added fillets to the interface geometry. But I couldn't bring myself to stop the job. It felt as if I was terminating a life. I had fallen victim to the sunk cost fallacy as well as anthropomorphizing objects.
Don't Trust Yourself
I mistakenly flipped the positive/negative relationship, even after being fully aware of Neil's warning from the lecture. This taught me that sometimes it's better to have others check your work than to trust your own brain, especially when you've been staring at the same design for hours.
Appendix
Steps to Reproduce FreeCAM CAM Toolpath Issue
- Download model.FCStd, open it in FreeCAD (v1.0.2)
- Switch to the CAM workbench
- Create a CAM Job for the
female-partsolid, with the following changes from the default- stock: Create Box
- tool: 1/8 inch Endmill (download toolbit.zip and add 1/8" endmill to job)
- Select
Model-female-part.Face1(the top facing surface of the outer-most gutter ring on the solid) and create 3D pocket toolpath, with the following changes from default- Operation/Pattern: Offset
- Min Travel: checked
- Use Rest Machining: checked
- Apply and visualize the toolpath
Expected: progressively deepening circular motion along the outer-most ring
Actual:
- Missing toolpaths on half of the ring
- Excessive vertical movements
- Unwanted toolpaths for inner rings
FreeCAD screenshot of the 3 issues