Week 10: Neil's Law

#molding #casting #3d printing

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 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 Stock measurement

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.

Simulate 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.

Poor modeling 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 issue 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 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 issue with FreeCAD 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.

Toolpath issue with Mods Excessive horizontal movement in Onshape model

Toolpath issue with Mods 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.

Table of contents 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.

v1 mold 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.

v1 cast Gathering materials for casting

v1 cast 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.

v1 cast Before mixing, clear separation between part A and B

v1 cast 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.

v1 cast Pouring in action

The curing process requires keeping the mold undisturbed for 6 hours.

v1 cast 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.

v1 cast 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:

  1. Resin coating: Kat warned that resin inhibits silicone curing
  2. Wax coating: Wax melts PLA, requiring a switch to PETG
  3. Acetone vapor smoothing: Only works for ABS, not PLA or PETG
  4. 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.

v2 print 3D printed PETG mold

I used a heat gun to melt wax pellets and brushed them onto the PETG mold.

Wax Wax pellets

Brushing 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 mold 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.

Wax result comparison 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:

Prusa Ironing 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:

Characterizing ironing and infill Setting up different processes in one job

Print result 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 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 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 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 mold Damaged silicone mold after demolding

Wall visualized in model 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 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 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.

Vacuum chamber 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.

Validating Design validated

To make the molds ready for assembly, I deburred the edges and sanded down rough surfaces.

Deburring 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.

Side without bubbles Smooth side without vacuum processing

Side with bubbles 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.

In context 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:

Final model 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.

Final mold 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.

Final assembly 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

  1. Download model.FCStd, open it in FreeCAD (v1.0.2)
  2. Switch to the CAM workbench
  3. Create a CAM Job for the female-part solid, 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)
  4. 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
  5. Apply and visualize the toolpath

Expected: progressively deepening circular motion along the outer-most ring

Actual:

  1. Missing toolpaths on half of the ring
  2. Excessive vertical movements
  3. Unwanted toolpaths for inner rings

Bug screenshot FreeCAD screenshot of the 3 issues