module centerBeams() { union(){ rotate(90, [0, 1, 0]) cylinder(h = 55, r1 = 5, r2 = 5, center = true); rotate(90, [1, 0, 0]) cylinder(h = 55, r1 = 5, r2 = 5, center = true); rotate(90, [0, 0, 1]) cylinder(h = 55, r1 = 5, r2 = 5, center = true); translate([ 0, 0, 25 ]) cylinder(h = 5, r1 = 7.5, r2 = 7.5, center = true); translate([ 0, 0, -25 ]) cylinder(h = 5, r1 = 7.5, r2 = 7.5, center = true); translate([ 0,25, 0]) rotate(90, [1, 0, 0]) cylinder(h = 5, r1 = 7.5, r2 = 7.5, center = true); translate([ 0, -25, 0]) rotate(90, [1, 0, 0]) cylinder(h = 5, r1 = 7.5, r2 = 7.5, center = true); translate([ 25, 0, 0 ]) rotate(90, [0, 1, 0]) cylinder(h = 5, r1 = 7.5, r2 = 7.5, center = true); translate([ -25, 0, 0 ]) rotate(90, [0,1, 0]) cylinder(h = 5, r1 = 7.5, r2 = 7.5, center = true); } translate([0,40,0]) rotate(90, [0, 0, 1]) cylinder(h = 60, r1 = 5, r2 = 5, center = true); } module caps() { difference() { translate([ 0, 0, 25 ]) cube([19.7, 19.7, 10], center = true); translate([ 0, 0, 25 ]) cylinder(h = 5.6, r = 7.8, center = true); translate([ 0, 0, 22.5 ]) cylinder(h = 5, r =5.6, center = true); sphere(r=22.3, center = true); } } module edges() { union(){ difference(){ sphere(r=22, center = true); translate([-17.2, 0, 0]) cube([45,45,45], center = true); translate([0, -17.2, 0]) cube([45,45,45], center = true); translate([0, 0, 14.9]) cube([45,45,20], center = true); translate([0, 0, -14.9]) cube([45,45,20], center = true); } difference(){ translate([ 20,20, 0 ]) cube([19.7,19.7,19.7], center = true); sphere(r=22.4, center = true); } translate([10.15, 10.15, -5]) cube([9.7, 9.7, 10]); } } module corners() { union(){ difference(){ sphere(r=22, center = true); translate([-17.2, 0, 0]) cube([45,45,45], center = true); translate([0, -17.2, 0]) cube([45,45,45], center = true); translate([0, 0, -17.2]) cube([45,45,45], center = true); } translate([ 20, 20, 20 ]) cube([19.7,19.7,19.7], center = true); } } module letterG() { rotate([90,0,0]){ union(){ translate([2.1, 2.1, 20]) cylinder(r=1.25, h=21, center = true, $fn = 15); translate([-2.1, 2.1, 20]) cylinder(r=1.25, h=21, center = true, $fn = 15); translate([-2.1, -2.1, 20]) cylinder(r=1.25, h=21, center = true, $fn = 15); translate([0, 1.05, 20]) cube([6.7,2.1,21], center = true); translate([0, 2.1, 20]) cube([4.2,2.5,21], center = true); translate([-1.05, 0, 20]) cube([2.1,6.7,21], center = true); translate([-2.1, 0, 20]) cube([2.5,4.2,21], center = true); translate([5, 0.325, 20 ]) cube([11, 0.75 ,21], center = true); } difference(){ translate([8.7, 8.7, 20]) cube([2.5,2.5,21], center = true); translate([7.35, 7.35, 20]) cylinder(r=2.5, h=21, center = true, $fn = 15); } difference(){ translate([-8.7, 8.7, 20]) cube([2.5,2.5,21], center = true); translate([-7.35, 7.35, 20]) cylinder(r=2.5, h=21, center = true, $fn = 15); } difference(){ translate([-8.7,-8.7, 20]) cube([2.5,2.5,21], center = true); translate([-7.35,-7.35, 20]) cylinder(r=2.5, h=21, center = true, $fn = 15); } } } module letterE() { translate([5,4,-20]) cube([10.5,3.4,21], center=true); translate([5,-4,-20]) cube([10.5,3.4,21], center=true); } module letterB() { rotate([0,90,0]){ difference(){ translate([-8.7, -8.7, 20]) cube([2.5,2.5,21], center = true); translate([-7.35, -7.35, 20]) cylinder(r=2.5, h=21, center = true, $fn = 15); } difference(){ translate([-8.7, 8.7, 20]) cube([2.5,2.5,21], center = true); translate([-7.35, 7.35, 20]) cylinder(r=2.5, h=21, center = true, $fn = 15); } difference(){ translate([-8.7, 0 , 20]) cube([2.5,5,21], center = true); translate([-7.35, -2.5, 20]) cylinder(r=2.5, h=21, center = true, $fn = 15); translate([-7.35, 2.5, 20]) cylinder(r=2.5, h=21, center = true, $fn = 15); } translate([-2.5,4,20]) cylinder(r=1.67,h=21, center=true, $fn=15); translate([-2.5,-4,20]) cylinder(r=1.67, h = 21, center=true, $fn = 15); translate([0,4,20]) cube([5,3.4,21], center = true); translate([0,-4,20]) cube([5,3.4,21], center = true); } } centerBeams(); // Center caps difference(){ rotate(180, [0, 1, 0]) caps(); letterE(); } difference(){ rotate(90, [0, 0, 1]) caps(); translate([0,0,40]) letterE(); } difference(){ rotate(90, [1, 0, 0]) caps(); letterG(); } difference(){ rotate(90, [-1, 0, 0]) caps(); translate([0,40,0]) letterG(); } difference(){ rotate(90, [0, 1, 0]) caps(); letterB(); } difference(){ rotate(90, [0, -1, 0]) caps(); translate([-40,0,0])letterB(); } // Corners difference(){ rotate(90, [0, 0, 1]) rotate(90, [1, 0, 0]) corners(); translate([20, 40, 20]) letterG(); translate([20, 20, 40]) letterE(); translate([0, 20, 20]) letterB(); } difference(){ rotate(180, [0, 0, 1]) rotate(90, [1, 0, 0]) corners(); translate([-20, 40, 20]) letterG(); translate([-20, 20, 40]) letterE(); translate([-40, 20, 20]) letterB(); } difference(){ rotate(270, [0, 0, 1]) rotate(90, [1, 0, 0]) corners(); translate([-20, 0, 20]) letterG(); translate([-20, -20, 40]) letterE(); translate([-40, -20, 20]) letterB(); } difference(){ rotate(360, [0, 0, 1]) rotate(90, [1, 0, 0]) corners(); translate([20, 0, 20]) letterG(); translate([20, -20, 40]) letterE(); translate([0, -20, 20]) letterB(); } difference(){ rotate(90, [0, 0, 1]) rotate(90, [0, 1, 0]) corners(); translate([-20, 40, -20]) letterG(); translate([-20, 20, 0]) letterE(); translate([-40, 20, -20]) letterB(); } difference(){ rotate(180, [0, 0, 1]) rotate(90, [0, 1, 0]) corners(); translate([-20, 0, -20]) letterG(); translate([-20, -20, 0]) letterE(); translate([-40, -20, -20]) letterB(); } difference(){ rotate(270, [0, 0, 1]) rotate(90, [0, 1, 0]) corners(); translate([20, 0, -20]) letterG(); translate([20, -20, 0]) letterE(); translate([0, -20, -20]) letterB(); } difference(){ rotate(360, [0, 0, 1]) rotate(90, [0, 1, 0]) corners(); translate([20, 40, -20]) letterG(); translate([20, 20, 0]) letterE(); translate([0, 20, -20]) letterB(); } // Edges difference(){ rotate(90, [0, 0, 1]) rotate(90, [1, 0, 0]) edges(); translate([0, 40, 20]) letterG(); translate([0, 20, 40]) letterE(); translate([-20, 20, 20]) letterB(); } difference(){ rotate(180, [0, 0, 1]) rotate(90, [1, 0, 0]) edges(); translate([-20, 20, 20]) letterG(); translate([-20, 0, 40]) letterE(); translate([-40, 0, 20]) letterB(); } difference(){ rotate(270, [0, 0, 1]) rotate(90, [1, 0, 0]) edges(); translate([0, 0, 20]) letterG(); translate([0, -20, 40]) letterE(); translate([-20, -20, 20]) letterB(); } difference(){ rotate(360, [0, 0, 1]) rotate(90, [1, 0, 0]) edges(); translate([20, 20, 20]) letterG(); translate([20, 0, 40]) letterE(); translate([0, 0, 20]) letterB(); } difference(){ rotate(90, [0, 0, 1]) rotate(90, [0, 1, 0]) edges(); translate([-20, 20, -20]) letterG(); translate([-20, 0, 0]) letterE(); translate([-40, 0, -20]) letterB(); } difference(){ rotate(180, [0, 0, 1]) rotate(90, [0, 1, 0]) edges(); translate([0, 0, -20]) letterG(); translate([0,-20, 0]) letterE(); translate([-20, -20, -20]) letterB(); } difference(){ rotate(270, [0, 0, 1]) rotate(90, [0, 1, 0]) edges(); translate([20, 20, -20]) letterG(); translate([20, 0, 0]) letterE(); translate([0, 0, -20]) letterB(); } difference(){ rotate(360, [0, 0, 1]) rotate(90, [0, 1, 0]) edges(); translate([0, 40, -20]) letterG(); translate([0,20, 0]) letterE(); translate([-20, 20, -20]) letterB(); } difference(){ rotate(90, [0, 0, 1]) edges(); translate([-20, 40, 0]) letterG(); translate([-20, 20, 20]) letterE(); translate([-40, 20, 0]) letterB(); } difference(){ rotate(180, [0, 0, 1]) edges(); translate([-20, 0, 0]) letterG(); translate([-20,-20, 20]) letterE(); translate([-40, -20, 0]) letterB(); } difference(){ rotate(270, [0, 0, 1]) edges(); translate([20, 0, 0]) letterG(); translate([20,-20, 20]) letterE(); translate([0, -20, 0]) letterB(); } difference(){ rotate(360, [0, 0, 1]) edges(); translate([20, 40, 0]) letterG(); translate([20,20, 20]) letterE(); translate([0, 20, 0]) letterB(); }