20. Anhang

1.7.1 erste Übung

translate([-10,0,0])
  cube(5);
translate([-10,10,0])
  cube(5);
translate([-10,20,0])
  cube(5);
translate([0,0,0])
  cube(5);
translate([0,10,0])
  cube(5);
translate([0,20,0])
  cube(5);
translate([10,0,0])
  cube(5);
translate([10,10,0])
  cube(5);
translate([10,20,0])
  cube(5);

1.7.2 zweite Übung

translate([0,0,0])
  cube(5);
translate([10,0,-10])
  cube([5,5,10]);
translate([20,0,-15])
  cube(5);
translate([0,10,5])
  cube([5,5,10]);
translate([0,20,15])
  cube(5);

2.4.1 erste Farben-Übung

color("red")
  translate([0,0,0])
    cube(5);
color("blue")
  translate([0.5,1,5])
    cube(5);
color("fuchsia")
  translate([-0.5,-0.2,10])
    cube(5);
color("yellow")
  translate([0.3,0.2,15])
    cube(5);
color("gray")
  translate([-0.1,-0.2,20])
    cube(5);
color("maroon")
  translate([0.5,0.5,25])
    cube(5);
color("green")
  translate([-0.1,0,30])
    cube(5);
color("lime")
  translate([0.4,0.4,35])
    cube(5);
color("teal")
  translate([0,0,40])
    cube(5);

2.4.2 zweite Farben-Übung

color("#123456",0.5)
  translate([0,0,0])
    cube(5);
color([100,149,237]/255,0.5)
  translate([0.5,1,5])
    cube(5);
color("#987654",0.5)
  translate([-0.5,-0.2,10])
    cube(5);
color([255,215,0]/255,0.5)
  translate([0.3,0.2,15])
    cube(5);
color([139,0,139]/255,0.5)
  translate([-0.1,-0.2,20])
    cube(5);
color([50,205,50]/255,0.5)
  translate([0.5,0.5,25])
    cube(5);
color([178,34,34]/255,0.5)
  translate([-0.1,0,30])
    cube(5);
color("#458723",0.5)
  translate([0.4,0.4,35])
    cube(5);
color([255,222,173]/255,0.5)
  translate([0,0,40])
    cube(5);

3.5.1 Rahmenwürfel

difference() {
  color("green")
    cube([20,20,20]); // Basiswürfel

  translate([3,3,-0.1]) {
    color("yellow")
      cube([14,14,20.2]); // z Achse
  }
  translate([-0.1,3,3]) {
    color("blue")
      cube([20.2,14,14]); // x Achse
  }
  translate([3,-0.1,3]) {
    color("red")
      cube([14,20.2,14]); // y Achse
  }
}

3.5.2 weiterer Würfel aber mit Vertiefungen

difference() {
  color("green")
    cube([20,20,20]); // Basiswürfel

  color("yellow") {
    translate([3,3,-0.1])
        cube([14,14,1.1]); // z Achse
    translate([3,3,19])
      color("yellow")
        cube([14,14,2]); // z Achse
  }
  color("blue") {
    translate([-0.1,3,3])
        cube([1.1,14,14]); // x Achse
    translate([19,3,3])
      color("blue")
        cube([1.1,14,14]); // x Achse
  }
  translate([3,-0.1,3]) {
    color("red")
      cube([14,20.2,14]); // y Achse
  }
}

4.7.1 Löcher in Bretter bohren

// Zylinder
$fn=60; // Auflösung von Kreisen

translate([10,10,0]) {
  difference() {
    color("burlywood")
      cube([40,80,5]);
      
     translate([6,6,-0.1]) {
      linear_extrude(6)
          circle(3);
     }
     translate([40-6,6,-0.1]) {
      linear_extrude(6)
          circle(3);
     }
     translate([6,80-6,-0.1]) {
      linear_extrude(6)
          circle(3);
     }
     translate([40-6,80-6,-0.1]) {
      linear_extrude(6)
          circle(3);
     }
   }
}

5.3 weitere Löcher bohren

// drehen
$fn=60;

difference() {
  color("lime")
  translate([0,0,0])
     cube([20,20,20]);

  color("red")
    translate([0,0,10])
      rotate([0,90,45])
        translate([0,0,-1])
          linear_extrude(30)
            circle(6);
          
}

