speakers/amt-box.scad

88 lines
2.5 KiB
OpenSCAD

/**
* Laser cuttable template for building a shelf speaker with
* Dynavox AMT-1 and Wavecor WF145WA05
*/
B1 = 19.05; // Bushing outer diameter
B2 = 12.7;
M = 6.35; // Mill diameter
J = 100; // Mill pad
T = 21; // Material thickness
I = 320; // Internal dimension
A = 5; // Alignment pad size
P = 16; // Alignment pad placement
O = I + 2 * T; // Outer dimensions
BD = B1 - M; // Bushing offset
BD2 = B2 - M;
W = 200 - 40; // Internal width
H = 350 - 40; // Internal height/depth
echo("Internal volume", I*I*I/1000000, "L");
module sam300d_flush_mount() {
offset(r=BD) square([255, 188], center=true);
}
// Side panels
translate([250, 0]) {
difference() {
square([H - BD, H + 100], center=true);
// Bass reflex tube
translate([-H/2 + 100 , -350/2 + 80]) circle(d=69-0.4+BD, $fn=100);
translate([H/2 - 100 , -350/2 + 80]) circle(d=69-0.4+BD, $fn=100);
// Bracing tenon
translate([0, 350/2-200+6]) offset(r=BD/2) square([80+M,M], center=true);
// Alignment squares
translate([H/2-P,0]) rotate(45) square(A, center=true);
translate([-H/2+P,0]) rotate(45) square(A, center=true);
translate([0,H/2-P]) rotate(45) square(A, center=true);
translate([0,-H/2+P]) rotate(45) square(A, center=true);
}
}
// Back face + bottom/top cutout
translate([-170, 0])
difference() {
square([W - BD, H + 100], center=true);
difference() {
offset(r=BD/2) square([93, 80], center=true);
offset(r=BD/2) square([76, 56], center=true);
}
translate([0,H/2]) rotate(45) square(A, center=true);
translate([0,-H/2]) 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);
}
// Front mounting holes
difference() {
square([W-BD2, H-BD2], 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);
// Tweeter
translate([0, 350/2-80]) {
circle(d=65 + BD2, $fn=100);
translate([-56/2,-56/2]) circle(d=4, $fn=30);
translate([56/2,-56/2]) circle(d=4, $fn=30);
translate([-56/2,56/2]) circle(d=4, $fn=30);
translate([56/2,56/2]) circle(d=4, $fn=30);
}
// Woofer
translate([0, 350/2-200]) {
circle(d=118 + BD2, $fn=100);
for ( i = [45 : 90 : 360] ){
rotate(i) translate([138/2,0]) circle(d=4, $fn=30);
}
}
}