--- /dev/null
+eps = 0.01;
+infty = 100;
+
+
+beam_len = 36;
+beam_w = 8;
+beam_h = 4.5;
+
+leg_h = 8;
+leg_d = 10;
+leg_asym = 1.5;
+leg_wall = 1.5;
+
+tail_w1 = 4;
+tail_w2 = 2;
+tail_h = 2;
+tail_len = 11;
+
+screw_d = 4;
+screw_head_d = 6;
+screw_head_h = 3;
+
+screw_bot_d = 5;
+screw_bot_h = 2;
+
+lever_hole_d = 5;
+lever_hole_x = 6;
+lever_space_d = 6.5;
+lever_space_d2 = 8;
+lever_h = 1;
+
+module body() {
+ // main beam
+ translate([-beam_len/2, -beam_w/2, 0])
+ cube([beam_len, beam_w, beam_h]);
+ // legs
+ for (x = [-1, 1]) {
+ scale([x, 1, 1]) translate([beam_len/2, 0, 0]) scale([1, leg_asym, 1])
+ cylinder(r1 = beam_w/(2*leg_asym), r2 = leg_d/(2*leg_asym), h = leg_h);
+ }
+
+ // reinforcement for the screw hole
+ cylinder(r = screw_bot_d/2 + 2, h = beam_h);
+
+ // reinforcement for the lever hole
+ intersection() {
+ translate([lever_hole_x, 0, 0])
+ cylinder(r = lever_space_d/2 + 2, h = beam_h);
+ translate([-infty/2, -infty, 0]) cube(infty);
+ }
+
+/*
+ // tail
+ hull() {
+ translate([-tail_w1/2, -beam_w/2, 0])
+ cube([tail_w1, eps, tail_h]);
+ translate([-tail_w2/2, -beam_w/2-tail_len, 0])
+ cube([tail_w2, eps, tail_h]);
+ }
+*/
+}
+
+module leg() {
+ difference() {
+ body();
+
+ // legs hole
+ hull() for (x = [-1, 1])
+ scale([x, leg_asym, 1])
+ translate([beam_len/2, 0, beam_h+eps])
+ cylinder(r1 = (beam_w-2*leg_wall)/(2*leg_asym),
+ r2 = (leg_d-2*leg_wall)/(2*leg_asym),
+ h = leg_h - beam_h + eps);
+ // legs side cut
+ for (x = [-1, 1]) scale([x, 1 ,1])
+ translate([beam_len/2, 0, 0])
+ rotate([0, 45, 0])
+ translate([0, -infty/2, -infty/2])
+ cube(infty);
+
+ // screw hole
+ rotate([0, 0, 45])
+ cylinder(r = screw_d/2, h = infty, $fn = 4);
+ // screw head
+
+ translate([0, 0, screw_head_h])
+ cylinder(r = screw_head_d/2, h = infty);
+
+ // screw bottom
+ difference() {
+ translate([0, 0, -eps])
+ cylinder(r = screw_bot_d/2, h = screw_bot_h+eps);
+ translate([screw_d/2, -infty/2, -infty/2])
+ cube(infty);
+ }
+
+ // lever hole
+ translate([lever_hole_x, 0, -eps])
+ rotate([0, 0, 45])
+ cylinder(r = lever_hole_d/2, h = infty, $fn = 4);
+
+ // lever space
+ hull() {
+ translate([lever_hole_x, 0, -eps])
+ cylinder(r = lever_space_d/2, h=beam_h-lever_h+eps);
+ translate([lever_hole_x - lever_space_d2/2, beam_w/2, -eps])
+ cube([lever_space_d2, infty, beam_h-lever_h+eps]);
+ }
+ }
+}
+
+leg();
+