6 Kombi-Cube

$fn=60;

difference() {
  // Basiswürfel
  color("green")
    cube([20,20,20]);
  // Hohlraum
  color("red")
    translate([2,2,2])
      cube([16,16,16]);
  // minus
  color("yellow")
    translate([5,-0.1,9])
        cube([10,3,2]); //
  // plus
  color("blue") {
    translate([5,17.9,9])
        cube([10,3,2]); //
    translate([9,17.9,5])
        cube([2,3,10]); //
  }
  // division
  color("magenta") {
    rotate([0,90,0])
      translate([-14,10,17.9])
        linear_extrude(3)
          circle(2);
    rotate([0,90,0])
      translate([-6,10,17.9])
        linear_extrude(3)
          circle(2);
  }
  // fünfeck
  color("aqua")
    translate([10,10,-0.1])
      linear_extrude(3)
          circle(7,$fn=5);
  // dreieck
  color("aqua")
    translate([8.5,10,17.9])
      linear_extrude(3)
          circle(7,$fn=3);
  // multiplikation einfach
  color("yellow")
    translate([0,10,10]) {
      rotate([0,45,90]) {
        cube([10,5,2],true);
        cube([2,5,10],true);
      }
    }
} // Ende von difference

8.2 Beispiel mit der Schale

lang=20;
breit=10;
hoch=3;
wand=1;
boden=2;

difference(){
  color("green")
    cube([lang,breit,hoch]); // Bodenplatte
  
  color("red")
    translate([wand,wand,boden])
    cube([lang-wand-wand,breit-wand-wand,hoch]); // Vertiefung
}

9.1 Schachfigur Bauer

$fn=40; // Auflösung von Kreisen
skale=1; // aktuell 1 kann aber später beliebig verändert werden

  color("green") {
    union(){
      // Boden
      linear_extrude(skale*3)
        circle(skale*5.5);
      // Kegel
      translate([0,0,skale*2.9]) {
        cylinder(skale*12,skale*5.5,skale*3);
      }
      // Kugel
      translate([0,0,skale*18.5]) {
        sphere(r = skale*4.9);
      }
    }
  }

9.2 Schachfigur Turm

$fn=40; // Auflösung von Kreisen
skale=1; // aktuell 1 kann aber später beliebig verändert werden

sockel=7.5; // Radius Sockel
ring=6; // Radius Ring oben
rand=1; // Dicke des Randes

r_unten=5.5; // Turmradius unten
r_oben=4.8; // Turmradius oben

z_sockel=2; // Höhe Sockel
z_erster=2; // Höhe erster Kegel
z_turm=12; // Höhe Turmteil
z_zweiter=2; // Höhe zweiter Kegel
z_ring=5; // Höhe Ring oben

guck=2; // Schiessscharten-Breite

//Summe für die gesamte Turmhöhe
turm=z_sockel+z_erster+z_turm+z_zweiter+z_ring;

color("green") {
  difference() {
    union(){
      // Boden
      linear_extrude(skale*z_sockel)
        circle(skale*sockel);
      // Kegel 1
      translate([0,0,skale*z_sockel-0.1])
        cylinder(skale*z_erster+0.1,skale*sockel,skale*r_unten);
      // Kegel 2
      translate([0,0,skale*(z_sockel+z_erster)-0.1])
        cylinder(skale*z_turm+0.1,skale*r_unten,skale*r_oben);
      // Kegel 3
      translate([0,0,skale*(z_sockel+z_erster+z_turm)-0.1])
        cylinder(skale*(z_zweiter+0.1),skale*r_oben,skale*ring);
      // Turmkopf
      translate([0,0,skale*(turm-z_ring)-0.1])
        linear_extrude(skale*z_ring)
          circle(skale*ring);
    }
    // Turmkopf innen
    translate([0,0,skale*(turm-guck)])
      linear_extrude(skale*guck+0.1)
        circle(skale*(ring-rand));
    // Guckloch
    translate([skale*-(ring+0.1),skale*-(guck/2),skale*(turm-guck)])
      cube([skale*(ring*2+0.2),skale*guck,skale*guck+0.1]);
    // Guckloch 90Grad
    rotate([0,0,90])
      translate([skale*-(ring+0.1),skale*-(guck/2),skale*(turm-guck)])
        cube([skale*(ring*2+0.2),skale*2,skale*2]);
  }
}

