Gesellschaftsspiel-Replikator/W6 V1.1: Unterschied zwischen den Versionen
UW (Diskussion | Beiträge) (korr. kommentar) |
UW (Diskussion | Beiträge) (Bugfixes und zusätzliche Seiten) |
||
Zeile 1: | Zeile 1: | ||
− | + | // Kubator 1.12 | |
− | |||
− | |||
// Würfel massiv drucken, um möglichst faire Würfel zu erhalten! | // Würfel massiv drucken, um möglichst faire Würfel zu erhalten! | ||
// Individuelle Einstellungen (die Zahlen können verändert werden, um den Würfel individuellen Wünschen anzupassen) | // Individuelle Einstellungen (die Zahlen können verändert werden, um den Würfel individuellen Wünschen anzupassen) | ||
− | kante=20; | + | kante=20; // Kantenlänge des Würfels (in mm) |
// typisch sind 20 mm oder 25 mm | // typisch sind 20 mm oder 25 mm | ||
Zeile 38: | Zeile 36: | ||
// 26 6 kuglige Punkte | // 26 6 kuglige Punkte | ||
// 27 taktiles Quadrat | // 27 taktiles Quadrat | ||
+ | // 28 Dreieckiger Ausschnitt | ||
+ | // 29 Fünfeckiger Ausschnitt | ||
// 30 ausgeschnittenes X | // 30 ausgeschnittenes X | ||
// 31 taktiles X | // 31 taktiles X | ||
Zeile 43: | Zeile 43: | ||
// 33 ausgeschnittener Stern | // 33 ausgeschnittener Stern | ||
// 34 taktiler Stern | // 34 taktiler Stern | ||
+ | // 35 Sechseckiger Ausschnitt | ||
+ | // 36 Siebeneckiger Ausschnitt | ||
+ | // 37 Achteckiger Ausschnitt | ||
+ | // 38 Taktiles Dreieck | ||
+ | // 39 Taktiler Fünfeck | ||
+ | // 40 Taktiles Sechseck | ||
+ | // 41 Taktiles Siebeneck | ||
+ | // 42 Taktiles Achteck | ||
// hier die Nummern der gewünschten Seiten eintragen | // hier die Nummern der gewünschten Seiten eintragen | ||
Zeile 52: | Zeile 60: | ||
seite_hinten = 26; | seite_hinten = 26; | ||
− | abgerundet = | + | abgerundet = 1; // Aussehen des Würfelkörpers |
// Werte ganzahlig von 0 bis 4 | // Werte ganzahlig von 0 bis 4 | ||
// 0 = keine Abrundung der Ecken und Kanten | // 0 = keine Abrundung der Ecken und Kanten | ||
Zeile 62: | Zeile 70: | ||
abrundungsgroesse = 0.7; // je kleiner desto runder (0.55 <= abrundungsgroesse <= 1.0) | abrundungsgroesse = 0.7; // je kleiner desto runder (0.55 <= abrundungsgroesse <= 1.0) | ||
− | koerperfarbe = " | + | koerperfarbe = "white"; // Farbe des Würfelkörper |
− | kerbenfarbe = " | + | kerbenfarbe = "white"; // Farbe der Ausschnitte |
− | augenfarbe = " | + | augenfarbe = "black"; // Farbe der Augen |
− | punktfarbe = " | + | punktfarbe = "black"; // Farbe der taktilen Punkte |
ausschnittstyp = 1; // 1 = quadratischer Ausschnitt | ausschnittstyp = 1; // 1 = quadratischer Ausschnitt | ||
// 2 = kreisförmiger Ausschnitt | // 2 = kreisförmiger Ausschnitt | ||
+ | // n (n > 2) = n-eckiger Ausschnitt | ||
− | + | kerbe = 2; // Tiefe der ausgeschnittenen Bereiche (in mm) | |
ausschnitt = 13; // Seitenlänge der ausgeschnittenen Bereiche bei quadratischem Ausschnitt(in mm) | ausschnitt = 13; // Seitenlänge der ausgeschnittenen Bereiche bei quadratischem Ausschnitt(in mm) | ||
kreisdurchmesser = 7.5; // Durchmesser des Kreises bei kreisförmigem Ausschnitt (in mm) | kreisdurchmesser = 7.5; // Durchmesser des Kreises bei kreisförmigem Ausschnitt (in mm) | ||
Zeile 83: | Zeile 92: | ||
abstand_kugelpunkte=4; // Abstand der kugligen Punkte (in mm | abstand_kugelpunkte=4; // Abstand der kugligen Punkte (in mm | ||
basis_kugelpunkte=1; // Basisdurchmesser der erhabenen kugligen Punkte (in mm) | basis_kugelpunkte=1; // Basisdurchmesser der erhabenen kugligen Punkte (in mm) | ||
− | // wird auf | + | // wird auf kerbe gesetzt, wenn er kleiner als diese Tiefe |
augenabstand=4.5; // Abstand der Augen von der Mitte der Seiten (in mm) bei Seiten 11 bis 16 | augenabstand=4.5; // Abstand der Augen von der Mitte der Seiten (in mm) bei Seiten 11 bis 16 | ||
Zeile 93: | Zeile 102: | ||
quadgroesse = 8; // Seitenlänge des inneren Quadrates bei Seite 27 (in mm) | quadgroesse = 8; // Seitenlänge des inneren Quadrates bei Seite 27 (in mm) | ||
− | + | //$fn = 70; // je größer desto genauer der Würfel | |
// je größer desto langsamer die Berechnung | // je größer desto langsamer die Berechnung | ||
// für Testzwecke auskommentieren | // für Testzwecke auskommentieren | ||
− | // Kopierbereich (hier | + | // Kopierbereich (hier fertige Vorlagen hineinkopieren) |
+ | |||
// Ende Kopierbereich | // Ende Kopierbereich | ||
+ | seite_unten = 39; | ||
+ | seite_oben = 38; | ||
+ | seite_links = 40; | ||
+ | seite_rechts = 41; | ||
+ | seite_vorne = 42; | ||
+ | seite_hinten = 9; | ||
// Ende der individuellen Einstellungen | // Ende der individuellen Einstellungen | ||
// ab hier nichts verändern | // ab hier nichts verändern | ||
− | |||
r=-kante/2; | r=-kante/2; | ||
r2=(d_auge/2); | r2=(d_auge/2); | ||
tiefe = kerbe * 2; | tiefe = kerbe * 2; | ||
punktpos=kante/2-kerbe; | punktpos=kante/2-kerbe; | ||
− | + | ||
main(); | main(); | ||
Zeile 218: | Zeile 233: | ||
} | } | ||
− | module cut_circle () { | + | module cut_circle (n=0) { |
+ | if (n == 0) { | ||
translate ([0,0,-kante/2]) cylinder(tiefe,kreisdurchmesser,kreisdurchmesser, center=true); | translate ([0,0,-kante/2]) cylinder(tiefe,kreisdurchmesser,kreisdurchmesser, center=true); | ||
+ | } | ||
+ | if (n > 0) { | ||
+ | translate ([0,0,-kante/2]) cylinder(tiefe,kreisdurchmesser,kreisdurchmesser, center=true, $fn=n); | ||
+ | } | ||
+ | |||
} | } | ||
Zeile 288: | Zeile 309: | ||
module add_strich () { | module add_strich () { | ||
− | translate([0,0,- | + | translate ([0,0,-kante/2+kerbe]) cube([strichlaenge, strichdicke, tiefe],center=true); |
} | } | ||
module add_star () { | module add_star () { | ||
− | translate([0,0,- | + | translate([0,0,-kante/2+kerbe]) cube([strichlaenge, strichdicke, tiefe],center=true); |
− | translate([0,0,- | + | translate([0,0,-kante/2+kerbe]) cube([strichdicke, strichlaenge, tiefe],center=true); |
− | translate([0,0,- | + | translate([0,0,-kante/2+kerbe]) rotate([0,0,-45]) cube([strichlaenge, strichdicke, tiefe],center=true); |
− | translate([0,0,- | + | translate([0,0,-kante/2+kerbe]) rotate([0,0,45]) cube([strichlaenge, strichdicke, tiefe],center=true); |
} | } | ||
− | |||
module add_plus () { | module add_plus () { | ||
− | translate([0,0,- | + | translate([0,0,-kante/2+kerbe]) cube([strichlaenge, strichdicke, tiefe],center=true); |
− | translate([0,0,- | + | translate([0,0,-kante/2+kerbe]) cube([strichdicke, strichlaenge, tiefe],center=true); |
} | } | ||
+ | |||
+ | |||
module add_slash () { | module add_slash () { | ||
− | translate([0,0,- | + | translate([0,0,-kante/2+kerbe]) rotate([0,0,-45]) cube([strichlaenge, strichdicke, tiefe],center=true); |
} | } | ||
module add_x () { | module add_x () { | ||
− | translate([0,0,- | + | translate([0,0,-kante/2+kerbe]) rotate([0,0,-45]) cube([strichlaenge, strichdicke, tiefe],center=true); |
− | translate([0,0,- | + | translate([0,0,-kante/2+kerbe]) rotate([0,0,45]) cube([strichlaenge, strichdicke, tiefe],center=true); |
} | } | ||
module add_ring () { | module add_ring () { | ||
translate([0,0,r]) cylinder(tiefe,ringgroesse/2,ringgroesse/2,center=false); | translate([0,0,r]) cylinder(tiefe,ringgroesse/2,ringgroesse/2,center=false); | ||
+ | } | ||
+ | |||
+ | module add_prisma (n=3) { | ||
+ | groesse = strichlaenge / 2.3; | ||
+ | translate([0,0,-kante/2+kerbe]) cylinder(tiefe,groesse,groesse,center=true,$fn=n); | ||
} | } | ||
Zeile 422: | Zeile 449: | ||
if (ausschnittstyp == 1) color(kerbenfarbe) cut_quad (); | if (ausschnittstyp == 1) color(kerbenfarbe) cut_quad (); | ||
if (ausschnittstyp == 2) color(kerbenfarbe) cut_circle (); | if (ausschnittstyp == 2) color(kerbenfarbe) cut_circle (); | ||
+ | if (ausschnittstyp > 2) color(kerbenfarbe) cut_circle (n=ausschnittstyp); | ||
} | } | ||
+ | |||
module cut_weiche(variant) { | module cut_weiche(variant) { | ||
Zeile 452: | Zeile 481: | ||
if (variant == 26) make_ausschnitt(); | if (variant == 26) make_ausschnitt(); | ||
if (variant == 27) make_ausschnitt(); | if (variant == 27) make_ausschnitt(); | ||
+ | if (variant == 28) cut_circle (n=3); | ||
+ | if (variant == 29) cut_circle (n=5); | ||
if (variant == 30) cut_x (); | if (variant == 30) cut_x (); | ||
if (variant == 31) make_ausschnitt(); | if (variant == 31) make_ausschnitt(); | ||
Zeile 457: | Zeile 488: | ||
if (variant == 33) cut_star (); | if (variant == 33) cut_star (); | ||
if (variant == 34) make_ausschnitt(); | if (variant == 34) make_ausschnitt(); | ||
+ | if (variant == 35) cut_circle (n=6); | ||
+ | if (variant == 36) cut_circle (n=7); | ||
+ | if (variant == 37) cut_circle (n=8); | ||
+ | if (variant == 38) make_ausschnitt(); | ||
+ | if (variant == 39) make_ausschnitt(); | ||
+ | if (variant == 40) make_ausschnitt(); | ||
+ | if (variant == 41) make_ausschnitt(); | ||
+ | if (variant == 42) make_ausschnitt(); | ||
} | } | ||
Zeile 488: | Zeile 527: | ||
module add_weiche(variant=0) { | module add_weiche(variant=0) { | ||
− | if (variant == 1) add_pips1 (); // 1 | + | if (variant == 1) add_pips1 (); // 1 keglige Punkt |
if (variant == 2) add_pips2 (); // 2 keglige Punkte | if (variant == 2) add_pips2 (); // 2 keglige Punkte | ||
if (variant == 3) add_pips3 (); // 3 keglige Punkt | if (variant == 3) add_pips3 (); // 3 keglige Punkt | ||
Zeile 507: | Zeile 546: | ||
if (variant == 32) add_ring (); // Taktiler Ring | if (variant == 32) add_ring (); // Taktiler Ring | ||
if (variant == 34) add_star (); // Taktiler Stern | if (variant == 34) add_star (); // Taktiler Stern | ||
+ | if (variant == 38) add_prisma (n=3); // Taktiles Dreieck | ||
+ | if (variant == 39) add_prisma (n=5); // Taktiles Fünfeck | ||
+ | if (variant == 40) add_prisma (n=6); // Taktiles Sechseck | ||
+ | if (variant == 41) add_prisma (n=7); // Taktiles Siebeneck | ||
+ | if (variant == 42) add_prisma (n=8); // Taktiles Achteck | ||
} | } | ||
Zeile 566: | Zeile 610: | ||
add_oben(); | add_oben(); | ||
} | } | ||
− |
Version vom 6. November 2014, 13:22 Uhr
// Kubator 1.12 // Würfel massiv drucken, um möglichst faire Würfel zu erhalten!
// Individuelle Einstellungen (die Zahlen können verändert werden, um den Würfel individuellen Wünschen anzupassen)
kante=20; // Kantenlänge des Würfels (in mm)
// typisch sind 20 mm oder 25 mm
// mögliches Aussehen der Seiten // 0 glatte Seite // 1 1 kegliger Punkt // 2 2 keglige Punkte // 3 3 keglige Punkte // 4 4 keglige Punkte // 5 5 keglige Punkte // 6 6 keglige Punkte // 7 taktiler Strich // 8 taktiles Plus // 9 taktiler Schrägstrich // 10 Quadratischer Ausschnitt // 11 1 Auge // 12 2 Augen // 13 3 Augen // 14 4 Augen // 15 5 Augen // 16 6 Augen // 17 Ausgeschnittener Strich // 18 Ausgeschnittenes Plus-Zeichen // 19 Ausgeschnittener Schrägstrich // 20 Kreisförmiger Ausschnitt // 21 1 kugliger Punkt // 22 2 kuglige Punkte // 23 3 kuglige Punkte // 24 4 kuglige Punkte // 25 5 kuglige Punkte // 26 6 kuglige Punkte // 27 taktiles Quadrat // 28 Dreieckiger Ausschnitt // 29 Fünfeckiger Ausschnitt // 30 ausgeschnittenes X // 31 taktiles X // 32 taktiler Kreis // 33 ausgeschnittener Stern // 34 taktiler Stern // 35 Sechseckiger Ausschnitt // 36 Siebeneckiger Ausschnitt // 37 Achteckiger Ausschnitt // 38 Taktiles Dreieck // 39 Taktiler Fünfeck // 40 Taktiles Sechseck // 41 Taktiles Siebeneck // 42 Taktiles Achteck
// hier die Nummern der gewünschten Seiten eintragen seite_unten = 16; seite_oben = 17; seite_links = 31; seite_rechts = 6; seite_vorne = 0; seite_hinten = 26;
abgerundet = 1; // Aussehen des Würfelkörpers
// Werte ganzahlig von 0 bis 4 // 0 = keine Abrundung der Ecken und Kanten // 1 = Ecken und Kanten sind abgerundet // 2 = nur Ecken sind abgerundet // 3 = Ecken und Kanten fehlen // 4 = Ecken fehlen, Kanten sind abgerundet
abrundungsgroesse = 0.7; // je kleiner desto runder (0.55 <= abrundungsgroesse <= 1.0)
koerperfarbe = "white"; // Farbe des Würfelkörper kerbenfarbe = "white"; // Farbe der Ausschnitte augenfarbe = "black"; // Farbe der Augen punktfarbe = "black"; // Farbe der taktilen Punkte
ausschnittstyp = 1; // 1 = quadratischer Ausschnitt
// 2 = kreisförmiger Ausschnitt // n (n > 2) = n-eckiger Ausschnitt
kerbe = 2; // Tiefe der ausgeschnittenen Bereiche (in mm) ausschnitt = 13; // Seitenlänge der ausgeschnittenen Bereiche bei quadratischem Ausschnitt(in mm) kreisdurchmesser = 7.5; // Durchmesser des Kreises bei kreisförmigem Ausschnitt (in mm)
abstand_kegelpunkte=4; // Abstand der erhabenen kegligen Punkte (in mm) basis_kegelpunkte=1.5; // Basisdurchmesser der erhabenen kegligen Punkte (in mm) kegelspitze=1; // Spitzheit der erhabenen kegligen Punkte (in mm)
// 0 = Kegel, // > 0 Kegelstumpf // Zylinder, wenn gleicher Wert wie basis_kegelpunkte
abstand_kugelpunkte=4; // Abstand der kugligen Punkte (in mm basis_kugelpunkte=1; // Basisdurchmesser der erhabenen kugligen Punkte (in mm) // wird auf kerbe gesetzt, wenn er kleiner als diese Tiefe
augenabstand=4.5; // Abstand der Augen von der Mitte der Seiten (in mm) bei Seiten 11 bis 16 d_auge=3.5; // Durchmesser der Augen (in mm) bei Seiten 11 bis 16
strichdicke = 2.5; // Dicke des Striches bei Seiten 7 - 9,17 - 19, 30, 31, 33, 34 strichlaenge = 11; // Länge des Striches bei Seiten 7 - 9,17 - 19, 30, 31, 33, 34 ringgroesse = 10; // Durchmesser des inneren Kreises bei Seite 32 (in mm) quadgroesse = 8; // Seitenlänge des inneren Quadrates bei Seite 27 (in mm)
//$fn = 70; // je größer desto genauer der Würfel
// je größer desto langsamer die Berechnung // für Testzwecke auskommentieren
// Kopierbereich (hier fertige Vorlagen hineinkopieren)
// Ende Kopierbereich
seite_unten = 39; seite_oben = 38; seite_links = 40; seite_rechts = 41; seite_vorne = 42; seite_hinten = 9;
// Ende der individuellen Einstellungen // ab hier nichts verändern
r=-kante/2; r2=(d_auge/2); tiefe = kerbe * 2; punktpos=kante/2-kerbe;
main();
module body_intersection (body_intersection_size) { difference () {
intersection() {
color(koerperfarbe) cube(size=kante,center=true); color(koerperfarbe) sphere(r=kante*body_intersection_size, center=true);
} color(augenfarbe) CutDice();
} }
module body_union_ecken(kante_kl,eckradius) {
halbe_kante = kante_kl /2; for(r = [0:90:270]) rotate([0,r,0]) for(y = [halbe_kante,-halbe_kante]) translate([halbe_kante,y,halbe_kante]) sphere(eckradius,center=true);
}
module body_union_kanten(kante_kl, eckradius) {
halbe_kante = kante_kl /2; for(r = [0:90:270]) rotate([0,r,0]) for(y = [halbe_kante,-halbe_kante]) translate([halbe_kante,y,0]) cylinder(kante_kl,eckradius,eckradius,center=true); for(r = [0:90:270]) rotate([0,r,0]) translate([halbe_kante,0,halbe_kante]) rotate([90,0,0]) cylinder(kante_kl,eckradius,eckradius,center=true);
}
module body_union_seiten(kante_kl, eckradius) {
for(r = [0:90:270]) rotate([0,r,0]) translate([eckradius,0,0]) cube([kante_kl,kante_kl,kante_kl],center=true); for(y = [eckradius,-eckradius]) translate([0,y,0]) cube([kante_kl,kante_kl,kante_kl],center=true);
}
module body_union(body_union_size)
{
kante_kl = kante * body_union_size; eckradius = (kante - kante_kl) / 2; difference () { union() { body_union_ecken(kante_kl,eckradius); body_union_kanten(kante_kl,eckradius); body_union_seiten(kante_kl,eckradius); } color(augenfarbe) CutDice();
} }
module body_union_ohne_ecken(body_union_size)
{
kante_kl = kante * body_union_size; eckradius = (kante - kante_kl) / 2; difference () { union() { body_union_kanten(kante_kl,eckradius); body_union_seiten(kante_kl,eckradius); } color(augenfarbe) CutDice();
} }
module body_union_ohne_ecken_und_kanten(body_union_size)
{
kante_kl = kante * body_union_size; eckradius = (kante - kante_kl) / 2; difference () { union() { body_union_seiten(kante_kl,eckradius); } color(augenfarbe) CutDice();
} }
module main() {
if (abgerundet == 0) body_intersection (1.0); if (abgerundet == 1) body_union (abrundungsgroesse); if (abgerundet == 2) body_intersection (abrundungsgroesse); if (abgerundet == 3) body_union_ohne_ecken_und_kanten (abrundungsgroesse); if (abgerundet == 4) body_union_ohne_ecken (abrundungsgroesse);
color(punktfarbe) AddPoints();
}
module cut_quad () { translate ([0,0,-kante/2]) cube([ausschnitt, ausschnitt, tiefe],center=true); }
module cut_circle (n=0) { if (n == 0) { translate ([0,0,-kante/2]) cylinder(tiefe,kreisdurchmesser,kreisdurchmesser, center=true); } if (n > 0) { translate ([0,0,-kante/2]) cylinder(tiefe,kreisdurchmesser,kreisdurchmesser, center=true, $fn=n); }
}
module cut_strich () { translate ([0,0,-kante/2]) cube([strichlaenge, strichdicke, tiefe],center=true); }
module cut_slash () { translate ([0,0,-kante/2]) rotate([0,0,-45]) cube([strichlaenge, strichdicke, tiefe],center=true); }
module cut_star () { translate ([0,0,-kante/2]) cube([strichlaenge, strichdicke, tiefe],center=true); translate ([0,0,-kante/2]) cube([strichdicke, strichlaenge, tiefe],center=true); translate ([0,0,-kante/2]) rotate([0,0,-45]) cube([strichlaenge, strichdicke, tiefe],center=true); translate ([0,0,-kante/2]) rotate([0,0,45]) cube([strichlaenge, strichdicke, tiefe],center=true); }
module cut_x () { translate ([0,0,-kante/2]) rotate([0,0,-45]) cube([strichlaenge, strichdicke, tiefe],center=true); translate ([0,0,-kante/2]) rotate([0,0,45]) cube([strichlaenge, strichdicke, tiefe],center=true); }
module cut_plus () { translate ([0,0,-kante/2]) cube([strichlaenge, strichdicke, tiefe],center=true); translate ([0,0,-kante/2]) cube([strichdicke, strichlaenge, tiefe],center=true); }
module cut_pips1 () {
translate([0,0,r]) sphere(r=r2*1.4, center=true);
}
module cut_pips2 () { translate([-augenabstand,augenabstand,r]) sphere(r=r2, center=true); translate([augenabstand,-augenabstand,r]) sphere(r=r2, center=true); }
module cut_pips3 () { translate([-augenabstand,augenabstand,r]) sphere(r=r2, center=true); translate([0,0,r]) sphere(r=r2, center=true); translate([augenabstand,-augenabstand,r]) sphere(r=r2, center=true); }
module cut_pips4 () { translate([-augenabstand,augenabstand,r]) sphere(r=r2, center=true); translate([augenabstand,-augenabstand,r]) sphere(r=r2, center=true); translate([augenabstand,augenabstand,r]) sphere(r=r2, center=true); translate([-augenabstand,-augenabstand,r]) sphere(r=r2, center=true); }
module cut_pips5 () { translate([-augenabstand,augenabstand,r]) sphere(r=r2, center=true); translate([augenabstand,-augenabstand,r]) sphere(r=r2, center=true); translate([0,0,r]) sphere(r=r2, center=true); translate([augenabstand,augenabstand,r]) sphere(r=r2, center=true); translate([-augenabstand,-augenabstand,r]) sphere(r=r2, center=true); }
module cut_pips6 () { translate([-augenabstand,augenabstand,r]) sphere(r=r2, center=true); translate([augenabstand,-augenabstand,r]) sphere(r=r2, center=true); translate([-augenabstand,0,r]) sphere(r=r2, center=true); translate([augenabstand,0,r]) sphere(r=r2, center=true); translate([augenabstand,augenabstand,r]) sphere(r=r2, center=true); translate([-augenabstand,-augenabstand,r]) sphere(r=r2, center=true); }
module add_strich () { translate ([0,0,-kante/2+kerbe]) cube([strichlaenge, strichdicke, tiefe],center=true); }
module add_star () { translate([0,0,-kante/2+kerbe]) cube([strichlaenge, strichdicke, tiefe],center=true); translate([0,0,-kante/2+kerbe]) cube([strichdicke, strichlaenge, tiefe],center=true); translate([0,0,-kante/2+kerbe]) rotate([0,0,-45]) cube([strichlaenge, strichdicke, tiefe],center=true); translate([0,0,-kante/2+kerbe]) rotate([0,0,45]) cube([strichlaenge, strichdicke, tiefe],center=true); }
module add_plus () { translate([0,0,-kante/2+kerbe]) cube([strichlaenge, strichdicke, tiefe],center=true); translate([0,0,-kante/2+kerbe]) cube([strichdicke, strichlaenge, tiefe],center=true); }
module add_slash () { translate([0,0,-kante/2+kerbe]) rotate([0,0,-45]) cube([strichlaenge, strichdicke, tiefe],center=true); }
module add_x () { translate([0,0,-kante/2+kerbe]) rotate([0,0,-45]) cube([strichlaenge, strichdicke, tiefe],center=true); translate([0,0,-kante/2+kerbe]) rotate([0,0,45]) cube([strichlaenge, strichdicke, tiefe],center=true); }
module add_ring () { translate([0,0,r]) cylinder(tiefe,ringgroesse/2,ringgroesse/2,center=false); }
module add_prisma (n=3) {
groesse = strichlaenge / 2.3;
translate([0,0,-kante/2+kerbe]) cylinder(tiefe,groesse,groesse,center=true,$fn=n); }
module add_quad () {
translate([0,0,-tiefe]) cube([quadgroesse, quadgroesse, 3*tiefe],center=true);
// translate([0,0,r]) cube(tiefe,35,35,center=true); }
module add_sphere1 () {
hoehe = kerbe; rho = min (basis_kugelpunkte / 2, hoehe); radius = max((pow(hoehe,2) + pow(rho,2)) / (2 * hoehe),hoehe);
translate([0,0,r+hoehe]) sphere(r=radius, center=true);
}
module add_sphere2 () {
hoehe = kerbe; rho = min (basis_kugelpunkte / 2, hoehe); radius = max((pow(hoehe,2) + pow(rho,2)) / (2 * hoehe),hoehe);
translate([-abstand_kugelpunkte,abstand_kugelpunkte,r+hoehe]) sphere(r=radius, center=true); translate([abstand_kugelpunkte,-abstand_kugelpunkte,r+hoehe]) sphere(r=radius, center=true);
}
module add_sphere3 () {
hoehe = kerbe; rho = min (basis_kugelpunkte / 2, hoehe); radius = max((pow(hoehe,2) + pow(rho,2)) / (2 * hoehe),hoehe);
translate([-abstand_kugelpunkte,abstand_kugelpunkte,r+hoehe]) sphere(r=radius, center=true); translate([0,0,r+hoehe]) sphere(r=radius, center=true); translate([abstand_kugelpunkte,-abstand_kugelpunkte,r+hoehe]) sphere(r=radius, center=true);
}
module add_sphere4 () {
hoehe = kerbe; rho = min (basis_kugelpunkte / 2, hoehe); radius = max((pow(hoehe,2) + pow(rho,2)) / (2 * hoehe),hoehe);
translate([-abstand_kugelpunkte,abstand_kugelpunkte,r+hoehe]) sphere(r=radius, center=true); translate([abstand_kugelpunkte,-abstand_kugelpunkte,r+hoehe]) sphere(r=radius, center=true); translate([abstand_kugelpunkte,abstand_kugelpunkte,r+hoehe]) sphere(r=radius, center=true); translate([-abstand_kugelpunkte,-abstand_kugelpunkte,r+hoehe]) sphere(r=radius, center=true);
}
module add_sphere5 () {
hoehe = kerbe; rho = min (basis_kugelpunkte / 2, hoehe); radius = max((pow(hoehe,2) + pow(rho,2)) / (2 * hoehe),hoehe);
translate([-abstand_kugelpunkte,abstand_kugelpunkte,r+hoehe]) sphere(r=radius, center=true); translate([abstand_kugelpunkte,-abstand_kugelpunkte,r+hoehe]) sphere(r=radius, center=true); translate([0,0,r+hoehe]) sphere(r=radius, center=true); translate([abstand_kugelpunkte,abstand_kugelpunkte,r+hoehe]) sphere(r=radius, center=true); translate([-abstand_kugelpunkte,-abstand_kugelpunkte,r+hoehe]) sphere(r=radius, center=true);
}
module add_sphere6 () {
hoehe = kerbe; rho = min (basis_kugelpunkte / 2, hoehe); radius = max((pow(hoehe,2) + pow(rho,2)) / (2 * hoehe),hoehe);
translate([-abstand_kugelpunkte,abstand_kugelpunkte,r+hoehe]) sphere(r=radius, center=true); translate([abstand_kugelpunkte,-abstand_kugelpunkte,r+hoehe]) sphere(r=radius, center=true); translate([-abstand_kugelpunkte,0,r+hoehe]) sphere(r=radius, center=true); translate([abstand_kugelpunkte,0,r+hoehe]) sphere(r=radius, center=true); translate([abstand_kugelpunkte,abstand_kugelpunkte,r+hoehe]) sphere(r=radius, center=true); translate([-abstand_kugelpunkte,-abstand_kugelpunkte,r+hoehe]) sphere(r=radius, center=true);
}
module add_pips1 () {
translate([0,0,r]) cylinder(tiefe,kegelspitze,basis_kegelpunkte);
}
module add_pips2 () { translate([-abstand_kegelpunkte,abstand_kegelpunkte,r]) cylinder(tiefe,kegelspitze,basis_kegelpunkte); translate([abstand_kegelpunkte,-abstand_kegelpunkte,r]) cylinder(tiefe,kegelspitze,basis_kegelpunkte); }
module add_pips3 () { translate([-abstand_kegelpunkte,abstand_kegelpunkte,r]) cylinder(tiefe,kegelspitze,basis_kegelpunkte); translate([0,0,r]) cylinder(tiefe,kegelspitze,basis_kegelpunkte); translate([abstand_kegelpunkte,-abstand_kegelpunkte,r]) cylinder(tiefe,kegelspitze,basis_kegelpunkte); }
module add_pips4 () { translate([-abstand_kegelpunkte,abstand_kegelpunkte,r]) cylinder(tiefe,kegelspitze,basis_kegelpunkte); translate([abstand_kegelpunkte,-abstand_kegelpunkte,r]) cylinder(tiefe,kegelspitze,basis_kegelpunkte); translate([abstand_kegelpunkte,abstand_kegelpunkte,r]) cylinder(tiefe,kegelspitze,basis_kegelpunkte); translate([-abstand_kegelpunkte,-abstand_kegelpunkte,r]) cylinder(tiefe,kegelspitze,basis_kegelpunkte); }
module add_pips5 () { translate([-abstand_kegelpunkte,abstand_kegelpunkte,r]) cylinder(tiefe,kegelspitze,basis_kegelpunkte); translate([abstand_kegelpunkte,-abstand_kegelpunkte,r]) cylinder(tiefe,kegelspitze,basis_kegelpunkte); translate([0,0,r]) cylinder(tiefe,kegelspitze,basis_kegelpunkte); translate([abstand_kegelpunkte,abstand_kegelpunkte,r]) cylinder(tiefe,kegelspitze,basis_kegelpunkte); translate([-abstand_kegelpunkte,-abstand_kegelpunkte,r]) cylinder(tiefe,kegelspitze,basis_kegelpunkte); }
module add_pips6 () { translate([-abstand_kegelpunkte,abstand_kegelpunkte,r]) cylinder(tiefe,kegelspitze,basis_kegelpunkte); translate([abstand_kegelpunkte,-abstand_kegelpunkte,r]) cylinder(tiefe,kegelspitze,basis_kegelpunkte); translate([-abstand_kegelpunkte,0,r]) cylinder(tiefe,kegelspitze,basis_kegelpunkte); translate([abstand_kegelpunkte,0,r]) cylinder(tiefe,kegelspitze,basis_kegelpunkte); translate([abstand_kegelpunkte,abstand_kegelpunkte,r]) cylinder(tiefe,kegelspitze,basis_kegelpunkte); translate([-abstand_kegelpunkte,-abstand_kegelpunkte,r]) cylinder(tiefe,kegelspitze,basis_kegelpunkte); }
module make_ausschnitt () {
if (ausschnittstyp == 1) color(kerbenfarbe) cut_quad (); if (ausschnittstyp == 2) color(kerbenfarbe) cut_circle (); if (ausschnittstyp > 2) color(kerbenfarbe) cut_circle (n=ausschnittstyp);
}
module cut_weiche(variant) {
if (variant == 1) make_ausschnitt(); if (variant == 2) make_ausschnitt(); if (variant == 3) make_ausschnitt(); if (variant == 4) make_ausschnitt(); if (variant == 5) make_ausschnitt(); if (variant == 6) make_ausschnitt(); if (variant == 7) make_ausschnitt(); if (variant == 8) make_ausschnitt(); if (variant == 9) make_ausschnitt(); if (variant == 10) cut_quad (); if (variant == 11) cut_pips1 (); // 1 Auge if (variant == 12) cut_pips2 (); // 2 Augen if (variant == 13) cut_pips3 (); // 3 Augen if (variant == 14) cut_pips4 (); // 4 Augen if (variant == 15) cut_pips5 (); // 5 Augen if (variant == 16) cut_pips6 (); // 6 Augen if (variant == 17) cut_strich (); if (variant == 18) cut_plus (); if (variant == 19) cut_slash (); if (variant == 20) cut_circle (); if (variant == 21) make_ausschnitt(); if (variant == 22) make_ausschnitt(); if (variant == 23) make_ausschnitt(); if (variant == 24) make_ausschnitt(); if (variant == 25) make_ausschnitt(); if (variant == 26) make_ausschnitt(); if (variant == 27) make_ausschnitt(); if (variant == 28) cut_circle (n=3); if (variant == 29) cut_circle (n=5); if (variant == 30) cut_x (); if (variant == 31) make_ausschnitt(); if (variant == 32) make_ausschnitt(); if (variant == 33) cut_star (); if (variant == 34) make_ausschnitt(); if (variant == 35) cut_circle (n=6); if (variant == 36) cut_circle (n=7); if (variant == 37) cut_circle (n=8); if (variant == 38) make_ausschnitt(); if (variant == 39) make_ausschnitt(); if (variant == 40) make_ausschnitt(); if (variant == 41) make_ausschnitt(); if (variant == 42) make_ausschnitt();
}
module cut_unten() {
cut_weiche(seite_unten);
}
module cut_hinten() { rotate([90,0,0]) {
cut_weiche(seite_hinten);
} }
module cut_links() { rotate([0,90,0]) {
cut_weiche(seite_links);
} }
module cut_rechts() { rotate([0,-90,0]) {
cut_weiche(seite_rechts);
} }
module cut_vorne() { rotate([-90,0,0]) {
cut_weiche(seite_vorne);
} }
module add_weiche(variant=0) {
if (variant == 1) add_pips1 (); // 1 keglige Punkt if (variant == 2) add_pips2 (); // 2 keglige Punkte if (variant == 3) add_pips3 (); // 3 keglige Punkt if (variant == 4) add_pips4 (); // 4 keglige Punkte if (variant == 5) add_pips5 (); // 5 keglige Punkte if (variant == 6) add_pips6 (); // 6 keglige Punkte if (variant == 7) add_strich (); // Taktiler Strich if (variant == 8) add_plus (); // Taktiler Plus if (variant == 9) add_slash (); // Taktiler Schrägstrich if (variant == 21) add_sphere1 (); // 1 kugliger Punkt if (variant == 22) add_sphere2 (); // 2 kuglige Punkte if (variant == 23) add_sphere3 (); // 3 kuglige Punkte if (variant == 24) add_sphere4 (); // 4 kuglige Punkte if (variant == 25) add_sphere5 (); // 5 kuglige Punkte if (variant == 26) add_sphere6 (); // 6 kuglige Punkte if (variant == 27) add_quad (); // Taktiles Quadrat if (variant == 31) add_x (); // Taktiles X if (variant == 32) add_ring (); // Taktiler Ring if (variant == 34) add_star (); // Taktiler Stern if (variant == 38) add_prisma (n=3); // Taktiles Dreieck if (variant == 39) add_prisma (n=5); // Taktiles Fünfeck if (variant == 40) add_prisma (n=6); // Taktiles Sechseck if (variant == 41) add_prisma (n=7); // Taktiles Siebeneck if (variant == 42) add_prisma (n=8); // Taktiles Achteck
}
module cut_oben() { rotate([180,0,0]) {
cut_weiche(seite_oben);
} }
module CutDice(){ cut_unten(); cut_hinten(); cut_links(); cut_rechts(); cut_vorne(); cut_oben(); }
module add_unten() {
add_weiche(seite_unten);
}
module add_hinten() { rotate([90,0,0]) {
add_weiche(seite_hinten);
} }
module add_links() { rotate([0,90,0]) {
add_weiche(seite_links);
} }
module add_rechts() { rotate([0,-90,0]) {
add_weiche(seite_rechts);
} }
module add_vorne() { rotate([-90,0,0]) {
add_weiche(seite_vorne);
} }
module add_oben() { rotate([180,0,0]) {
add_weiche(seite_oben);
} }
module AddPoints(){ add_unten(); add_hinten(); add_links(); add_rechts(); add_vorne(); add_oben(); }