--- /dev/null
+infty = 100;
+eps = 0.01;
+
+fuse_w = 40;
+gear_w = fuse_w - 16;
+gear_l = 25;
+spring_l = 6;
+
+base_w = fuse_w - 10;
+base_l = gear_l + 3;
+base_h = 1;
+base_beam_w = spring_l + 2;
+rear_spring_l = 3;
+rear_beam_w = rear_spring_l + 3;
+
+hook_wall = 1.5;
+hook_in = 1.5;
+
+module hook(w) {
+ translate([0, w/2, base_h + hook_in/2])
+ rotate([90, 90, 0])
+ difference() {
+ hull() {
+ cylinder(r = hook_in/2 + hook_wall/2, h = w, $fn = 6);
+ translate([hook_in/2, 0, 0])
+ cube([eps, hook_in/2 + hook_wall, w]);
+ }
+ translate([0, 0, -eps])
+ cylinder(r = hook_in/2, h = w + 2*eps, $fn = 6);
+ translate([-infty/2, -infty, -infty/2]) cube(infty);
+ translate([hook_in/2 + eps,, -infty/2, -infty/2]) cube(infty);
+ }
+}
+
+
+
+// wide beam
+translate([0, -base_w/2, 0])
+ cube([base_beam_w, base_w, base_h]);
+// long center beam
+translate([0, -rear_beam_w/2, 0])
+ cube([base_l, rear_beam_w, base_h]);
+
+// rear hook
+translate([gear_l, 0, 0])
+ hook(rear_spring_l);
+// rear front hook
+translate([gear_l - hook_in/2, 0, 0])
+ rotate([0, 0, 180])
+ hook(rear_spring_l);
+
+// side hooks
+for (y = [-1, 1]) scale([1, y, 1])
+ translate([1, gear_w/2, 0])
+ rotate([0, 0, 70])
+ translate([0, -spring_l/2, 0])
+ hook(spring_l);