10.1 Platte mit gerundeten Ecken

$fn=60; // Auflösung von Kreisen
lang=80;
breit=40;
dick=5;

rundung=3;

difference() {
  linear_extrude(dick) {
    hull() {
      translate([rundung,rundung,0])
        circle(rundung);
      translate([breit-rundung,rundung,0])
        circle(rundung);
      translate([breit-rundung,lang-rundung,0])
        circle(rundung);
      translate([rundung,lang-rundung,0])
        circle(rundung);
    }
  }
  // hier folgen die Löcher
  loch=3;
  delta=2;
  // erstes Loch
  translate([delta+loch,delta+loch,-0.1])
    linear_extrude(dick+0.2)
        circle(loch);
  translate([breit-delta-loch,delta+loch,-0.1])
    linear_extrude(dick+0.2)
        circle(loch);
  translate([breit-delta-loch,lang-delta-loch,-0.1])
    linear_extrude(dick+0.2)
        circle(loch);
  translate([delta+loch,lang-delta-loch,-0.1])
    linear_extrude(dick+0.2)
        circle(loch);
}

11.1 Rubi Würfel

lang=20;
delta=2;
n=4;

for (x = [0:1:n]) {
  for (y = [0:1:n]) {
    for (z = [0:1:n]) {
      translate([x*(lang+delta),y*(lang+delta),z*(lang+delta)])
        cube([lang,lang,lang]);
    }
  }
}

11.2 Rad mit Speichen

$fn=60;
r_felge=80; // Radius des Rades
felge=3; // Dicke der Felge
z_hoch=5; // Höhe des Rades
r_loch=2; // Radius Loch in der Nabe
r_speichen=2; // Radius Speichen

// Nabe mit Speichen
difference() {
  union() {
    // ganze Felge
    difference() {
      translate([0,0,0])
        linear_extrude(z_hoch)
          circle(r_felge);
      translate([0,0,-0.1])
        linear_extrude(z_hoch+0.2)
          circle(r_felge-felge);
    }
    // ganze Nabe
    r_nabe=5; // Radius Nabe

    translate([0,0,0])
      linear_extrude(z_hoch)
        circle(r_nabe);
    // Speichen
    n=10; // Anzahl Speichen
    delta=360/n; // Kreisaufteilung

    for (i = [0:1:n-1]) {
      translate([0,0,0])
        rotate([0,90,i*delta])
          linear_extrude(r_felge)
            circle(r_speichen);
    }
  }
  // Loch
  translate([0,0,-0.1])
    linear_extrude(z_hoch+0.2)
      circle(r_loch);
  // Scheibe unterhalb von z
  translate([0,0,-r_speichen-0.1])
    linear_extrude(r_speichen+0.1)
      circle(r_felge+0.1);
}

12.1 Schachbrett

$fn=60;
feld=20;
dick=2;

for (iy = [0:1:7]) {
  for (i = [0:1:3]) {
    if (iy%2 == 0) {
      color("black")
        translate([i*2*feld,iy*feld,0])
          cube([feld,feld,dick]);
      color("white")
        translate([i*2*feld+feld,iy*feld,0])
          cube([feld,feld,dick]);
    } else {
      color("white")
        translate([i*2*feld,iy*feld,0])
          cube([feld,feld,dick]);
      color("black")
        translate([i*2*feld+feld,iy*feld,0])
          cube([feld,feld,dick]);
    }
  }
}

13.1 Schachbrett

$fn=60;
feld=20;
dick=2;
skale=1;

//----------------------------------------
schachbrett();
for (i = [0:1:7]) {
  bauer((i*feld)+(feld/2),(1*feld)+(feld/2),dick,"white");
}
for (i = [0:1:7]) {
  bauer((i*feld)+(feld/2),(6*feld)+(feld/2),dick,"dimgray");
}
turm(1,1,"white");
turm(8,1,"white");
turm(1,8,"dimgray");
turm(8,8,"dimgray");

