// To print with PrusaSlicer you need to generate PartSet 1,2,3 // Start with 1 as the part, add modifier by loading set 2 // Give set 2 modifier: 0% infill, 0 bottom, 0 perim, 4 top // add modifier by loading set 3 // Give set 3 modifier: 100% infill, 4 bottom, 4 perim, 4 top // Print at 0.2 layer, 4 perim, 4 top, 4 bottom // Alphabet is broken up into 4 sets for smaller beds but // a 300x300 can fit all 4 sets. PartSet = 1; // 1: Main body, 2: Magnet voids, 3: bridge overrides AlphabetSet = 1; // 1:(ABCGHIMNO) 2:(DEFJKLPQR) 3:(STUYZ0456) 4:(VWX123789) NumMagnet = 2; // 1 or 2 MagnetW = 7.3; // Width of magnet, leave a little room for inserting MagnetH = 3; // Height of magnet, exact works and prevents pillow AlphanumbericSet = [ [ [-100,100,"A"], [-60,100,"B"], [-20,100,"C"], [-100,60,"G"], [-60,60,"H"], [-20,60,"I"], [-100,20,"M"], [-60,20,"N"], [-20,20,"O"] ], [ [20,100,"D"], [60,100,"E"], [100,100,"F"], [20,60,"J"], [60,60,"K"], [100,60,"L"], [20,20,"P"], [60,20,"Q"], [100,20,"R"] ], [ [-100,-20,"S"], [-60,-20,"T"], [-20,-20,"U"], [-100,-60,"Y"], [-60,-60,"Z"], [-20,-60,"0"], [-100,-100,"4"], [-60,-100,"5"], [-20,-100,"6"] ], [ [20,-20,"V"], [60,-20,"W"], [100,-20,"X"], [20,-60,"1"], [60,-60,"2"], [100,-60,"3"], [20,-100,"7"], [60,-100,"8"], [100,-100,"9"] ] ]; if(PartSet == 1) { for(i = AlphanumbericSet[AlphabetSet-1]) { translate([i[0],i[1],0]) { translate([0,0,0]) cylinder(h=MagnetH+1, r=16, center=false, $fn=128); difference() { translate([0,0,MagnetH+1]) cylinder(h=1, r=16, center=false, $fn=128); translate([0,0,MagnetH+1]) cylinder(h=1, r=14, center=false, $fn=128); } translate([0,0,MagnetH+1]) color("blue") linear_extrude(height = 1) text(i[2], size = 15, valign="center", halign="center", font = "Liberation Sans:style=Bold"); } } } if(PartSet == 2) { for(i = AlphanumbericSet[AlphabetSet-1]) { translate([i[0],i[1],0]) { if(NumMagnet == 2) { translate([0,8,0.4]) cylinder(h=MagnetH, r=MagnetW/2, center=false, $fn=64); translate([0,-8,0.4]) cylinder(h=MagnetH, r=MagnetW/2, center=false, $fn=64); } else { translate([0,0,0.4]) cylinder(h=MagnetH, r=MagnetW/2, center=false, $fn=64); } } } } if(PartSet == 3) { for(i = AlphanumbericSet[AlphabetSet-1]) { translate([i[0],i[1],0]) { translate([0,0,MagnetH+0.4]) cylinder(h=0.6, r=16, center=false, $fn=128); } } }