Seam Ripper Cover

The cover for Mary’s favorite seam ripper cracked long ago, has been repaired several times, and now needs a replacement:

Seam Ripper cover - overview
Seam Ripper cover – overview

The first pass (at the top) matched the interior and exterior shapes, but was entirely too rigid. Unlike the Clover seam ripper, the handle has too much taper for a thick-walled piece of plastic.

The flexy thinwall cover on the ripper comes from a model of the interior shape:

Seam Ripper Cover - handle model
Seam Ripper Cover – handle model

It’s not conspicuously tapered, but OpenSCAD’s perspective view makes the taper hard to see. The wedge on top helps the slicer bridge the opening; it’s not perfect, just close enough to work.

A similar model of the outer surface is one thread width wider on all sides, so subtracting the handle model from the interior produces a single-thread shell with a wedge-shaped interior invisible in this Slic3r preview:

Seam Ripper Cover - exterior - Slic3r preview
Seam Ripper Cover – exterior – Slic3r preview

The brim around the bottom improves platform griptivity. The rounded top (because pretty) precludes building it upside-down, but if you could tolerate a square-ish top, that’s the way to go.

Both models consist of hulls around eight strategically placed spheres, with the wedge on the top of the handle due to the intersection of the hull and a suitable cube. This view shows the situation without the hull:

Seam Ripper Cover - handle model - cube intersection
Seam Ripper Cover – handle model – cube intersection

The spheres overlap, with the top set barely distinguishable, to produce the proper taper. I measured the handle and cover’s wall thicknesses, then guesstimated the cover’s interior dimensions from its outer size.

The handle’s spheres have a radius matching its curvature. The cover’s spheres have a radius exactly one thread width larger, so the difference produces the one-thread-wide shell.

Came out pretty nicely, if I do say so myself: the cover seats fully with an easy push-on fit and stays firmly in place. Best of all, should it get lost (despite the retina-burn orange PETG plastic), I can make another with nearly zero effort.

The Basement Laboratory remains winter-cool, so I taped a paper shield over the platform as insulation from the fan cooling the PETG:

Seam Ripper Cover - platform insulation
Seam Ripper Cover – platform insulation

The shield goes on after the nozzle finishes the first layer. The masking tape adhesive turned into loathesome goo and required acetone to get it off the platform; fortunately, the borosilicate glass didn’t mind.

The OpenSCAD source code as a GitHub Gist:

// Cover for old seam ripper
// Ed Nisley - KE4ZNU
// 2019-03
/* [Layout Options] */
Layout = "Build"; // [Show,Build]
Part = "Handle"; // [Handle,CoverSolid,Cover]
/* [Extrusion Parameters] */
ThreadWidth = 0.40;
ThreadThick = 0.25;
HoleWindage = 0.2;
Protrusion = 0.1;
// Dimensions
/* [Dimensions] */
WallThick = 1*ThreadWidth;
CapInsideLength = 48.0;
CornerRadius = 2.0; // handle at base
Base = [11.0,5.5,0.0]; // handle at base
Tip = [8.2,3.7,CapInsideLength]; // inferred at tip
HandleOC = [Base - 2*[CornerRadius,CornerRadius,0.0],
Tip - 2*[CornerRadius,CornerRadius,CornerRadius/2]
NumSides = 2*3*4;
// Useful pieces
// Handle is basically the interior of the cover
module Handle() {
intersection() {
for (i=[-1,1], j=[-1,1], k=[0,1])
translate([0,0,-CornerRadius/2]) // chop tip for better bridging
module CoverSolid() {
for (i=[-1,1], j=[-1,1], k=[0,1])
sphere(r=CornerRadius + WallThick,$fn=NumSides);
module Cover() {
difference() {
cube(2*Base + [0,0,2*CornerRadius],center=true);
// Build things
if (Layout == "Build") {
if (Layout == "Show")
if (Part == "Handle")
else if (Part == "CoverSolid")
else if (Part == "Cover")