//----------------------------------------
module schachbrett() {
  for (iy = [0:1:7]) {
    for (i = [0:1:3]) {
      if (iy%2 == 0) {
        color("black")
          translate([i*2*feld,iy*feld,0])
            cube([feld,feld,dick]);
        color("white")
          translate([i*2*feld+feld,iy*feld,0])
            cube([feld,feld,dick]);
      } else {
        color("white")
          translate([i*2*feld,iy*feld,0])
            cube([feld,feld,dick]);
        color("black")
          translate([i*2*feld+feld,iy*feld,0])
            cube([feld,feld,dick]);
      }
    }
  }
}
//----------------------------------------
module bauer(x,y,z,farbe) {
  translate([x,y,z]) {
    color(farbe) {
      union(){
        // Boden
        linear_extrude(skale*3)
          circle(skale*5.5);
        // Kegel
        translate([0,0,skale*2.9]) {
          cylinder(skale*12,skale*5.5,skale*3);
        }
        // Kugel
        translate([0,0,skale*18.5]) {
          sphere(r = skale*4.9);
        }
      }
    }
  }
}
//----------------------------------------
sockel=7.5; // Radius Sockel
ring=6; // Radius Ring oben
rand=1; // Dicke des Randes
r_unten=5.5; // Turmradius unten
r_oben=4.8; // Turmradius oben
z_sockel=2; // Höhe Sockel
z_erster=2; // Höhe erster Kegel
z_turm=12; // Höhe Turmteil
z_zweiter=2; // Höhe zweiter Kegel
z_ring=5; // Höhe Ring oben
guck=2; // Schiessscharten-Breite

//Summe für die gesamte Turmhöhe
turm=z_sockel+z_erster+z_turm+z_zweiter+z_ring;

module turm(x,y,farbe) {
  translate([(x-1)*feld+feld/2,(y-1)*feld+feld/2,dick]) {
    color(farbe) {
      difference() {
        union(){
          // Boden
          linear_extrude(skale*z_sockel)
            circle(skale*sockel);
          // Kegel 1
          translate([0,0,skale*z_sockel-0.1])
            cylinder(skale*z_erster+0.1,skale*sockel,skale*r_unten);
          // Kegel 2
          translate([0,0,skale*(z_sockel+z_erster)-0.1])
            cylinder(skale*z_turm+0.1,skale*r_unten,skale*r_oben);
          // Kegel 3
          translate([0,0,skale*(z_sockel+z_erster+z_turm)-0.1])
            cylinder(skale*(z_zweiter+0.1),skale*r_oben,skale*ring);
          // Turmkopf
          translate([0,0,skale*(turm-z_ring)-0.1])
            linear_extrude(skale*z_ring)
              circle(skale*ring);
        }
        // Turmkopf innen
        translate([0,0,skale*(turm-guck)])
          linear_extrude(skale*guck+0.1)
            circle(skale*(ring-rand));
        // Guckloch
        translate([skale*-(ring+0.1),skale*-(guck/2),skale*(turm-guck)])
          cube([skale*(ring*2+0.2),skale*guck,skale*guck+0.1]);
        // Guckloch 90Grad
        rotate([0,0,90])
          translate([skale*-(ring+0.1),skale*-(guck/2),skale*(turm-guck)])
            cube([skale*(ring*2+0.2),skale*2,skale*2]);
      }
    }
  }
}
//----------------------------------------

14.1 Italienische_Eröffnung.scad

use <G:/3d/OpenSCAD/Verschiedenes/Schach/figuren_library.scad>

//----------------------------------------
schachbrett();
// Italienische Eröffnung
bauer(1,2,"white");
bauer(2,2,"white");
bauer(3,2,"white");
bauer(4,2,"white");
bauer(5,4,"white");
bauer(6,2,"white");
bauer(7,2,"white");
bauer(8,2,"white");
turm(1,1,"white");
turm(8,1,"white");
pferd(2,1,"white");
lauf(3,1,"white");
dame(4,1,"white");
king(5,1,"white");
lauf(3,4,"white");
pferd(6,3,"white");

