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