diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f220542 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.dxf +*.stl diff --git a/oranje.scad b/oranje.scad new file mode 100644 index 0000000..199eb11 --- /dev/null +++ b/oranje.scad @@ -0,0 +1,154 @@ +B = 19.05; +M = 6.35; + +A = 5; // Alignment pad size + +BD = B - M; + +WF152_HEIGHT = 136.5; +WF152_DIAMETER = 152; +AMT2I_WIDTH = 91; +AMT2I_HEIGHT = 72; + +WOOFER_OFFSET = 300-183+1; +PORT_OFFSET = 300-60; + +// Side panel and tweeter alignment +difference() { + square([162-BD, 600], center=true); + + // Tweeter cutout + difference() { + offset(r=BD/2) square([AMT2I_HEIGHT, AMT2I_WIDTH], center=true); + offset(r=BD/2) square([65, 65], center=true); + } + + // Vertical tweeter alignment squares + translate([100, 0]) rotate(45) square(A,center=true); + translate([-100, 0]) rotate(45) square(A,center=true); + + // Edge alignment + translate([0, -290]) rotate(45) square(A,center=true); + translate([0, 290]) rotate(45) square(A,center=true); + + // Woofer alignment + translate([0, -290]) rotate(45) square(A,center=true); + translate([0, 290]) rotate(45) square(A,center=true); + + translate([0, WOOFER_OFFSET]) { + difference() { + offset(r=BD/2) square([AMT2I_HEIGHT, AMT2I_WIDTH], center=true); + square([65, 65], center=true); + } + + // woofer alignment + translate([60, 0]) rotate(45) square(A,center=true); + translate([-60, 0]) rotate(45) square(A,center=true); + } + + // woofer #2 alignemnt + translate([0, -WOOFER_OFFSET]) { + difference() { + offset(r=BD/2) circle(d=69); + circle(d=69); + } + + // woofer alignment + translate([60, 0]) rotate(45) square(A,center=true); + translate([-60, 0]) rotate(45) square(A,center=true); + } + + // Center alignment + translate([60, 0]) rotate(45) square(A,center=true); + translate([-60, 0]) rotate(45) square(A,center=true); + + // Bass reflex port + translate([0, PORT_OFFSET]) offset(r=BD/2) circle(d=69); + translate([0, -PORT_OFFSET]) offset(r=BD/2) circle(d=69); +} + +// WF152BD11 flush mount +module wf152() { + intersection() { + circle(d=WF152_DIAMETER , $fn=100); + square([WF152_DIAMETER ,WF152_HEIGHT], center=true); + } +} + +module j() { + difference() { + offset(r=BD/2) wf152(); + offset(r=BD/2) circle(d=126, $fn=100); + } + + + // Center alignment hole + rotate(45) square(3, center=true); + + // Alignment holes + translate([0, -90]) rotate(45) square(A,center=true); + translate([0, 90]) rotate(45) square(A,center=true); + translate([90, 0]) rotate(45) square(A,center=true); + translate([-90, 0]) rotate(45) square(A,center=true); +} + +translate([255,0]) +difference() { + square([300-19-19-BD, 600-19-19-BD], center=true); + + translate([90, 0]) rotate(45) square(A,center=true); + translate([-90, 0]) rotate(45) square(A,center=true); + translate([0, -260]) rotate(45) square(A,center=true); + translate([0, 260]) rotate(45) square(A,center=true); + + translate([0, WOOFER_OFFSET]) j(); + + translate([0, -WOOFER_OFFSET]) { + + // Alignment holes + translate([0, -90]) rotate(45) square(A,center=true); + translate([0, 90]) rotate(45) square(A,center=true); + translate([90, 0]) rotate(45) square(A,center=true); + translate([-90, 0]) rotate(45) square(A,center=true); + + difference() { + offset(r=BD/2) wf152(); + + difference() { + wf152(); + // Driver screw holes + for ( i = [45 : 90 : 360] ){ + rotate(i) translate([140/2,0]) circle(d=4, $fn=50); + } + } + } + } +} + +// Back terminal cutout & back-front cutout groove +translate([-250,0]) +difference() { + square([162-BD, 600-19-19-BD], center=true); + + // Terminal cutout + difference() { + offset(r=BD/2) square([80, 93], center=true); + offset(r=BD/2) square([56, 76], center=true); + } + + // Alignment + translate([0, -520/2]) rotate(45) square(A,center=true); + translate([0, 520/2]) rotate(45) square(A,center=true); + translate([-60,0]) rotate(45) square(A,center=true); + translate([60,0]) rotate(45) square(A,center=true); + + translate([0, 130]) { + difference() { + offset(r=M/2, $fn=50) square([AMT2I_HEIGHT-M, AMT2I_WIDTH-M], center=true); + translate([-AMT2I_HEIGHT/2+5, -AMT2I_WIDTH/2+5]) circle(d=4, $fn=50); + translate([-AMT2I_HEIGHT/2+5, AMT2I_WIDTH/2-5]) circle(d=4, $fn=50); + translate([AMT2I_HEIGHT/2-5, -AMT2I_WIDTH/2+5]) circle(d=4, $fn=50); + translate([AMT2I_HEIGHT/2-5, AMT2I_WIDTH/2-5]) circle(d=4, $fn=50); + } + } +}