$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(); federal_holder(); cci_holder(); base_l=77; base_w=45; plate_l=70; plate_w=37.5; riser_l=70; riser_w=35; riser_h=6; // federal_riser_vertical color("blue", alpha=1) { cuboid([base_l,base_w,4], rounding=4, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT], anchor=TOP); cuboid([riser_l,riser_w,riser_h], rounding=1, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT], anchor=BOT); for (i = [-32:14:24]) { translate([i,0,0]) cuboid([6,riser_w,11], rounding=1, anchor=BOT); } } // federal_riser_horizontal color("blue", alpha=1) { cuboid([base_l,base_w,4], rounding=4, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT], anchor=TOP); cuboid([riser_l,riser_w,riser_h], rounding=1, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT], anchor=BOT); for (i = [-14.5:14.5:14.5]) { translate([0,i,0]) cuboid([riser_l,6,11], rounding=1, anchor=BOT); } } // cci riser !color("orange", alpha=1) { difference() { rect_tube(size=[base_l,base_w], isize=[riser_l+1,riser_w+1], h=23, rounding=4, irounding=1, anchor=BOT); translate([0,0,20]) rect_tube(size=[plate_l+1,plate_w+1], wall=3, h=3, rounding=1, anchor=BOT); *translate([0,0,23]) cuboid([73,40,7]); translate([0,base_w/2,23]) ycyl(l=base_w/2-riser_w/2, d=20, rounding=-1, anchor=BACK); translate([0,-base_w/2,23]) ycyl(l=base_w/2-riser_w/2, d=20, rounding=-1, anchor=FRONT); } }