round_quality = 100; // Main Screen Design translate([0,0,-6]) { pi_screen(); pi_screen_cover(); } translate([34,0,0]) gimbal(); translate([236,0,0]) gimbal(); // Tops Left Buttons left_buttons(); right_buttons(); // Joining - Holders // main_backbone(); /**** MODULES ****/ module left_buttons() { translate([-101,42.5,-6]) { difference() { cube([70,15,2], center=true); translate([-33,5,0]) rotate([0,0,45]) cube([45,15,3], center=true); } translate([-26.52,-.5,-19]) rotate([0,0,45]) cube([22,2,40], center=true); translate([7.5,7,-19]) rotate([0,0,0]) cube([54,2,40], center=true); translate([34,0,-19]) rotate([0,0,90]) cube([16,2,40], center=true); } } module right_buttons() { translate([101,42.5,-6]) { difference() { cube([70,15,2], center=true); translate([43.5,5,0]) rotate([0,0,45]) cube([30,45,3], center=true); } translate([26.5,-.5,-19]) rotate([0,0,-45]) cube([22,2,40], center=true); translate([-7.5,7,-19]) rotate([0,0,0]) cube([54,2,40], center=true); translate([-34,0,-19]) rotate([0,0,90]) cube([16,2,40], center=true); } } module gimbal() { translate([-90,25,0]) { /** translate([-45,-25,-30]) cylinder($fn=round_quality, h=50, d=90, center=true); **/ translate([-45,-25,-25]) { difference() { cube([70,70,40], center=true); // The center hole translate([0,0,-2]) cube([66,66,40], center=true); // The Gimbal hole translate([0,0,0]) cylinder($fn=round_quality, h=60, d=50, center=true); } } translate([2,0,-26]) gimbal_ring(); } } module main_backbone() { translate([0,0,-34]) cube([250,20,10], center=true); } module pi_screen_cover() { translate([0,0,-30]) { difference() { cube([132,100,2], center=true); translate([0,-50,0]) cube([100,10,3], center=true); translate([0,50,0]) cube([100,10,3], center=true); translate([-50,52,0]) rotate([0,0,45]) cube([10,10,3], center=true); translate([-50,-52,0]) rotate([0,0,45]) cube([10,10,3], center=true); translate([50,-52,0]) rotate([0,0,45]) cube([10,10,3], center=true); translate([50,52,0]) rotate([0,0,45]) cube([10,10,3], center=true); } } } // 121mm x 76mm (hole) module pi_screen() { difference() { translate([0,0,0]) { cube([130,96,2], center=true); // Holders translate([-60,43,-2]) cube([10,10,2], center=true); translate([60,43,-2]) cube([10,10,2], center=true); translate([-60,-43,-2]) cube([10,10,2], center=true); translate([60,-43,-2]) cube([10,10,2], center=true); } translate([0,0,0]) cube([121,76,3], center=true); // Top and Bottom Cut translate([0,53,0]) cube([100,20,3], center=true); translate([0,-53,0]) cube([100,20,3], center=true); // 45 degree cut translate([-50,50,0]) rotate([0,0,45]) cube([10,10,3], center=true); translate([50,50,0]) rotate([0,0,45]) cube([10,10,3], center=true); translate([-50,-50,0]) rotate([0,0,45]) cube([10,10,3], center=true); translate([50,-50,0]) rotate([0,0,45]) cube([10,10,3], center=true); } // Sides translate([-65,0,-14]) rotate([90,0,90]) cube([96,30,2], center=true); translate([65,0,-14]) rotate([90,0,90]) difference() { cube([96,30,2], center=true); // USB Hole translate([10,0,0]) cube([50,16,3], center=true); } translate([0,44,-14]) rotate([90,0,0]) cube([100,30,2], center=true); translate([0,-44,-14]) rotate([90,0,0]) difference() { cube([100,30,2], center=true); translate([40,0,0]) cube([10,10,5], center=true); translate([15,0,0]) cube([10,10,5], center=true); translate([-15,0,0]) cube([10,10,5], center=true); translate([-40,0,0]) cube([10,10,5], center=true); } // Sides top and bottom translate([-60.5,-48.9,-14]) rotate([90,0,0]) cube([11,30,2], center=true); translate([60.5,-48.9,-14]) rotate([90,0,0]) cube([11,30,2], center=true); translate([60.5,48.9,-14]) rotate([90,0,0]) cube([11,30,2], center=true); translate([-60.5,48.9,-14]) rotate([90,0,0]) cube([11,30,2], center=true); // Sides 45 degree top and bottom translate([-52.5,46,-14]) rotate([90,0,-45]) cube([9,30,2], center=true); translate([52.5,46,-14]) rotate([90,0,45]) cube([9,30,2], center=true); translate([-52.5,-46,-14]) rotate([90,0,45]) cube([9,30,2], center=true); translate([52.5,-46,-14]) rotate([90,0,-45]) cube([9,30,2], center=true); } module gimbal_ring_full() { translate([-47,-25,23.5]) cylinder(h=5, d=64.5, center=true, $fn=round_quality); translate([-71,-49,23.5]) rotate([0,0,45]) difference() { cube([15,10,5], center=true); translate([-9,0,2]) rotate([0,-15,0]) cube([25,15,5], center=true); translate([-4,0,0]) cylinder(h=10, d=3.5, center=true, $fn=round_quality); translate([-4,0,0]) cylinder(h=3, d=5.6, center=true, $fn=round_quality); } translate([-23,-49,23.5]) mirror([-1,0,0]) { rotate([0,0,45]) difference() { cube([15,10,5], center=true); translate([-9,0,2]) rotate([0,-15,0]) cube([25,15,5], center=true); translate([-4,0,0]) cylinder(h=10, d=3.5, center=true, $fn=round_quality); translate([-4,0,0]) cylinder(h=3, d=5.6, center=true, $fn=round_quality); } } translate([-71,-0.8,23.5]) mirror([0,-1,0]) { rotate([0,0,45]) difference() { cube([15,10,5], center=true); translate([-9,0,2]) rotate([0,-15,0]) cube([25,15,5], center=true); translate([-4,0,0]) cylinder(h=10, d=3.5, center=true, $fn=round_quality); translate([-4,0,0]) cylinder(h=3, d=5.6, center=true, $fn=round_quality); } } translate([-22.5,-0.5,23.5]) mirror([-1,-1,0]) { rotate([0,0,45]) difference() { cube([15,10,5], center=true); translate([-9,0,2]) rotate([0,-15,0]) cube([25,15,5], center=true); translate([-4,0,0]) cylinder(h=10, d=3.5, center=true, $fn=round_quality); translate([-4,0,0]) cylinder(h=3, d=5.6, center=true, $fn=round_quality); } } } module gimbal_ring() { difference() { gimbal_ring_full(); translate([-47,-25,23.5]) cylinder(h=6, d1=47.5, d2=57.5, center=true, $fn=round_quality); } }