eps = 0.01; infty = 300; fuse_w = 60; fuse_h = 33-3; fuse_l = 100; wall = 2; front_h = 5; wing_hole_x = 25; wing_hole_l = 25; wing_hole_h = 8; rear_edge_w = 4; rear_edge_h = 19 -3 ; // see front_rod_h from mini-arrow-fuselage.scad rear_edge_l = 132-121.5; // fuse_l - front_rod_x from mini-arrow-fuselage.scad include spring_width = 23; spring_beam_w = 3; difference() { translate([0, -fuse_w/2, 0]) intersection() { cube([fuse_l - spring_width + spring_beam_w, fuse_w, fuse_h]); translate([rear_edge_l, 0, front_h]) scale([(fuse_l-rear_edge_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); // sides for (y = [-1, 1]) scale([1, y, 1]) translate([0, fuse_w/2, -10*0.707]) rotate([45, 0, 0]) cube([fuse_l, 10, 10]); // rear end for (y = [-1, 1]) scale([1, y, 1]) translate([0, fuse_w/2, 0]) rotate([0, 0, 60]) cylinder(r = rear_edge_w, h = rear_edge_h, $fn = 4); }; // 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 - 30]) 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); // top underhang translate([rear_edge_l-infty, -infty/2, rear_edge_h]) cube(infty); } translate([fuse_l - spring_width/2, 0, 0]) rotate([0, 0, 90]) spring();