include module unicorn() { s = [65, 30, 2.7]; r = 3; e = 0.1; module plate() { hull() { translate([r, r, 0]) cylinder(s[2], r, r); translate([s[0]-r, r, 0]) cylinder(s[2], r, r); translate([s[0]-r, s[1]-r, 0]) cylinder(s[2], r, r); translate([r, s[1]-r, 0]) cylinder(s[2], r, r); } } module holes() { $fn = 20; m = 2.5; r = 3.5; translate([r, r, -e]) cylinder(s[2]+2*e, m/2, m/2); translate([s[0]-r, r, -e]) cylinder(s[2]+2*e, m/2, m/2); translate([s[0]-r, s[1]-r, -e]) cylinder(s[2]+2*e, m/2, m/2); translate([r, s[1]-r, -e]) cylinder(s[2]+2*e, m/2, m/2); } difference() { plate(); holes(); } } module plate(s, r) { hull() { translate([r, r, 0]) cylinder(s[2], r, r); translate([s[0]-r, r, 0]) cylinder(s[2], r, r); translate([s[0]-r, s[1]-r, 0]) cylinder(s[2], r, r); translate([r, s[1]-r, 0]) cylinder(s[2], r, r); } } e = 0.1; w = 3; r = 3; spi = [65+1, 30+1, 20]; sbox = [65+w*2, 30+w*2, 10+w]; module bottom_box() { difference() { plate(sbox, r); translate( [ (sbox[0]-spi[0])/2, (sbox[1]-spi[1])/2, w]) plate(spi, r); } } module bottom() { union() { bottom_box(); translate([0, -w, 0]) cube([sbox[0], w*2, sbox[2]]); rotate([0, 90, 0]) cylinder(sbox[0], w ,w); } } module pitext() { translate([sbox[0]/2, sbox[1]/2, -e]) linear_extrude(w*2) mirror() text("picorn", font="Allerta Stencil", size=15, halign="center", valign="center"); } module box() { difference() { bottom(); pitext(); } } $fn = 20; difference() { box(); rotate([-90+5, 0, 0]) translate([-100, -100, -200]) cube([200, 200, 200]); }