From: UW
+// 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) +kante=20; // Kantenlänge des Würfels (in mm) // typisch sind 20 mm oder 25 mm // mögliches Aussehen der Seiten @@ -37,11 +35,21 @@ kante=20; // Kantenlänge des Würfels (in mm) // 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; @@ -51,7 +59,7 @@ seite_rechts = 6; seite_vorne = 0; seite_hinten = 26; -abgerundet = 2; // Aussehen des Würfelkörpers +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 @@ -61,15 +69,16 @@ abgerundet = 2; // Aussehen des Würfelkörpers abrundungsgroesse = 0.7; // je kleiner desto runder (0.55 <= abrundungsgroesse <= 1.0) -koerperfarbe = "black"; // Farbe des Würfelkörper -kerbenfarbe = "black"; // Farbe der Ausschnitte -augenfarbe = "yellow"; // Farbe der Augen -punktfarbe = "white"; // Farbe der taktilen Punkte +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 -tiefe_ausschnitt = 2; // Tiefe der ausgeschnittenen Bereiche (in mm) +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) @@ -82,7 +91,7 @@ kegelspitze=1; // Spitzheit der erhabenen kegligen Punkte (in mm) abstand_kugelpunkte=4; // Abstand der kugligen Punkte (in mm basis_kugelpunkte=1; // Basisdurchmesser der erhabenen kugligen Punkte (in mm) -// wird auf tiefe_ausschnitt gesetzt, wenn er kleiner als diese Tiefe +// 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 @@ -92,25 +101,31 @@ strichlaenge = 11; // Länge des Striches bei Seiten 7 - 9,17 - 19, 30, 31, 33, ringgroesse = 10; // Durchmesser des inneren Kreises bei Seite 32 (in mm) quadgroesse = 8; // Seitenlänge des inneren Quadrates bei Seite 27 (in mm) -aufloesung = 60; // je gröÃer desto genauer der Würfel +//$fn = 70; // je gröÃer desto genauer der Würfel // je gröÃer desto langsamer die Berechnung // für Testzwecke auskommentieren -// Kopierbereich (hier können fertige Vorlagen hineinkopiert werden) +// 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 -kerbe = tiefe_ausschnitt; r=-kante/2; r2=(d_auge/2); tiefe = kerbe * 2; punktpos=kante/2-kerbe; -$fn = aufloesung; + main(); @@ -217,8 +232,14 @@ module cut_quad () { translate ([0,0,-kante/2]) cube([ausschnitt, ausschnitt, tiefe],center=true); } -module cut_circle () { +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 () { @@ -287,35 +308,41 @@ module cut_pips6 () { } module add_strich () { -translate([0,0,-tiefe]) cube([strichlaenge, strichdicke, 3*tiefe],center=true); +translate ([0,0,-kante/2+kerbe]) cube([strichlaenge, strichdicke, tiefe],center=true); } module add_star () { -translate([0,0,-tiefe]) cube([strichlaenge, strichdicke, 3*tiefe],center=true); -translate([0,0,-tiefe]) cube([strichdicke, strichlaenge, 3*tiefe],center=true); -translate([0,0,-tiefe]) rotate([0,0,-45]) cube([strichlaenge, strichdicke, 3*tiefe],center=true); -translate([0,0,-tiefe]) rotate([0,0,45]) cube([strichlaenge, strichdicke, 3*tiefe],center=true); +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,-tiefe]) cube([strichlaenge, strichdicke, 3*tiefe],center=true); -translate([0,0,-tiefe]) cube([strichdicke, strichlaenge, 3*kerbe],center=true); +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,-tiefe]) rotate([0,0,-45]) cube([strichlaenge, strichdicke, 3*tiefe],center=true); +translate([0,0,-kante/2+kerbe]) rotate([0,0,-45]) cube([strichlaenge, strichdicke, tiefe],center=true); } module add_x () { -translate([0,0,-tiefe]) rotate([0,0,-45]) cube([strichlaenge, strichdicke, 3*tiefe],center=true); -translate([0,0,-tiefe]) rotate([0,0,45]) cube([strichlaenge, strichdicke, 3*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_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); @@ -421,8 +448,10 @@ module add_pips6 () { 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(); @@ -451,11 +480,21 @@ module cut_weiche(variant) { 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() { @@ -487,7 +526,7 @@ module cut_vorne() { } module add_weiche(variant=0) { - if (variant == 1) add_pips1 (); // 1 kegliger Punkt + 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 @@ -506,6 +545,11 @@ module add_weiche(variant=0) { 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() { @@ -565,4 +609,3 @@ module AddPoints(){ add_vorne(); add_oben(); } -