Quilting Pin Caps

Mary has been quilting up a storm lately and is growing dissatisfied with the special safety pins she’s been using to hold the layers together. Long straight pins are ideal, except that maneuvering a large quilt through her sewing machine resembles stuffing a porcupine into a keyhole. A commercial solution costs nearly half a buck per pin, which seems unreasonably spendy for something you need by the hundreds.

We kicked around some finger- and quilt-friendly dimensions and I cobbled up a solid model:

Quilting Pin Cap
Quilting Pin Cap

Which turned into an array of small octagons that won’t roll off the table:

Pin cap array on build platform
Pin cap array on build platform

We figured 25 would be enough to decide if this is workable and whether the dimensions fit fingers, pins, and quilts.

Filling them with silicone rubber required one squirt each:

Filling pin caps with silicone
Filling pin caps with silicone

The trick with the silicone rubber is to cut the snout so it fits flat on the cylinder top. Put the cylinders on a piece of non-stick paper (I used the back of the carrier for some double-sided tape, but wax paper would be better), hold one with tweezers, squirt in enough rubber to fill the cylinder solidly from bottom to top, then slide the snout sideways to smooth the surface.

Wait for a day, pop them off, and remove any drool:

Silicone-filled pin caps
Silicone-filled pin caps

It’s garden planting time right now, so it’ll take a while before I tweak the design and run off the next batch.

I don’t know how to compute an actual cost for each of those things. I regard the entire Thing-O-Matic as fully depreciated and pretty much a sunk cost, which means the expense boils down to the incremental cost of plastic and silicone. All the Quality Shop Time is, of course, free… and maybe even therapeutic.

The (trivially simple) OpenSCAD source code:

// Quilting pin caps
// Ed Nisley KE4ZNU April 2012

//- Extrusion parameters must match reality!
//  Print with +1 shells and 3 solid layers

ThreadThick = 0.25;
ThreadWidth = 2.0 * ThreadThick;

HoleWindage = 0.2;

function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);

Protrusion = 0.1;			// make holes end cleanly

// Dimensions

ID = 5.0;
OD = ID + 2*ThreadWidth;
Length = 5.0;
Sides = 8;

// Useful routines

module PolyCyl(Dia,Height,ForceSides=0) {			// based on nophead's polyholes

  Sides = (ForceSides != 0) ? ForceSides : (ceil(Dia) + 2);

  FixDia = Dia / cos(180/Sides);

  cylinder(r=(FixDia + HoleWindage)/2,

module ShowPegGrid(Space = 10.0,Size = 1.0) {

  Range = floor(50 / Space);

	for (x=[-Range:Range])
	  for (y=[-Range:Range])


// Build them!


  rotate(180/Sides) {
	difference() {
		PolyCyl(ID,(Length + 2*Protrusion),8);