bauer(1,7,"dimgray");
bauer(2,7,"dimgray");
bauer(3,7,"dimgray");
bauer(4,7,"dimgray");
bauer(5,5,"dimgray");
bauer(6,7,"dimgray");
bauer(7,7,"dimgray");
bauer(8,7,"dimgray");
turm(1,8,"dimgray");
turm(8,8,"dimgray");
pferd(3,6,"dimgray");
lauf(3,8,"dimgray");
dame(4,8,"dimgray");
king(5,8,"dimgray");
lauf(6,8,"dimgray");
pferd(7,8,"dimgray");

14.2 figuren_library.scad

$fn=60;
feld=20;
dick=2;
skale=1;

//----------------------------------------
module schachbrett() {
  for (iy = [0:1:7]) {
    for (i = [0:1:3]) {
      if (iy%2 == 0) {
        color("black")
          translate([i*2*feld,iy*feld,0])
            cube([feld,feld,dick]);
        color("white")
          translate([i*2*feld+feld,iy*feld,0])
            cube([feld,feld,dick]);
      } else {
        color("white")
          translate([i*2*feld,iy*feld,0])
            cube([feld,feld,dick]);
        color("black")
          translate([i*2*feld+feld,iy*feld,0])
            cube([feld,feld,dick]);
      }
    }
  }
}
//----------------------------------------
module bauer(x,y,farbe) {
  translate([(x-1)*feld+feld/2,(y-1)*feld+feld/2,dick]) {
    color(farbe) {
      union(){
        // Boden
        linear_extrude(skale*3)
          circle(skale*5.5);
        // Kegel
        translate([0,0,skale*2.9]) {
          cylinder(skale*12,skale*5.5,skale*3);
        }
        // Kugel
        translate([0,0,skale*18.5]) {
          sphere(r = skale*4.9);
        }
      }
    }
  }
}
//----------------------------------------
module pferd(x,y,farbe) {
  translate([(x-1)*feld+feld/2,(y-1)*feld+feld/2,dick+skale*10]) {
    color(farbe) {
      cube([skale*5.5,skale*10,skale*20],true);
    }
  }
}
//----------------------------------------
module lauf(x,y,farbe) {
  translate([(x-1)*feld+feld/2,(y-1)*feld+feld/2,dick]) {
    color(farbe) {
      // Boden
      linear_extrude(skale*3)
        circle(skale*5.5);
      // Kegel
      translate([0,0,skale*2.9]) {
        cylinder(skale*18,skale*5.5,skale*2);
      }

    }
  }
}
//----------------------------------------
module dame(x,y,farbe) {
  translate([(x-1)*feld+feld/2,(y-1)*feld+feld/2,dick]) {
    color(farbe) {
      // Boden
      linear_extrude(skale*3)
        circle(skale*5.5);
      // Kegel
      translate([0,0,skale*2.9]) {
        cylinder(skale*25,skale*5.5,skale*2);
      }
    }
  }
}
//----------------------------------------
module king(x,y,farbe) {
  translate([(x-1)*feld+feld/2,(y-1)*feld+feld/2,dick]) {
    color(farbe) {
      // Kegel
      translate([0,0,skale*2.9]) {
        cylinder(skale*28,skale*5.5,skale*5.5);
      }
    }
  }
}
//----------------------------------------
sockel=7.5; // Radius Sockel
ring=6; // Radius Ring oben
rand=1; // Dicke des Randes
r_unten=5.5; // Turmradius unten
r_oben=4.8; // Turmradius oben
z_sockel=2; // Höhe Sockel
z_erster=2; // Höhe erster Kegel
z_turm=12; // Höhe Turmteil
z_zweiter=2; // Höhe zweiter Kegel
z_ring=5; // Höhe Ring oben
guck=2; // Schiessscharten-Breite

//Summe für die gesamte Turmhöhe
turm=z_sockel+z_erster+z_turm+z_zweiter+z_ring;

