--- /dev/null
+eps = 0.01;
+infty = 300;
+
+fuse_w = 60;
+fuse_h = 30-3;
+fuse_l = 80;
+
+wall = 2;
+
+front_h = 5;
+
+wing_hole_x = 25;
+wing_hole_l = 25;
+wing_hole_h = 12;
+
+difference() {
+ translate([0, -fuse_w/2, 0]) intersection() {
+ cube([fuse_l, fuse_w, fuse_h]);
+ translate([0, 0, front_h])
+ scale([fuse_l/(fuse_h-front_h), 1, 1])
+ rotate([-90, 0, 0])
+ cylinder(r = fuse_h-front_h,
+ h = fuse_w, $fn = 128);
+ }
+ // inner space
+ difference() {
+ translate([-eps, -fuse_w/2+wall, wall])
+ cube([fuse_l + 2*eps, fuse_w-2*wall, fuse_h]);
+ // front beams
+ translate([fuse_l, fuse_w/2, wall + 5])
+ rotate([0, 60, 0])
+ translate([0, -infty/2, -infty/2]) cube(infty);
+ };
+ // wing hole
+ translate([wing_hole_x, -fuse_w/2-eps, wall])
+ cube([wing_hole_l, fuse_w + 2*eps, wing_hole_h]);
+
+ // center squares
+ for (x = [9:16:fuse_l - 15])
+ for (y = [0,16])
+ for (n = [0, 16/2])
+ for (s = [-1, 1])
+ scale([1, s, 1])
+ translate([x+n, y-n, -eps])
+ cylinder(r = 6, h = wall + 2*eps, $fn = 4);
+}