|
|
@@ -0,0 +1,106 @@
|
|
|
+/* [OpenSCAD] */
|
|
|
+$fn=90;
|
|
|
+
|
|
|
+//* [Spielstein] */
|
|
|
+// Form, Größe, Füllung
|
|
|
+//Form = 0; // [0:Eckig, 1:Rund]
|
|
|
+//Size = 1; // [0:Klein, 1:Groß]
|
|
|
+//Hohl = 0; // [0:Nein, 1:Ja]
|
|
|
+
|
|
|
+/* [Maße] */
|
|
|
+// Breite bzw. Durchmesser
|
|
|
+Breite = 20;
|
|
|
+// Höhe [lang, kurz] +5mm
|
|
|
+Hoehe = [20, 30];
|
|
|
+
|
|
|
+/* [Spielstein] */
|
|
|
+// Loch für Magnet im Fuß
|
|
|
+Magnet = 0; // [0:Nein, 1:Ja]
|
|
|
+
|
|
|
+/* [Hidden] */
|
|
|
+
|
|
|
+/////////////////////////////////////////////////////////////
|
|
|
+
|
|
|
+translate([0,15,0]) spielstein(0,0,0);
|
|
|
+translate([30,15,0]) spielstein(0,0,1);
|
|
|
+translate([60,15,0]) spielstein(0,1,0);
|
|
|
+translate([90,15,0]) spielstein(0,1,1);
|
|
|
+translate([0,-15,0]) spielstein(1,0,0);
|
|
|
+translate([30,-15,0]) spielstein(1,0,1);
|
|
|
+translate([60,-15,0]) spielstein(1,1,0);
|
|
|
+translate([90,-15,0]) spielstein(1,1,1);
|
|
|
+
|
|
|
+/////////////////////////////////////////////////////////////
|
|
|
+
|
|
|
+// Param: Form, Size, Hohl
|
|
|
+module spielstein(F,S,H) {
|
|
|
+ difference() {
|
|
|
+ union() {
|
|
|
+ if (F==0) {
|
|
|
+ eckig(F,S,H);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ rund(F,S,H);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (Magnet==1) {
|
|
|
+ translate([0,0,-0.01]) union() {
|
|
|
+ cylinder(d=3, h=5);
|
|
|
+ // translate([0,0,5]) cylinder(d1=3, d2=1, h=1.5);
|
|
|
+ }
|
|
|
+ // rotate([90,0,0]) cylinder(d=1, h=2*Breite, center=true);
|
|
|
+ // rotate([90,0,90]) cylinder(d=1, h=2*Breite, center=true);
|
|
|
+ // translate([0,0,0.5*Hoehe[S]]) cylinder(d=1, h=2*Hoehe[S], center=true);
|
|
|
+ // // Luer-Konus fuer Spritze
|
|
|
+ // translate([0,0,0.75]) mirror([0,0,1]) cylinder(d1=4.0, d2=4.3, h=7.5);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+module eckig_umfang(hoehe) {
|
|
|
+ Kanten_Radius = 1.5;
|
|
|
+ hull() {
|
|
|
+ for (i=[0:90:359]) {
|
|
|
+ rotate([0,0,i]) translate([ (Breite/2-Kanten_Radius), (Breite/2-Kanten_Radius), 0]) cylinder(r=Kanten_Radius, h=hoehe);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+module oben(F){
|
|
|
+ intersection(){
|
|
|
+ translate([0,0,-20]) sphere(25);
|
|
|
+ if (F==1) {
|
|
|
+ translate([0,0,3]) cylinder(d=Breite, h=6, center=true);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ eckig_umfang(6);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+module eckig(F,S,H) {
|
|
|
+ difference() {
|
|
|
+ hull() {
|
|
|
+ translate([0,0,Hoehe[S]]) oben(F);
|
|
|
+ eckig_umfang(2);
|
|
|
+ }
|
|
|
+ if (H==1) {
|
|
|
+ translate([0,0,Hoehe[S]+5]) cylinder(d=8, h=10, center=true);
|
|
|
+ }
|
|
|
+ translate([0,0,8]) for (i=[0:90:360]) {
|
|
|
+ rotate([0,0,i]) translate([Breite/2,0,0]) rotate([90,0,0]) cylinder(d=2, h=2*Breite, center=true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+module rund(F,S,H) {
|
|
|
+ difference() {
|
|
|
+ hull() {
|
|
|
+ translate([0,0,Hoehe[S]]) oben(F);
|
|
|
+ translate([0,0,1]) cylinder(d=Breite, h=2, center=true);
|
|
|
+ }
|
|
|
+ if (H==1) {
|
|
|
+ translate([0,0,Hoehe[S]+5]) cylinder(d=8, h=10, center=true);
|
|
|
+ }
|
|
|
+ translate([0,0,8]) rotate_extrude() translate([Breite/2,0]) circle(d=2);
|
|
|
+ }
|
|
|
+}
|