12 base_beam_w = spring_l + 2;
17 rear_spring_rear_l = 6;
18 rear_beam_w = rear_spring_l + 4;
20 rear_spring_front_bot_w = 15;
21 rear_spring_bot_w = 10;
24 side_spring_bot_w = 3.5;
29 hook_h = base_h + base_reinf_h/2;
31 side_hook_angle_cut = 10;
36 translate([0, -base_w/2, 0])
37 cube([base_beam_w, base_w, base_h]);
38 translate([base_beam_w/2-base_reinf_w/2, -base_w/2, base_h-eps])
39 cube([base_reinf_w, base_w, base_reinf_h + eps]);
44 translate([base_beam_w/2, -rear_beam_w/2, 0])
45 cube([base_l - base_beam_w/2, rear_beam_w, base_h]);
46 translate([base_beam_w/2, -base_reinf_w/2, base_h-eps])
47 cube([base_l - base_beam_w/2, base_reinf_w, base_reinf_h + eps]);
50 // rear hook - front part
52 translate([gear_l-rear_spring_front_bot_w/2, -rear_spring_l/2, base_h])
53 cube([rear_spring_front_bot_w/2-rear_slot_w/2, rear_spring_l, eps]);
54 translate([gear_l-rear_spring_w/2, -rear_spring_l/2, hook_h+hook_in+hook_wall-eps])
55 cube([rear_spring_w/2-rear_slot_w, rear_spring_l, eps]);
57 // rear hook - rear part
59 translate([gear_l, -rear_spring_rear_l/2, base_h])
60 cube([rear_spring_bot_w/2, rear_spring_rear_l, eps]);
61 translate([gear_l, -rear_spring_rear_l/2, hook_h+hook_in+hook_wall-eps])
62 cube([rear_spring_w/2, rear_spring_rear_l, eps]);
66 for (y = [-1, 1]) scale([1, y, 1]) intersection() {
67 translate([0, gear_w/2, eps]) rotate([0, 0, -side_hook_angle])
68 translate([-10, 0, 0]) hull() {
69 translate([0, -side_spring_bot_w, 0])
70 cube([20, 2*side_spring_bot_w, base_h-eps]);
71 translate([0, -side_spring_w, 0])
72 cube([20, 2*side_spring_w, hook_h + hook_in + hook_wall-eps]);
75 translate([0, -base_w/2, base_h/2])
76 cube([base_beam_w, base_w, infty]);
77 // cut the front sides
79 translate([0, gear_w/2 + 1.25, eps])
80 rotate([0, 0, -side_hook_angle_cut])
91 translate([gear_l, 0, hook_h+hook_in/2])
93 translate([0, 0, -rear_beam_w/2-eps])
94 cylinder(h = rear_beam_w+2*eps, r = hook_in/2, $fn = 6);
95 // rear slot above the hole
96 // translate([gear_l-rear_slot_w/2, -rear_beam_w/2+eps, hook_h+hook_in/2])
97 // cube([rear_slot_w, rear_beam_w+2*eps, infty]);
99 for (y = [-1, 1]) scale([1, y, 1]) {
100 translate([0, gear_w/2, hook_h+hook_in/2]) {
101 rotate([0, 90, -side_hook_angle])
102 translate([0, 0, -10])
103 cylinder(r1 = hook_in, r2 = hook_in/2, h = 20, $fn = 6);
105 rotate([0, 0, -side_hook_angle])
108 translate([-10, -rear_slot_w, 0])
109 cube([eps, 2*rear_slot_w, 20]);
110 translate([10, -rear_slot_w/2, 0])
111 cube([eps, rear_slot_w, 20]);