I just upgraded my cutting boards and didn’t want them to get damaged by sitting in water. So my latest 3D printing project is a behind-the-faucet cutting board holder that will keep my boards out of water, while letting them dry off. So far it’s working great.
Below is the OpenSCAD code that I wrote:
$fn = 60;
x = 0; y = 1; z = 2;
rack = [110, 82, 50]; // the width, depth, height of rack
faucet = 50; // the diameter of the faucet
faucetH = 15; // the height of the loop around the faucet
thick = 5; // the wall thickness
spacer = 2; // the distance between the faucet and rack
smallerX = rack[x]-2*thick;
smallerZ = rack[z]-2*thick;
// bottom frame
difference() {
cube([rack[x], rack[y], 2*thick]);
translate([thick, thick, -thick])
cube([rack[x]-2*thick, rack[y]-2*thick, 4*thick]);
}
difference() {
union() {
// front arch
difference() {
translate([rack[x]/2, thick, 0])
scale([rack[x]/(rack[z]*2), 1, 1])
rotate([90, 0, 0])
cylinder(h=thick, r=rack[z]);
translate([rack[x]/2, 1.5*thick, 0])
scale([smallerX/(smallerZ*2), 1, 1])
rotate([90, 0, 0])
cylinder(h=2*thick, r=smallerZ);
}
// back arch
difference() {
translate([rack[x]/2, rack[y], 0])
scale([rack[x]/(rack[z]*2), 1, 1])
rotate([90, 0, 0])
cylinder(h=thick, r=rack[z]);
translate([rack[x]/2, rack[y]+.75*thick, 0])
scale([smallerX/(smallerZ*2), 1, 1])
rotate([90, 0, 0])
cylinder(h=2*thick, r=smallerZ);
}
}
translate([0, 0, -rack[z]])
cube([2*rack[x], 2*rack[y], 2*rack[z]], center=true);
}
// faucet loop
translate([0, -spacer, 0])
difference() {
// faucet cylinder
translate([rack[x]/2, -(faucet/2)-thick, faucetH/2])
difference() {
cylinder(h=faucetH, d=faucet+2*thick, center=true);
cylinder(h=2*faucetH, d=faucet, center=true);
}
// faucet space
translate([rack[x]/2-(.8*faucet)/2, -1.5*faucet, -faucetH])
cube([.8*faucet, faucet, 3*faucetH]);
}

