box_x = 70; box_y = 55; box_z = 16+10+3; wall_thickness=0.8; inner_screw=1; // TODO! gear_distance = 25.2; gear_thickness = 5; module outer_old() { $fn=50; minkowski() { cube([box_x,box_y,box_z]); cylinder(r=wall_thickness,h=1); } } module inner_old() { $fn=50; translate([wall_thickness,wall_thickness,wall_thickness]) minkowski() { cube([box_x-2*wall_thickness,box_y-2*wall_thickness,box_z]); cylinder(r=wall_thickness,h=1); } } module outer() { $fn=50; cylinder(r=40/2+wall_thickness,h=box_z); translate([gear_distance,0,0]) cylinder(r=40/2+wall_thickness,h=box_z); translate([0,-(40/2+wall_thickness),0]) cube([gear_distance,40+wall_thickness*2,box_z]); } module inner() { $fn=50; translate([0,0,wall_thickness]) cylinder(r=40/2,h=box_z); translate([gear_distance,0,wall_thickness]) cylinder(r=40/2,h=box_z); translate([0,-(40/2),box_z-wall_thickness]) cube([gear_distance,40,5]); } module servo() { $fn=50; translate([6,0,0]) { cube([22.5+0.5,12+0.5,33.5-5.5],center=true); // body translate([0,0,28/2-3]) cube([32.5,12.5,2.5],center=true); // bracket translate([-6,0,-14]) cylinder(r=2.8,h=35.5); // bearing translate([27.5/2,0,5]) cylinder(r=inner_screw,h=10); // screw translate([-27.5/2,0,5]) cylinder(r=inner_screw,h=10); // screw translate([-22.5/2-0.6,0,0]) cube([1.2,4,28],center=true); // cable } } module space() { $fn=50; translate([6,0,0]) //translate([27.5/2,0,28/2-3]) cylinder(r=inner_screw*2.2,h=9); // place to screw translate([0,0,28/2-3+4.5+2.5]) cube([32.5-0.3,12.5,2.5+9],center=true); // place to screw } module servo_bracket() { $fn=50; minkowski() { translate([6,0,3]) cube([22.5+0.5+9-wall_thickness*2,12+0.5-wall_thickness*2,6],center=true); // body cylinder(r=wall_thickness,h=1); } } module gear_bearing() { $fn = 50; cylinder(r=10/2,h=6+2.5+1.5+gear_thickness+1.6); cylinder(r=5/2,h=box_z-wall_thickness); } module lid_screws() { $fn = 50; translate([gear_distance/2,40/2-2,box_z-8]) cylinder(r=inner_screw,h=8); translate([gear_distance/2,-(40/2-2),box_z-8]) cylinder(r=inner_screw,h=8); //translate([gear_distance/2,40/2-2,box_z-8]) cylinder(r=inner_screw*1.9,h=8); // shaft //translate([gear_distance/2,-(40/2-2),box_z-8]) cylinder(r=inner_screw*2,h=8); // shaft } module box() { difference() { outer(); inner(); } } module rod() { translate([20-7.5-16,-100,6+2.5+1.5+gear_thickness*2+1.5]) cube([12+0.8,173.2+0.4,5+0.4+3]); } module lid() { $fn = 50; difference() { union() { translate([0,0,box_z-wall_thickness]) cylinder(r=40/2-0.2,h=wall_thickness); translate([gear_distance,0,box_z-wall_thickness]) cylinder(r=40/2-0.2,h=wall_thickness); translate([0,-(40/2)+0.2,box_z-wall_thickness]) cube([gear_distance,40-0.4,wall_thickness]); // mid translate([gear_distance,0,box_z-wall_thickness*2]) difference() { cylinder(r=7,h=wall_thickness); // bearing outer cylinder(r=5/2+0.2,h=wall_thickness*2); // bearing inner } } translate([gear_distance/2,40/2-2,box_z-1]) cylinder(r=inner_screw,h=3); translate([gear_distance/2,-(40/2-2),box_z-1]) cylinder(r=inner_screw,h=3); // translate([-gear_distance/2-3,0,box_z-1]) cylinder(r=inner_screw,h=3); // translate([gear_distance*1.5+3,0,box_z-1]) cylinder(r=inner_screw,h=3); } translate([(20-7.5-16)-2,-(40/2)+2,box_z-wall_thickness-5]) cube([2,40-4,5+wall_thickness]); // rod guide } difference() { union() { box(); translate([0,0,0]) servo_bracket(); translate([gear_distance,0,0]) gear_bearing(); } translate([0,0,-4]) servo(); translate([0,0,-4]) space(); lid_screws(); rod(); } %translate([0,0,-4]) servo(); %rod(); %lid(); //translate([20,0,box_z-10-wall_thickness]) cube([10,10,10]);