// Blindendomino
// 2014-01-22 V1
// by Stratum 0
// License: WTF

// **************************************
// ** Dominos bitte *massiv* drucken!  **
// **************************************

$fn=20;
LangeKante=40;
KurzeKante=LangeKante/2;
Hoehe=LangeKante/8;
Ausschnitt=15;
Kerbe=2;
Punktpos=LangeKante/2-Kerbe;
Punkthoehe=Kerbe;
Punktbasis=2;
Punktspitze=0;
Punktabstand=4;
Rechts=1;
Links=-1;
Abstand=2;

//MyDomino();


//module MyDomino()
{


for (i = [1:6])
     {
     for (j = [1:6])
          {
          translate([(LangeKante+Abstand)*i+Abstand,(KurzeKante+Abstand)*j,0])  CutDomino();
          translate([(LangeKante+Abstand)*i+Abstand,(KurzeKante+Abstand)*j,0])  CreateValue("purple", i, Links);
          translate([(LangeKante+Abstand)*i+Abstand,(KurzeKante+Abstand)*j,0])  CreateValue("pink", j, Rechts);
          } // End For J
     } // End For I
} // End Module


module CutDomino()
{
difference()
     {
     // Basisdomino erstellen
     cube([LangeKante, KurzeKante, Hoehe], center=true);

     // Ausschnitt für Einkerbungen erstellen
     // Rechte Seite

     color("lightblue") translate ([LangeKante/4,0,Kerbe])  cube([Ausschnitt, Ausschnitt, Kerbe*2],center=true);

     // Ausschnitt für Einkerbungen erstellen
     // Linke Seite

     color("blue") translate ([-LangeKante/4,0,Kerbe])  cube([Ausschnitt, Ausschnitt,Kerbe*2],center=true);

     };// End Difference
}; // End Module


// Punkte hinzufügen

module CreateValue(Farbe, Value, Seite)
{
     if (Value==1)
     {
          punkt(Farbe, 8, Seite);
     }

     if (Value==2)
     {
          punkt(Farbe, 1, Seite);
          punkt(Farbe, 6, Seite);
     }

     if (Value==3)
     {
          punkt(Farbe, 1, Seite);
          punkt(Farbe, 8, Seite);
          punkt(Farbe, 6, Seite);
     }

     if (Value==4)
     {
          punkt(Farbe, 1, Seite);
          punkt(Farbe, 3, Seite);
          punkt(Farbe, 4, Seite);
          punkt(Farbe, 6, Seite);
     }

     if (Value==5)
     {
          punkt(Farbe, 1, Seite);
          punkt(Farbe, 3, Seite);
          punkt(Farbe, 8, Seite);
          punkt(Farbe, 4, Seite);
          punkt(Farbe, 6, Seite);
     }

     if (Value==6)
     {
          punkt(Farbe, 1, Seite);
          punkt(Farbe, 2, Seite);
          punkt(Farbe, 3, Seite);
          punkt(Farbe, 4, Seite);
          punkt(Farbe, 5, Seite);
          punkt(Farbe, 6, Seite);

     }
};





module punkt(Farbe,PunktPos,Seite)
{

if (PunktPos==1) 
     {
          color(Farbe) 
               translate([LangeKante/4*Seite-Punktabstand,Punktabstand,Kerbe*0])  
                    cylinder(Punkthoehe,Punktbasis,Punktspitze,center=yes);
     }


if (PunktPos==2) 
     {
          color(Farbe) 
               translate([LangeKante/4*Seite-Punktabstand,0,Kerbe*0])  
                    cylinder(Punkthoehe,Punktbasis,Punktspitze,center=yes);
     }


if (PunktPos==3) 
     {
          color(Farbe) 
               translate([LangeKante/4*Seite-Punktabstand,-Punktabstand,Kerbe*0])  
                    cylinder(Punkthoehe,Punktbasis,Punktspitze,center=yes);
     }


if (PunktPos==4) 
     {
          color(Farbe) 
               translate([LangeKante/4*Seite+Punktabstand,+Punktabstand,Kerbe*0])  
                    cylinder(Punkthoehe,Punktbasis,Punktspitze,center=yes);
     }


if (PunktPos==5) 
     {
          color(Farbe) 
               translate([LangeKante/4*Seite+Punktabstand,0,Kerbe*0])  
                    cylinder(Punkthoehe,Punktbasis,Punktspitze,center=yes);
     }


if (PunktPos==6) 
     {
          color(Farbe) 
               translate([LangeKante/4*Seite+Punktabstand,-Punktabstand,Kerbe*0])  
                    cylinder(Punkthoehe,Punktbasis,Punktspitze,center=yes);
     }


if (PunktPos==7) 
     {
          color(Farbe) 
               translate([LangeKante/4*Seite,Punktabstand,Kerbe*0])  
                    cylinder(Punkthoehe,Punktbasis,Punktspitze,center=yes);
     }


if (PunktPos==8) 
     {
          color(Farbe) 
               translate([LangeKante/4*Seite,0,Kerbe*0])  
                    cylinder(Punkthoehe,Punktbasis,Punktspitze,center=yes);
     }


if (PunktPos==9) 
     {
          color(Farbe) 
               translate([LangeKante/4*Seite,-Punktabstand,Kerbe*0])  
                    cylinder(Punkthoehe,Punktbasis,Punktspitze,center=yes);
     }

};