Skip to content

Instantly share code, notes, and snippets.

@ednisley
Created January 14, 2018 14:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ednisley/efa4c4d3878358b93bd9dc991f5b115f to your computer and use it in GitHub Desktop.
Save ednisley/efa4c4d3878358b93bd9dc991f5b115f to your computer and use it in GitHub Desktop.
OpenSCAD source code: Measuring spoon drainer for dish drying rack
// Measuring spoon drainer
// Ed Nisley KE4ZNU - 2018-01-13
/* [Extrusion] */
ThreadThick = 0.25; // [0.20, 0.25]
ThreadWidth = 0.40; // [0.40]
/* [Hidden] */
Protrusion = 0.1; // [0.01, 0.1]
HoleWindage = 0.2;
function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
ID = 0;
OD = 1;
LENGTH = 2;
//- Adjust hole diameter to make the size come out right
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,h=Height,$fn=Sides);
}
/* [Spoon] */
SpoonOD = IntegerMultiple(3.3,2);
SpoonWidth = IntegerMultiple(16.5,2.0);
SpoonOC = 30.0;
/* [Drainer] */
Drainer = [52.0,59.5,100.0]; // overall drainer cup
DrainerRimWidth = (Drainer[1] - Drainer[0])/2;
DrainerRimHeight = 2.5;
DrainerExtent = 15.0;
/* [Hidden] */
WallThick = 2.0; // basic wall & floor thickness
PlateThick = WallThick + 2*DrainerRimHeight;
NumSides = 8*4;
//-----
// Define shapes
module CoverPlate() {
OD = Drainer[OD] + 2*WallThick;
difference() {
cylinder(d=OD,h=PlateThick,$fn=NumSides);
for (j=[-1,1])
translate([-(OD/2 - Protrusion),j*(Drainer[ID]/2 + DrainerRimWidth/2),WallThick + DrainerRimHeight + Protrusion/2])
cube([OD,DrainerRimWidth,2*DrainerRimHeight + Protrusion],center=true);
translate([0,0,WallThick + PlateThick/2])
rotate(-90)
rotate_extrude(angle=180,$fn=NumSides)
translate([Drainer[ID]/2 + DrainerRimWidth/2,0])
square([DrainerRimWidth,PlateThick],center=true);
translate([-(OD/2 + DrainerExtent),0,PlateThick/2])
cube([OD,OD,PlateThick + 2*Protrusion],center=true);
}
}
//-----
// Build it
difference() {
CoverPlate();
for (j=[-1,1])
translate([0,j*(SpoonOC/2),-Protrusion])
linear_extrude(height=PlateThick + 2*Protrusion)
hull()
for (i=[-1,1])
translate([i*(SpoonWidth - SpoonOD)/2,0])
circle(d=SpoonOD,$fn=8);
}
@ednisley
Copy link
Author

More details on my blog at https://wp.me/poZKh-7iD

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment