--- /dev/null
+infty = 200;
+eps = 0.01;
+
+wall = 1.2;
+base_w = 4;
+thin_wall = 0.6;
+body_h = 4;
+
+module tbar() {
+ translate([-infty/4, 0, 0]) {
+ cube([infty/2, base_w, thin_wall]);
+ cube([infty/2, thin_wall, body_h]);
+ hull() {
+ translate([0, 0.7*base_w, 0])
+ cube([infty/2, thin_wall, eps]);
+ translate([0, 0, body_h-eps])
+ cube([infty/2, thin_wall, eps]);
+ }
+ }
+}
+
+module side_cube() {
+ translate([-infty/2, 0, -eps])
+ cube([infty, infty, body_h+2*eps]);
+}
+
+module triangle(w, h) {
+ intersection() {
+ union() {
+ tbar();
+ translate([w/2, 0, 0])
+ rotate([0, 0, 90+atan(w/(2*h))])
+ translate([infty/5, 0, 0])
+ tbar();
+ translate([-w/2, 0, 0])
+ rotate([0, 0, -90-atan(w/(2*h))])
+ translate([-infty/5, 0, 0])
+ tbar();
+ }
+ side_cube();
+ translate([w/2, 0, 0])
+ rotate([0, 0, 90+atan(w/(2*h))])
+ translate([infty/5, 0, 0])
+ side_cube();
+ translate([-w/2, 0, 0])
+ rotate([0, 0, -90-atan(w/(2*h))])
+ translate([-infty/5, 0, 0])
+ side_cube();
+ }
+}
+
+triangle(50, 80);
+translate([50, 0, 0])
+triangle(40, 70);
+translate([85, 0, 0])
+triangle(15, 50);
+translate([105, 0, 0])
+triangle(15, 70);
+