module turm(x,y,farbe) {
  translate([(x-1)*feld+feld/2,(y-1)*feld+feld/2,dick]) {
    color(farbe) {
      difference() {
        union(){
          // Boden
          linear_extrude(skale*z_sockel)
            circle(skale*sockel);
          // Kegel 1
          translate([0,0,skale*z_sockel-0.1])
            cylinder(skale*z_erster+0.1,skale*sockel,skale*r_unten);
          // Kegel 2
          translate([0,0,skale*(z_sockel+z_erster)-0.1])
            cylinder(skale*z_turm+0.1,skale*r_unten,skale*r_oben);
          // Kegel 3
          translate([0,0,skale*(z_sockel+z_erster+z_turm)-0.1])
            cylinder(skale*(z_zweiter+0.1),skale*r_oben,skale*ring);
          // Turmkopf
          translate([0,0,skale*(turm-z_ring)-0.1])
            linear_extrude(skale*z_ring)
              circle(skale*ring);
        }
        // Turmkopf innen
        translate([0,0,skale*(turm-guck)])
          linear_extrude(skale*guck+0.1)
            circle(skale*(ring-rand));
        // Guckloch
        translate([skale*-(ring+0.1),skale*-(guck/2),skale*(turm-guck)])
          cube([skale*(ring*2+0.2),skale*guck,skale*guck+0.1]);
        // Guckloch 90Grad
        rotate([0,0,90])
          translate([skale*-(ring+0.1),skale*-(guck/2),skale*(turm-guck)])
            cube([skale*(ring*2+0.2),skale*2,skale*2]);
      }
    }
  }
}
//----------------------------------------

15.4 Schachbrett mit Beschriftung für die Datei figuren_library.scad

//----------------------------------------
module schachbrett() {
  // Rahmen um das Brett
  difference() {
    translate([-feld,-feld,0])
      cube([feld*10,feld*10,dick]);
    translate([0,0,-0.1])
      cube([feld*8,feld*8,dick+0.2]);
    // A,B,C...
    t_font="Arial:style=Bold";
    t_abc = ["A","B","C","D","E","F","G","H"];
    for (it = [0:1:7]) {
      translate([it*feld+(feld/2),-feld/2,-0.1])
        linear_extrude(skale*dick+1)
          text(t_abc[it],font=t_font,valign="center",halign="center");
    }
    // 1,2,3..
    t_num = ["1","2","3","4","5","6","7","8"];
    for (it = [0:1:7]) {
      translate([-feld/2,it*feld+(feld/2),-0.1])
        linear_extrude(skale*dick+1)
          text(t_num[it],font=t_font,valign="center",halign="center");
    }
  }
  //Schachfelder
  for (iy = [0:1:7]) {
    for (i = [0:1:3]) {
      if (iy%2 == 0) {
        color("black")
          translate([i*2*feld,iy*feld,0])
            cube([feld,feld,dick]);
        color("white")
          translate([i*2*feld+feld,iy*feld,0])
            cube([feld,feld,dick]);
      } else {
        color("white")
          translate([i*2*feld,iy*feld,0])
            cube([feld,feld,dick]);
        color("black")
          translate([i*2*feld+feld,iy*feld,0])
            cube([feld,feld,dick]);
      }
    }
  }
}

16.3 Pferdeprofils gedreht und mit Sockel

module pferd(x,y,farbe,normal) {
  color(farbe) {
    translate([(x-1)*feld+feld/2,(y-1)*feld+feld/2,dick]) {
      union(){
        // Boden
        linear_extrude(skale*z_sockel)
          circle(skale*sockel);
        // Kegel 1
        translate([0,0,skale*z_sockel-0.1])
          cylinder(skale*z_erster+0.1,skale*sockel,skale*r_unten);
        hoch=18;
        feld=hoch/8;
        if (normal) {
          translate([-(skale*2),-(2*feld),skale*(z_sockel+z_sockel)-0.1])
            rotate([90,0,90])
              linear_extrude(skale*4)
                polygon(points=[[0,0],[4*feld,0],[2*feld,3*feld],
                  [2*feld,5*feld],[4*feld,5*feld],[4*feld,6*feld],
                  [2*feld,7*feld],[2*feld,8*feld],[1*feld,7*feld],
                  [1*feld,5*feld],[0,0]]);
        } else {
          translate([(skale*2),(2*feld),skale*(z_sockel+z_sockel)-0.1])
            rotate([90,0,-90])
              linear_extrude(skale*4)
                polygon(points=[[0,0],[4*feld,0],[2*feld,3*feld],
                  [2*feld,5*feld],[4*feld,5*feld],[4*feld,6*feld],
                  [2*feld,7*feld],[2*feld,8*feld],[1*feld,7*feld],
                  [1*feld,5*feld],[0,0]]);
        }
      }
    }
  }
}