render_lock = true; render_wings = false; d = 4; // Thickness (button/wall distance) btn_s = 6; // Button (edge) size btn_dist = 34; // Button distance from floor btn_d = 3.2; // Button depth hub = 1.5; // Button hub h = btn_dist+btn_s+1.4+2; fil = 0.32; // Filament thickness l_d = 24; // Ledge size l_thick = fil*4; // Ledge thickness foot_s = 34; // Foot size w_t = fil*4; // Wing thickness w_h = 8; // Wing height w_l = 4; // Wing length (per wing) w_notch = 1; // Notch depth module ring(dia, thickness, w) { translate([0, w, 0]) rotate ([90, 0, 0]) difference() { cylinder(w, dia, dia, $fn=128); translate([0, 0, -0.1]) cylinder(w+0.2, dia-thickness, dia-thickness, $fn=128); } } if (render_lock) { rotate([90, 0, 0]) { /* Base */ //difference() { translate([0, 0, foot_s/2]) cube([d, btn_s, h-foot_s/2]); // Wing notch cut-out //translate([-0.4, btn_s-w_notch-0.4, btn_dist-w_h*2+w_t-0.2]) // cube([w_t+0.8, w_notch+0.5, w_h/2+0.8]); //} /* Top clamp */ translate([d, 0, h-fil*4]) cube([btn_d, btn_s, fil*4]); /* Bottom clamp */ translate([d, 0, h-btn_s-(fil*4*2)-0.4]) cube([btn_d, btn_s, fil*4]); /* Notch */ notch = fil*4; translate([0, 0, h-btn_s+btn_s/4-fil*4-0.2]) difference() { cube([d, btn_s+notch, btn_s/2]); translate([-0.1, 0.1, 4*fil]) cube([d-4*fil+0.1, btn_s+notch+0.2, btn_s/2-8*fil]); } /* Angel wing clamp */ /* translate([d, 0, btn_dist-w_h*2]) { cube([w_t+0.6, btn_s, fil*4]); translate([w_t+0.6, 0, 0]) cube([fil*4, btn_s, w_h]); } */ /* Wire clamp */ /* w_s = 1.2; translate([d, 0, btn_dist-10-w_s]) { cube([w_s, btn_s/2, fil*4]); translate([w_s, 0, 0]) cube([fil*4, btn_s/2, 10]); } */ /* Ledge */ translate([d+btn_d+hub+0.2, 0, h-42+l_thick]) intersection() { translate([42, 0, 42]) ring(42, l_thick, btn_s); cube([8, 42, 42]); } // Extension ext = 2; translate([0, 0, h+l_thick]) cube([l_thick, btn_s, ext]); translate([d+btn_d+hub+0.2, 0, h+l_thick]) cube([l_thick, btn_s, ext]); translate([0, 0, h]) difference() { cube([l_thick*2, btn_s, l_thick]); translate([l_thick*2, -0.1, l_thick]) rotate([-90, 0, 0]) cylinder(btn_s+0.2, l_thick, l_thick, $fn=64); } translate([(d+btn_d+hub+l_thick+0.2)/2, 0, h+l_thick+ext]) intersection() { ring((d+btn_d+hub+l_thick+0.2)/2, l_thick, btn_s); translate([-10, 0, 0]) cube([20, 10, 10]); } /* Foot */ translate([foot_s, 0, foot_s/2]) intersection() { ring(foot_s, d, btn_s); translate([-foot_s, -0.1, -foot_s]) cube([foot_s-12, btn_s+0.2, foot_s]); } } } // endif (render_lock) /* Angel wings */ if (render_wings) { translate([-20, 0, 0]) { // Middle piece translate([0, -0.2, 0]) cube([w_t, btn_s+0.4, w_h]); // Middle translate([0, -w_t-0.2, 0]) cube([d+w_t, w_t, w_h]); translate([0, btn_s+0.2, 0]) cube([d+w_t, w_t, w_h]); // Notch translate([d, -0.2, 0]) cube([w_t, w_notch, w_h/2]); // Wings translate([d, -w_l-w_t-0.2, 0]) cube([w_t, w_l, w_h]); translate([d, btn_s+w_t+0.2, 0]) cube([w_t, w_l, w_h]); // Wire clamps wire = 1.2; translate([d-w_t-wire, -w_l-w_t-0.2, 0]) cube([w_t, w_l-wire, w_h/2]); translate([d-wire, -w_l-w_t-0.2, 0]) cube([wire, w_t, w_h/2]); translate([d-w_t-wire, btn_s+w_t+0.2+wire, 0]) cube([w_t, w_l-wire, w_h/2]); translate([d-wire, btn_s+w_t+w_l+0.2-w_t]) cube([wire, w_t, w_h/2]); } } // endif (render_wings)