Close

Translating to openscad

A project log for Braille Compact Printing Press

Compact printing press for nurses, helpers, teachers and anyone else who needs to leave small notes for people who read braille.

haydn-joneshaydn jones 03/23/2017 at 19:390 Comments

With this seeming so popular, i thought I should get to work on the nest version.

I am in the process of moving this design from the inkscape/123d process I was using before to fully parametric Openscad. I haven't inserted the correct braille specs in yet, but this will be easy to adjust. When done it will take just changing a few variables at the top to change between standard/large print as well as being able to specify how many cells wide and how may lines you need. I am also adding optional slip case and drawer. As well as the code I will release a couple of printable STL files based on popular suggestions for the less technical. I also added a variable for your printers tolerance so everything will fit snugly and not waste filament on bad prints.

Here is my code so far....

// frame size
lines=8;
cellsWide=12;
drawer=true;

// measurments
framethickness=3;//border
basethickness=1;//x axis
cellthickness=3;//x axis
cellheight=5;
cellwidth=6;
linespace=2;//space between lines
tolerence=0.3;
dotheight=0.6;
dotdiameter=1;
dotdistancex=2;

// parts
resize(newsize=[(((cellsWide*cellwidth)+(framethickness*basethickness))/(cellsWide*cellwidth))*((cellsWide*cellwidth)+tolerence),(framethickness*2)+(lines*cellheight)+((lines-1)*linespace)*(((lines*cellheight)+(tolerence*lines))/(lines*cellheight)),framethickness+basethickness]) frame();
sleve();
drawer();
translate([0,0,cellthickness+basethickness+10]) fullbar();
translate([0,cellheight+10,cellthickness+basethickness+10]) blankcell();
translate([cellwidth+10,cellheight+10,cellthickness+basethickness+10]) onedot();
translate([(cellwidth*2)+20,cellheight+10,cellthickness+basethickness+10]) twodots();


module frame(){
    module barrepeat(num) {
   for (i = [0 : num-1])
     translate([ 0, i*(cellheight+linespace), 0 ]) children(0);
}
   module notches(){
        module notchrepeat(num2) {
   for (i2 = [0 : num2-1])
     translate([ 0, (i2*(cellheight/3)), 0 ]) children(0);
    }
    notchrepeat(3) rotate([0,90,0]) cylinder(cellwidth*cellsWide,dotdiameter/2,dotdiameter/2);
}
    
    difference() {
    cube([(framethickness*2)+(cellsWide*cellwidth),(framethickness*2)+(lines*cellheight)+((lines-1)*linespace),basethickness+cellthickness]);
        
translate([framethickness,framethickness,basethickness]) {
barrepeat(lines) fullbar(); 
}

translate([framethickness,framethickness+((cellheight/3)/2),basethickness]) {
    barrepeat(lines) notches(); 
        
}}}
module sleve(){
}
module drawer(){
}
module fullbar(){
    cube([cellsWide*cellwidth,cellheight,cellthickness]);
}
module onedot(){
    cube([cellwidth,cellheight/3,cellthickness]);
    translate([(cellwidth-dotdistancex)/2,cellheight/3/2,cellthickness]){
    cylinder(dotheight,dotdiameter/2,dotdiameter/2);
}}
module twodots(){
    cube([cellwidth,cellheight/3,cellthickness]);
    translate([(cellwidth-dotdistancex)/2,cellheight/3/2,cellthickness]){
    cylinder(dotheight,dotdiameter/2,dotdiameter/2);
    translate([dotdistancex,0,0]){
        cylinder(dotheight,dotdiameter/2,dotdiameter/2);
}}}
module blankcell(){
    cube([cellwidth,cellheight,cellthickness]);
}

Discussions