15 translate([-body_h/4, 0, -eps])
16 cube([body_h/2, bar_diam/2+wall/2, eps]);
17 translate([-spike_w/2, 0, -body_h/2])
18 cube([spike_w, bar_diam/2 + wall + spike_l, eps]);
24 translate([-body_l/2, 0, 0])
26 cylinder(r = bar_diam/2 + wall, h = body_l);
27 for (x = [-37.5:15:37.5])
28 translate([x, 0, 0]) spike();
30 translate([x, 0, 0]) scale([1, 1, -1]) spike();
34 translate([-body_l/2-eps, 0, 0])
36 cylinder(r = bar_diam/2, h = body_l + 2*eps);
38 translate([-infty/2, -infty/2, -infty-body_h/2]) cube(infty);
40 translate([-infty/2, -infty/2, body_h/2]) cube(infty);
41 // cut the bottom rear half
42 translate([-infty/2, -infty, -infty/2]) cube(infty);