T = 0.2; // Tolerance W = 46; // Board width L = 48; // Board length H = 1.5; // Board height; D = 3; // Hole Diameter/Distance-from-edge C = 3; // Board clearance (bottom) bottom(); top(); //board(); translate([0,0,29.25]){ antennaholdersolid(); pivotsolid(); clampring(); } module clampring(){ difference(){ translate([0,0,-15])cylinder(d=8,h=2,$fn=20); translate([0,-25,0])cube([4,50,50],true); translate([0,0,-16])cylinder(d=5.5-2*T,h=7,$fn=20); } } module pivotsolid(){ difference(){ pivot(); translate([0,25,0])cube([1.5,50,50],true); } } module pivothalf(){ difference(){ pivot(); translate([0,25,0])cube([50,50,50],true); } } module pivot(){ difference(){ union(){ translate([2.75,0,-7])rotate([0,90,0])cylinder(d=8,h=2,$fn=20); translate([-4.75,0,-7])rotate([0,90,0])cylinder(d=8,h=2,$fn=20); translate([0,0,-11])cylinder(d=7.5,h=2,$fn=20); translate([0,0,-16])cylinder(d=5.5-2*T,h=7,$fn=20); } translate([-20,0,-5.5])rotate([0,90,0])cylinder(d=3,h=100,$fn=20); translate([0,0,-50])cylinder(d=3,h=100,$fn=20); translate([0,27.55,0])cube([50,50,50],true); translate([0,-27.55,0])cube([50,50,50],true); } } module antennaholdersolid(){ difference(){ antennaholder(); translate([0,25,0])cube([1.5,50,50],true); } } module antennaholderhalf(){ difference(){ antennaholder(); translate([25,0,0])cube([50,50,50],true); } } module antennaholder(){ difference(){ union(){ translate([0,0,-2])cylinder(d=9.5,h=10,$fn=20); translate([0,0,-7])cylinder(d=5.5-T*2,h=10,$fn=20); translate([-2,0,-5.5])sphere(d=3, $fn=20); translate([2,0,-5.5])sphere(d=3, $fn=20); } cylinder(d=5.5,h=100,$fn=20); translate([0,0,-50])cylinder(d=3.5,h=100,$fn=20); } } module top(){ union(){ translate([(W/2+H*1.5),8,-C])cube([H,6,H*2],true); translate([(W/2+H*1.5),-8,-C])cube([H,6,H*2],true); translate([-(W/2+H*1.5),8,-C])cube([H,6,H*2],true); translate([-(W/2+H*1.5),-8,-C])cube([H,6,H*2],true); difference(){ translate([0,0,-C/2+7+H+0.5])cube([W+H*4,L+H*4,C+H*2+15],true); translate([0,0,-C/2+7.5])cube([W+H*2,L+H*2,C+H*2+15],true); translate([-12,-10,-C/2+7.5-10])cube([12,L,C+H*2+15],true); translate([6,-10,-C/2+7.5-13])cube([14,L,C+H*2+15],true); translate([-4,10,-C/2+7.5])cube([W-20,L,C+H*2+15],true); // for (i=[0:20:180]){ // translate([0,0,13])rotate([0,45,i])cube([3,100,3],true); // } cylinder(d=5.5,h=100,$fn=20); difference(){ cylinder(d=20+H*2,h=100,$fn=20); cylinder(d=20,h=100,$fn=20); } difference(){ cylinder(d=30+H*2,h=100,$fn=20); cylinder(d=30,h=100,$fn=20); } difference(){ cylinder(d=40+H*2,h=100,$fn=20); cylinder(d=40,h=100,$fn=20); } } translate([0,15,17.25])cube([H*2,20,H],true); rotate([0,0,120])translate([0,15,17.25])cube([H*2,20,H],true); rotate([0,0,240])translate([0,15,17.25])cube([H*2,20,H],true); } } module board(){ difference(){ translate([0,0,H/2])cube([W, L, H],true); translate([(W/2-D),(L/2-D),-C])cylinder(d=D,h=C*2+H,$fn=20); translate([(W/2-D),-(L/2-D),-C])cylinder(d=D,h=C*2+H,$fn=20); translate([-(W/2-D),(L/2-D),-C])cylinder(d=D,h=C*2+H,$fn=20); translate([-(W/2-D),-(L/2-D),-C])cylinder(d=D,h=C*2+H,$fn=20); } } module bottom(){ difference(){ union(){ boardMount(T, W, L, H, D, C, true); translate([0,0,-C-H/2])cube([W+H*4,L+H*4,H],true); translate([-12,-W/2-C-T,-C/2])cube([12-T*2,H,C],true); translate([-4,W/2+C+T,-C/2])cube([W-20-2*T,H,C],true); } translate([(W/2+2*H-4*T),8,-C-H/2])cube([H+T*2+0.002,6+T*4,H*2],true); translate([(W/2+2*H-4*T),-8,-C-H/2])cube([H+T*2+0.002,6+T*4,H*2],true); translate([-(W/2+2*H-4*T),8,-C-H/2])cube([H+T*2+0.002,6+T*4,H*2],true); translate([-(W/2+2*H-4*T),-8,-C-H/2])cube([H+T*2+0.002,6+T*4,H*2],true); intersection(){ for (i=[0:1:20]){ translate([-30+(i*H*2),0,0])rotate([0,0,20])cube([H,L-C,10],true); } translate([0,0,-C-H/2])cube([W-H*2-D*2-H/2,L-H*2-D*2-H/2,H*2],true); } } } module boardMount(T, W, L, H, D, C, frame){ union(){ translate([(W/2-D),(L/2-D),-C])cylinder(d=D+2,h=C,$fn=20); translate([(W/2-D),-(L/2-D),-C])cylinder(d=D+2,h=C,$fn=20); translate([-(W/2-D),(L/2-D),-C])cylinder(d=D+2,h=C,$fn=20); translate([-(W/2-D),-(L/2-D),-C])cylinder(d=D+2,h=C,$fn=20); translate([(W/2-D),(L/2-D),-C])cylinder(d=D-2*T,h=C*2+H,$fn=20); translate([(W/2-D),-(L/2-D),-C])cylinder(d=D-2*T,h=C*2+H,$fn=20); translate([-(W/2-D),(L/2-D),-C])cylinder(d=D-2*T,h=C*2+H,$fn=20); translate([-(W/2-D),-(L/2-D),-C])cylinder(d=D-2*T,h=C*2+H,$fn=20); if (frame) difference(){ translate([0,0,-C-H/2])cube([W,L,H],true); translate([0,0,-C-H])cube([W-D*3,L-D*3,H*3],true); } } }