$fn=60; include module bullets() { for(x=[1:1:5]) { for(y=[1:1:5]) { translate([-38.5+x*14,-21+y*7,31.4]) { rotate([180,0,0]) { translate([0,0,12.7]) zcyl(l=25.4, d=5.72, rounding=2.81); translate([0,0,7.785]) zcyl(l=15.57, d=5.74); translate([0,0,.545]) zcyl(l=1.09, d=7.06, rounding=.545); } } } } for(x=[1:1:5]) { for(y=[1:1:5]) { translate([-45.5+x*14,-21+y*7,36.4]) { rotate([180,0,0]) { translate([0,0,12.7]) zcyl(l=25.4, d=5.72, rounding=2.81); translate([0,0,7.785]) zcyl(l=15.57, d=5.74); translate([0,0,.545]) zcyl(l=1.09, d=7.06, rounding=.545); } } } } } module cci_holder() { color("grey", alpha=1) { difference() { translate([0,0,21]) cuboid([70,37,4]); translate([-38.5,-21,22]) { for(i=[1:1:5]) { for(j=[1:1:10]) { translate([j*7,i*7,0]) zcyl(l=10, d=5.8); } } } } } } module federal_holder() { color("grey", alpha=1) { difference() { translate([0,0,11]) cuboid([73,40,22]); translate([0,0,8]) cuboid([70,50,20], rounding=3); translate([-38.5,-21,22]) { for(i=[1:1:5]) { for(j=[1:1:10]) { translate([j*7,i*7,0]) zcyl(l=10, d=5.8); } } } } } } bullets(); translate([0,50,0]) { cci_holder(); // cci riser color("orange", alpha=1) { translate([0,0,11.5]) { difference() { cuboid([80,46,23],rounding=1); translate([0,0,11]) cuboid([73,40,7]); translate([0,0,-2]) cuboid([71,36,20],rounding=0); translate([0,0,11]) ycyl(l=46, d=20, rounding=-1); } } } } federal_holder(); // federal riser color("blue", alpha=1) { translate([0,0,-2]) cuboid([84,48,4], rounding=4, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT]); translate([0,0,3]) cuboid([70,35,6], rounding=1, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT]); translate([-32,0,5.5]) cuboid([6,35,11], rounding=1); translate([-18,0,5.5]) cuboid([6,35,11], rounding=1); translate([-4,0,5.5]) cuboid([6,35,11], rounding=1); translate([10,0,5.5]) cuboid([6,35,11], rounding=1); translate([24,0,5.5]) cuboid([6,35,11], rounding=1); }