$fn=60; include include include include module bolt() { difference() { union() { cuboid([26,21,10], rounding=1); translate([-10,0,0]) cuboid([6,66,10], rounding=1); } translate([-2.5,0,0]) zcyl(l=10, d=15); } translate([-2.5,0,-5]) mirror([0,1,0]) RodEnd(15, 20, thread_len=20, thread_diam=12, thread_pitch=4); } module blade() { difference () { translate([-7.5,0,0]) cuboid([26,8,66], rounding=1); translate([0,3.5,0]) cuboid([6,5,70], rounding=1); } translate([-7,-4,20]) ycyl(l=3, d=8, rounding=1); translate([-7,-4,-20]) ycyl(l=3, d=8, rounding=1); } module screw() { cylinder(h=15, d=12, $fn=6); translate([0,0,15]) mirror([0,1,0]) RodStart(20, 3, thread_len=40, thread_diam=12, thread_pitch=4); } * bolt(); * blade(); * screw(); // Screws color("blue") { translate([-5,94,0]) rotate([90,0,0]) screw(); translate([-5,0,94]) rotate([180,0,0]) screw(); } // Horizontal blades color("green") { // Right translate([-2.5,65,0]) rotate([90,0,0]) bolt(); // Left translate([5,-62,0]) blade(); translate([-14,0,30]) cuboid([3,129,6], rounding=1); translate([-14,0,-30]) cuboid([3,129,6], rounding=1); } // Vertictal blades color("pink") { // Top translate([-2.5,0,65]) rotate([0,180,180]) bolt(); // Bottom translate([5,0,-62]) rotate([90,0,0]) blade(); translate([-9.5,30.5,4]) cuboid([4,5,132], rounding=1); translate([-9.5,-30.5,4]) cuboid([4,5,132], rounding=1); } // Springs * color("orange", alpha=.5) { translate([5,-76,20]) ycyl(l=8, d=9); translate([5,-76,-20]) ycyl(l=8, d=9); translate([5,20,-72]) zcyl(l=16, d=9); translate([5,-20,-72]) zcyl(l=16, d=9); } // Target color("grey", alpha=1) { translate([3,0,0]) { difference() { cuboid([1,90,90]); translate([0,40,40]) xcyl(l=3, d=4); translate([0,40,-40]) xcyl(l=3, d=4); translate([0,-40,-40]) xcyl(l=3, d=4); translate([0,-40,40]) xcyl(l=3, d=4); } } } color("red", alpha=0.5) translate([4,0,0]) xcyl(l=1, d=80); // Box color("white", alpha=.5) { difference() { translate([-6,0,0]) cuboid([33,166,166], rounding=1); translate([-2,0,0]) cuboid([29,160,160], rounding=1); translate([-5,81,0]) ycyl(l=6, d=13); translate([-5,0,81]) zcyl(l=6, d=13); } // Corners translate([-2,0,0]) { translate([-6,58,58]) cuboid([22,47,47], rounding=1); translate([-6,-58,58]) cuboid([22,47,47], rounding=1); translate([-6,58,-58]) cuboid([22,47,47], rounding=1); translate([-6,-58,-58]) cuboid([22,47,47], rounding=1); } // Pins translate([3,40,40]) xcyl(l=3, d=3, rounding=1); translate([3,40,-40]) xcyl(l=3, d=3, rounding=1); translate([3,-40,-40]) xcyl(l=3, d=3, rounding=1); translate([3,-40,40]) xcyl(l=3, d=3, rounding=1); } // Grp Plate * color("cyan", alpha=.3) translate([5.5,0,0]) cuboid([4,120,120], rounding=1); // Cover * color("white", alpha=0.5) { translate([15,0,0]) difference() { cuboid([3,166,166], rounding=1); xcyl(l=5, d=80); } }