For reasons not relevant here, I made replacement pegs for the Shuttles board game:

Not the most challenging solid model I’ve ever conjured from the vasty digital deep, but 3D printing is really good for stuff like this.
The OEM pegs have a hollow center, most likely to simplify stripping them from the injection mold, which I dutifully duplicated:

It turns out the additional perimeter length inside the pegs requires 50% more printing time, far offsetting the reduced 10% infill. Given that each solid set takes just under an hour, I decided to lose half an hour of verisimilitude.
I plunked a nice round cap atop the OEM peg’s flat end, but stopped short of printing & installing a round plug for the butt end.
While the 3D printer’s hot, ya may as well make a bunch:

Game on …
The OpenSCAD source code as a GitHub Gist:
Update: They’re a bit too large, so the Gist now produces tapered pegs.
// Shuttles game pegs | |
// Ed Nisley KE4ZNU - July 2020 | |
/* [Layout Options] */ | |
Layout = "Peg"; // [Build, Peg] | |
Hollow = false; | |
//------- | |
//- Extrusion parameters must match reality! | |
/* [Hidden] */ | |
ThreadThick = 0.25; | |
ThreadWidth = 0.40; | |
HoleWindage = 0.2; | |
Protrusion = 0.1; // make holes end cleanly | |
ID = 0; | |
OD = 1; | |
LENGTH = 2; | |
//------- | |
// Dimensions | |
/* [Dimensions] */ | |
Peg = [4.0,7.5,26.0]; // overall length, including the rounded Cap | |
Taper = 1.0; | |
CapRadius = Peg[OD]/2; | |
PegBaseLength = Peg[LENGTH] - CapRadius; | |
NumPegs = [1,6]; // lay out in array | |
ArrayCenter = [NumPegs[0] - 1,NumPegs[1] - 1] / 2; | |
NumSides = 6*4; | |
//------- | |
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/2 + HoleWindage,h=Height,$fn=Sides); | |
} | |
//------- | |
// One peg | |
module Peg() { | |
union() { | |
translate([0,0,PegBaseLength]) | |
difference() { | |
sphere(d=Peg[OD],$fn=NumSides); | |
translate([0,0,-Peg[OD]/2]) | |
cube([2*Peg[OD],2*Peg[OD],Peg[OD]],center=true); | |
} | |
difference() { | |
cylinder(d1=Peg[OD] - Taper,d2=Peg[OD],h=PegBaseLength,$fn=NumSides); | |
if (Hollow) | |
translate([0,0,-Protrusion]) | |
PolyCyl(Peg[ID],PegBaseLength+Protrusion,NumSides); | |
} | |
} | |
} | |
//------- | |
// Build it! | |
if (Layout == "Peg") | |
Peg(); | |
if (Layout == "Build") | |
for (i=[0:NumPegs[0] - 1], j=[0:NumPegs[1] - 1]) | |
translate([(i - ArrayCenter.x)*1.5*Peg[OD],(j - ArrayCenter.y)*1.5*Peg[OD],0]) | |
Peg(); |
2 thoughts on “Shuttles Board Game: Replacement Pegs”
Comments are closed.