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 = 150; // Internal width H = 280; // Internal height D = 240; // Internal depth S = 5; F = "IBM Plex Sans Condensed:style=Regular"; // Label translate([400, 0]) { text("Kormoran", S, F, halign="center"); translate([0, -S*1.5]) text("8Ω", S, F, halign="center"); translate([0, -S*3]) text("55W", S, F, halign="center"); } // Woofer mounting hole alignment translate([-400, 0]) { difference() { circle(d=146, $fn=100); for ( i = [0 : 45 : 360] ){ rotate(i) { translate([138/2,0]) circle(d=4, $fn=30); translate([146/2,0]) rotate(45) square(1,center=true); } } } } translate([200, 0]) { difference() { square([W-BD, D+100], center=true); // Alignment squares translate([50,0]) rotate(45) square(A, center=true); translate([-50,0]) rotate(45) square(A, center=true); translate([0,150]) rotate(45) square(A, center=true); translate([0,-150]) rotate(45) square(A, center=true); // Terminal translate([0, +312/2-82]) { difference() { offset(r=BD/2) square([93, 80], center=true); offset(r=BD/2) square([76, 56], center=true); } } // Bass reflex tube translate([0, -312/2+60]) { circle(d=69-0.5+BD, $fn=100); } } } // Front/back groove translate([-200, 0]) { difference() { square([W-BD, H-BD], center=true); translate([60,0]) rotate(45) square(A, center=true); translate([-60,0]) rotate(45) square(A, center=true); translate([0,120]) rotate(45) square(A, center=true); translate([0,-120]) rotate(45) square(A, center=true); difference() { circle(d=90, $fn=100); for ( i = [0 : 90 : 360] ){ rotate(i) { translate([82/2,0]) circle(d=4, $fn=30); translate([90/2,0]) rotate(45) square(1,center=true); } } } } } module alignment() { translate([95,0]) rotate(45) square(A, center=true); translate([-95,0]) rotate(45) square(A, center=true); } difference() { square([D-BD, H+100], center=true); // Horiz align translate([0,170]) rotate(45) square(A, center=true); translate([0,-170]) rotate(45) square(A, center=true); // Tweeter translate([0,15]) { alignment(); translate([-182/2+117, +312/2-82]) { translate([0,-60]) rotate(45) square(A, center=true); translate([0,60]) rotate(45) square(A, center=true); difference() { circle(d=90+BD, $fn=100); circle(d=65+BD, $fn=100); } } } // Woofer translate([0,-15]) { alignment(); translate([0, -312/2+110]) difference() { circle(d=146+BD, $fn=100); circle(d=119+BD, $fn=100); } } }