-
Pencil Guides for Ruler Quilting
Mary has been doing Ruler Quilting and wanted a pencil guide (similar to the machine’s ruler foot) to let her sketch layouts before committing stitches to fabric. The general idea is to offset the pencil by 1/4 inch from the edge of the ruler:

Ruler Adapter – solid model That was easy.
Print three to provide a bit of cooling time and let her pass ’em around at her next quilting bee:

Ruler Adapter – Slic3r preview Her favorite doodling pencil shoves a 0.9 mm lead through a 2 mm ferrule, so ream the center hole with a #44 drill (86 mil = 2.1 mm) to suit:

Ruler quilting pencil guides The outer perimeters have 64 facets, an unusually high number for my models, so they’re nice & smooth on the ruler. Even though I didn’t build them sequentially, they had zero perimeter zits and the OD came out 0.500 inch on the dot.
The chamfers guide the pencil point into the hole and provide a bit of relief for the pencil’s snout.
If I had a laser cutter, I could make special rulers for her, too …
The OpenSCAD source code as a GitHub Gist:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters// Quilting Ruler Adapters // Ed Nisley KE4ZNU October 2016 //- Extrusion parameters must match reality! ThreadThick = 0.25; ThreadWidth = 0.40; HoleWindage = 0.2; Protrusion = 0.1; // make holes end cleanly inch = 25.4; function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit); //———- // Dimensions ID = 0; OD = 1; LENGTH = 2; Offset = 0.25 * inch; Template = [2.0,2*Offset,3.0]; NumSides = 16*4; HoleSides = 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(d=(FixDia + HoleWindage),h=Height,$fn=Sides); } //———- // Build it difference() { cylinder(d=Template[OD],h=Template[LENGTH],$fn=NumSides); translate([0,0,-Template[LENGTH]]) PolyCyl(Template[ID],3*Template[LENGTH],HoleSides); translate([0,0,-Protrusion]) cylinder(d1=2*Template[ID],d2=Template[ID],h=Template[LENGTH]/3 + Protrusion,$fn=HoleSides); translate([0,0,Template[LENGTH] + Protrusion]) mirror([0,0,1]) cylinder(d1=2*Template[ID],d2=Template[ID],h=Template[LENGTH]/3 + Protrusion,$fn=HoleSides); }