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]); }