Clover Seam Ripper Cap

Mary wanted a rigid cap for a Clover seam ripper that came with a small plastic sheath, so I called one from the vasty digital deep:

Clover Seam Ripper - new cap
Clover Seam Ripper – new cap

The solid model looks about like you’d expect, with a brim around the bottom to paste it on the platform:

Clover Seam Ripper Cap - Slic3r preview
Clover Seam Ripper Cap – Slic3r preview

I added a slightly tapered entry to work around the usual tolerance problems:

Clover Seam Ripper Cap - bottom view
Clover Seam Ripper Cap – bottom view

The taper comes from a hull wrapped around eight small spheres:

Clover Seam Ripper Cap - Entry Pyramid
Clover Seam Ripper Cap – Entry Pyramid

That’s surprisingly easy to accomplish, at least after you get used to this sort of thing:

hull() {																		// entry taper
	for (i=[-1,1] , j=[-1,1])
		translate([i*(HandleEntry[0]/2 - StemRadius),j*(HandleEntry[1]/2 - StemRadius),0])
			sphere(r=StemRadius,$fn=4*4);
	for (i=[-1,1] , j=[-1,1])
		translate([i*(HandleStem[0]/2 - StemRadius),j*(HandleStem[1]/2 - StemRadius),HandleEntry[2] - StemRadius])
			sphere(r=StemRadius,$fn=4*4);	
}

The side walls are two threads thick and, at least in PETG, entirely too rigid to slide on easily. I think a single-thread wall with a narrow ridge would provide more spring; if this one gets too annoying, I’ll try that.

The OpenSCAD source code as a GitHub gist:

// Clover seam ripper cap
// Ed Nisley KE4ZNU - April 2016
//- Extrusion parameters - must match reality!
// Build with a 5 mm brim to keep it glued to the platform
ThreadThick = 0.25;
ThreadWidth = 0.40;
Protrusion = 0.1;
//------
// Dimensions
StemRadius = 0.50; // corner radius
HandleStem = [6.1, 7.1, 9.0];
HandleEntry = HandleStem + [1.0,1.0,-4.0]; // Z is -(straight part of stem)
Cap = [8.5,11.0,45.0]; // XY exterior, Z interior
//----------------------
//- Build it
difference() {
union() {
translate([0,0,Cap[2]/2]) // main body column
cube(Cap,center=true);
translate([-Cap[0]/2,0,Cap[2]]) // rounded cap
rotate([0,90,0])
cylinder(d=Cap[1],h=Cap[0],$fn=8*4);
translate([Cap[0]/2 - Protrusion,0,(Cap[2] + Cap[1]/2)/2]) // text
rotate([0,90,0])
linear_extrude(height=ThreadWidth,convexity=10)
text("Mary Nisley",halign="center",valign="center",size=0.5*Cap[1],font="Arial");
}
hull() // stem + blade clearance
for (i=[-1,1] , j=[-1,1])
translate([i*(HandleStem[0]/2 - StemRadius),j*(HandleStem[1]/2 - StemRadius),-Protrusion])
cylinder(r=StemRadius,h=Cap[2] + Protrusion,$fn=4*4);
hull() { // entry taper
for (i=[-1,1] , j=[-1,1])
translate([i*(HandleEntry[0]/2 - StemRadius),j*(HandleEntry[1]/2 - StemRadius),0])
sphere(r=StemRadius,$fn=4*4);
for (i=[-1,1] , j=[-1,1])
translate([i*(HandleStem[0]/2 - StemRadius),j*(HandleStem[1]/2 - StemRadius),HandleEntry[2] - StemRadius])
sphere(r=StemRadius,$fn=4*4);
}
}