include <../lib/rounded-cube.scad> $fn=256; d=40; l=140; module version1() { union() { difference() { union() { rotate([0, 10, 0]) cube([d, l, 50]); translate([1.5*d, 0, 0]) mirror([1, 0, 0]) rotate([0, 10, 0]) cube([d, l, 50]); } translate([0.75*d, l+1, 0.5*d+12]) rotate([90, 0, 0]) cylinder(d=d, h=l+2); translate([-d, -1, 20]) cube([3*d, l + 2, 40]); translate([-d, -1, -10]) cube([3*d, l + 2, 10]); color("red") translate([-1, l*0.5+4, -124]) rotate([0, 90, 0]) cylinder(d=270, h=1.5*d+2); } translate([0, 0, 0.01]) difference() { rotate([-20, 0, 0]) difference() { union() { rotate([0, 10, 0]) translate([0, 0, -15-0.01]) cube([1.4*d, 12, 30]); translate([1.5*d, 0, 0]) mirror([1, 0, 0]) rotate([0, 10, 0]) translate([0, 0, -15-0.01]) cube([1.4*d, 12, 30]); } } translate([-10, -10, -45]) cube([1.5*d + 20, 30, 35]); translate([-d, -10, 0]) cube([3.5*d, 40, 20]); translate([-10, -10, -20]) cube([1.5*d + 20, 10, 40]); } } } module version2() { difference() { translate([0, 0, -10]) cube([1.5*d, l, 50]); // mic handle cut-out translate([0.75*d, l+1, 0.5*d+12]) rotate([90, 0, 0]) cylinder(d=d, h=l+2); // top cut translate([-10, -1, 0.5*d]) cube([1.5*d + 20, l+2, 50]); // bottom notch cut translate([0, 12, 0]) rotate([-20, 0, 0]) translate([-1, 0, -20]) cube([1.5*d+2, 20, 20]); // button flush cut translate([-1, 12, -20]) cube([1.5*d+2, l, 20]); // MODX-8 button clearance union() { translate([0, 24, 0]) rotate([-20, 0, 0]) translate([-1, 0, -12]) cube([1.5*d+2, 20, 20.5]); translate([-1, 26.90, -12]) cube([1.5*d+2, l-50, 20]); translate([0, l-20, 0]) mirror([0, 1, 0]) rotate([-20, 0, 0]) translate([-1, 0, -12]) cube([1.5*d+2, 20, 20.5]); } // side-cuts translate([-8, 0, 0]) rotate([0, 10, 0]) translate([0, -1, -20]) cube([10, l+2, 50]); color("red") translate([1.5*d, 0, 0]) mirror([1, 0, 0]) translate([-8, 0, 0])rotate([0, 10, 0]) translate([0, -1, -20]) cube([10, l+2, 50]); } } //translate([2*d, 0, 0]) version1(); version2();