Miniblind Cord Caps

After smashing one of the cord pulls between the sash and the frame:

Miniblind cord caps - installed
Miniblind cord caps – installed

The glittery PETG looks surprisingly good in the sunlight that will eventually change it into dullness. The black flecks come from optical effects in the plastic, not the usual burned PETG snot.

The solid model is basically a hull around two “spheres”, truncated on top & bottom:

Miniblind cord cap - solid model
Miniblind cord cap – solid model

The interior has a taper to accommodate the knot, but they’re chunky little gadgets:

Miniblind cord cap - solid model - bottom
Miniblind cord cap – solid model – bottom

I thought the facets came out nicely, even if they’re mostly invisible in the picture.

Each pull should build separately to improve the surface finish, so I arranged five copies in sequence from front to back:

Miniblind cord cap - 5 sequential - Slic3r preview
Miniblind cord cap – 5 sequential – Slic3r preview

If you’re using an M2, the fans hanging off the front of the filament drive housing might come a bit too close for comfort, so rotate ’em upward and out of the way.

If you remove the interior features and flip ’em upside down, they’d work well in Spiral Vase mode. You’d have to manually drill the top hole, though, because a hole through the model produces two shells.

The OpenSCAD source code as a GitHub Gist:

// Cap for miniblind cord
// Ed Nisley KE4ZNU - August 2016
//- Extrusion parameters - must match reality!
ThreadThick = 0.25;
ThreadWidth = 0.40;
Protrusion = 0.1;
HoleWindage = 0.2;
//------
// Dimensions
OD1 = 0;
OD2 = 1;
LENGTH = 2;
Cap = [9.0,16.0,25.0];
Cord = [2.5,7.0,Cap[LENGTH] - 5];
NumSides = 8;
//----------------------
//- Build it
difference() {
hull() { // overall shape
translate([0,0,Cap[LENGTH] - Cap[OD1]/2])
sphere(d=Cap[OD1],$fn=NumSides);
translate([0,0,0.5*Cap[OD2]/2])
sphere(d=Cap[OD2],$fn=2*NumSides); // round the bottom just a bit
}
translate([0,0,-Cap[LENGTH]/2]) // trim bottom
cube([2*Cap[OD2],2*Cap[OD2],Cap[LENGTH]],center=true);
translate([0,0,Cap[LENGTH] + 0.8*Cap[OD1]]) // trim top (arbitrarily)
cube([2*Cap[OD1],2*Cap[OD1],2*Cap[OD1]],center=true);
translate([0,0,-Protrusion])
cylinder(d=Cord[OD1],h=(Cap[LENGTH] + 2*Protrusion),$fn=NumSides);
translate([0,0,-Protrusion])
cylinder(d1=Cord[OD2],d2=Cord[OD1],h=(Cord[LENGTH] + Protrusion),$fn=NumSides);
}