B = 19.05; M = 6.35; A = 5; // Alignment pad size BD = B - M; W = 250-20-20; // Internal width H = 450-20-20; // Internal height D = 275-20; // Internal depth WF182_HEIGHT = 165.5; AMT1I_WIDTH = 100; AMT1I_HEIGHT = 130; module wf182() { intersection() { circle(d=182, $fn=100); square([182,WF182_HEIGHT], center=true); } } module amt1i() { offset(r=BD/2) square([AMT1I_WIDTH, AMT1I_HEIGHT], center=true); } R = 152.5; // WF182_HEIGHT/2 + 4 + AMT1I_HEIGHT/2; module alignment() { for (i=[25+AMT1I_HEIGHT/2, 0, -R, R]) { translate([110, i]) rotate(45) square(A,center=true); translate([0, i]) rotate(45) square(A,center=true); translate([-110, i]) rotate(45) square(A,center=true); } } // Side panel and tweeter alignment difference() { square([275-19-BD, 450+100], center=true); // Tweeter cutout translate([0, 450/2-25-130/2]) { offset(r=BD/2) square([AMT1I_WIDTH, AMT1I_HEIGHT], center=true); translate([100, 0]) rotate(45) square(A,center=true); translate([-100, 0]) rotate(45) square(A,center=true); } // Tweeter flush mount translate([0,-450/2+25+130/2]) { offset(r=BD/2) square([AMT1I_WIDTH-20, AMT1I_HEIGHT-10], center=true); translate([100, 0]) rotate(45) square(A,center=true); translate([-100, 0]) rotate(45) square(A,center=true); } translate([0, -450/2]) rotate(45) square(A,center=true); translate([0, 450/2]) rotate(45) square(A,center=true); translate([100, 0]) rotate(45) square(A,center=true); translate([-100, 0]) rotate(45) square(A,center=true); rotate(45) square(A,center=true); } // Front face flush mount and back tube cutout translate([255,0]) difference() { square([250, 450], center=true); translate([0, -450/2+207.5]) { difference() { offset(r=BD/2) wf182(); wf182(); } rotate(45) square(3,center=true); translate([220/2, 0]) rotate(45) square(A,center=true); translate([-220/2, 0]) rotate(45) square(A,center=true); for ( i = [0 : 60 : 360] ){ rotate(i) translate([169.5/2,0]) circle(d=4, $fn=50); } for ( i = [0,45,135,180,225] ){ rotate(i) translate([182/2,0]) rotate(45) square(3,center=true); } translate([0,165.5/2]) rotate(45) square(3,center=true); translate([0,-165.5/2]) rotate(45) square(3,center=true); } translate([0, -420/2]) rotate(45) square(A,center=true); translate([0, 420/2]) rotate(45) square(A,center=true); translate([220/2, 0]) rotate(45) square(A,center=true); translate([-220/2, 0]) rotate(45) square(A,center=true); } // Front woofer cutout & groove translate([-255,0]) difference() { square([250-20-20-BD, 450-20-20-BD], center=true); // Woofer cutout translate([0, -450/2+207.5]) { circle(d=152+BD); for ( i = [0 : 90 : 360] ){ rotate(i) translate([90,0]) rotate(45) square(A,center=true); } } translate([0, -180]) rotate(45) square(A,center=true); translate([0, 180]) rotate(45) square(A,center=true); translate([-90,0]) rotate(45) square(A,center=true); translate([90,0]) rotate(45) square(A,center=true); } // Back reflex tube and terminal cutout & groove translate([-500,0]) difference() { square([250-20-20-BD, 450-20-20-BD], center=true); // Terminal cutout translate([0, 450/2-(450-207.5)/ 2]) offset(r=BD/2) square([93 - BD, 80 - BD], center=true); // Bass reflex tube translate([0, -450/2+80]) { circle(d=97, $fn=100); } // Alignment translate([0, -180]) rotate(45) square(A,center=true); translate([0, 180]) rotate(45) square(A,center=true); translate([-90,0]) rotate(45) square(A,center=true); translate([90,0]) rotate(45) square(A,center=true); }