/** * Laser cuttable template for building a shelf speaker with * Visaton B100 */ B = 19.05; // Bushing outer diameter M = 6.35; // Mill diameter J = 100; // Mill pad A = 5; // Alignment pad size P = 17; // Alignment pad placement BD = B - M; // Bushing offset W = 160 - 40; // Internal width H = 320 - 40; // Internal height D = 200; // Internal depth S = 5; F = "IBM Plex Sans Condensed:style=Regular"; translate([-400, 0]) { text("Visaton B100", S, F, halign="center"); translate([0, -S*1.5]) text("6Ω", S, F, halign="center"); translate([0, -S*3]) text("30W", S, F, halign="center"); } // Driver mounting hole alignment translate([-200, 0]) { difference() { circle(d=122, $fn=100); for ( i = [0 : 45 : 360] ){ rotate(i) { translate([111/2,0]) circle(d=4, $fn=30); translate([122/2,0]) rotate(45) square(2, center=true); } } } } // Side panels & mounting holes translate([D, 0]) { difference() { square([D - BD, H + J], center=true); // Driver flush mount, mounting hole alignment translate([0, 320/2 - 80]) { difference() { circle(d=122 + BD, $fn=100); circle(d=95 + BD, $fn=100); } for ( i = [0 : 45 : 360] ){ rotate(i) { translate([111/2,0]) circle(d=4, $fn=30); translate([122/2,0]) rotate(45) square(2, center=true); } } // Alignment squares translate([D/2-P,0]) rotate(45) square(A, center=true); translate([-D/2+P,0]) rotate(45) square(A, center=true); } translate([0, -320/2 + 60]) circle(d=34 + BD, $fn=100); // Alignment squares translate([D/2-P,0]) rotate(45) square(A, center=true); translate([-D/2+P,0]) rotate(45) square(A, center=true); translate([0,H/2+50-P]) rotate(45) square(A, center=true); translate([0,-H/2-50+P]) rotate(45) square(A, center=true); } } // Front/back groove difference() { square([W - BD, H - BD], center=true); // Alignment squares translate([0,H/2-P]) rotate(45) square(A, center=true); translate([0,-H/2+P]) rotate(45) square(A, center=true); translate([-W/2+P,0]) rotate(45) square(A, center=true); translate([W/2-P,0]) rotate(45) square(A, center=true); }