include $fa = 1; $fs = 0.4; module right_half_components() { cube([1,1,1]); } module right_half_orig() { translate(BASE_MODEL_TRANSLATE) scale(BASE_MODEL_SCALE) import(file = "right-half.3mf"); } // #right_half_orig(); module right_half_door_only() { translate(BASE_MODEL_TRANSLATE+[11.3, -85, -17]) scale(BASE_MODEL_SCALE) import(file = "right-half_door-only.stl"); } // #right_half_door_only(); module battery_spacer(cable_cube_additional_length=0, cable_cube = 8.25) { length = 106; battery_d = 18; rotate([0, 90, 90]) cylinder(d=battery_d+1.9, h=length); translate([0, 0, -cable_cube]) cube([cable_cube, length+cable_cube_additional_length, cable_cube]); } // !battery_spacer(); module battery_contact() { base_height = 4; silver_wire_d = 1.7; module base_body() { rotate([90, 0, 0]) resize([0, base_height, 0], auto=[false, true, false]) scale(0.96) battery_spacer(cable_cube=0); } module contact_spring() { spring_width = 11; translate([-2, -spring_width/2, 0]) difference() { scale([1.5, 1, 1]) rotate([-90, 0, 0]) cylinder(d=10, h=spring_width); scale([0.95, 1, 0.8]) rotate([-90, 0, 0]) cylinder(d=10, h=spring_width); translate([-101, 0, -50]) cube(100); translate([-50, 0, -100]) cube(100); translate([-1, spring_width/3-silver_wire_d, 0]) cube([silver_wire_d, silver_wire_d, 50]); translate([-1, spring_width*2/3, 0]) cube([silver_wire_d, silver_wire_d, 50]); } } module silver_wire_channels() { translate([6.5, -2.5, -7]) #cylinder(d=silver_wire_d, h=15); translate([6.5, 2.5, -7]) #cylinder(d=silver_wire_d, h=15); } // silver_wire_channels(); translate([0, 0, base_height]) rotate([0, 0, 45]) contact_spring(); difference() { base_body(); translate([0, 0, base_height]) rotate([0, 0, 45]) silver_wire_channels(); } } battery_contact(); module right_half_hinge_only() { module original() { translate(BASE_MODEL_TRANSLATE+[0.34, -12.3, -6]) scale(BASE_MODEL_SCALE) import(file = "right-half_hinge-only.3mf", convexity=3); translate(BASE_MODEL_TRANSLATE+[5.92, -12.3, -11.48]) scale(BASE_MODEL_SCALE) import(file = "right-half_connector.3mf", convexity=3); } module cable_room() { translate([3.5, 0, -3.5]) rotate([-10, 80, 90]) cylinder(d=8, h=20); translate([0, 18, 0]) rotate([0, 90, 90]) cylinder(d=8, h=20); translate([0, 0, -9.5]) cube([20, 16.5, 4]); } module base_model() { difference() { original(); translate([-20, -108.3, -10]) cube(40); translate([0, -85, 11]) battery_spacer(18); translate([0, 22.5, 11]) cable_room(); } } base_model(); // translate([0, -40, 11]) rotate([0, 0, 90]) battery(); } // !right_half_hinge_only(); module right_half() { right_half_door_only(); right_half_hinge_only(); } // right_half(); // #right_half_components();