summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Geldkasette.scad44
1 files changed, 38 insertions, 6 deletions
diff --git a/Geldkasette.scad b/Geldkasette.scad
index 8ed2644..76eda47 100644
--- a/Geldkasette.scad
+++ b/Geldkasette.scad
@@ -3,22 +3,54 @@ ds = [2.20, 2.33, 2.38, 2.14, 1.93, 1.67, 1.67, 1.67];
$fn = 100;
-toleranz = 1.02;
+toleranz = 1.08;
eps = 0.1;
d = 1.5;
delta = 1.5;
+bZahn = 3;
+Zahnluecke = 0.25;
+Zahnwinkel = 15;
l = 50*ds[2];
+lZahn = (l+2*d)/5.5;
+
Muenze = 0;
iMax = floor(l/5/ds[Muenze])-1;
-scale(toleranz)
+function flatten(l) = [ for (a = l) for (b = a) b ] ;
+
+scale(toleranz) {
+ linear_extrude(rs[2]+d)
+ translate([rs[Muenze]+d+delta,0])
+ polygon(flatten([
+ [[0,-l/2-d]],
+ [[bZahn,-l/2-d]],
+ for(y=[-l/2-d+lZahn:lZahn:l/2+d])
+ [[bZahn,y-lZahn/2+bZahn/2*tan(Zahnwinkel)-Zahnluecke/2],
+ [0,y-lZahn/2-bZahn/2*tan(Zahnwinkel)-Zahnluecke/2],
+ [0,y+bZahn/2*tan(Zahnwinkel)+Zahnluecke/2],
+ [bZahn,y-bZahn/2*tan(Zahnwinkel)+Zahnluecke/2]],
+ [[bZahn,l/2+d]],
+ [[0,l/2+d]]
+ ]));
+ linear_extrude(rs[2]+d)
+ translate([-rs[Muenze]-d-delta,0])
+ polygon(flatten([
+ [[0,-l/2-d]],
+ for(y=[-l/2-d+lZahn:lZahn:l/2+d])
+ [[0,y-lZahn/2+bZahn/2*tan(Zahnwinkel)+Zahnluecke/2],
+ [-bZahn,y-lZahn/2-bZahn/2*tan(Zahnwinkel)+Zahnluecke/2],
+ [-bZahn,y+bZahn/2*tan(Zahnwinkel)-Zahnluecke/2],
+ [0,y-bZahn/2*tan(Zahnwinkel)-Zahnluecke/2]],
+ [[0,l/2+d]]
+ ]));
difference() {
- translate([-rs[Muenze]-d-delta,-l/2-d,-rs[2]-d])
+ translate([-rs[Muenze]-d-delta,-l/2-d,0])
cube([2*rs[Muenze]+2*d+2*delta,l+2*d,rs[2]+d]);
rotate([-90,0,0])
for(i = [-iMax/2:iMax/2])
- translate([(i+iMax/2)%2 == 0 ? -delta : delta, 0, 5*ds[Muenze]*(i-1/2)-eps])
- cylinder(h = 5 * ds[Muenze] + 2*eps, r = rs[Muenze]);
- }; \ No newline at end of file
+ translate([(i+iMax/2)%2 == 0 ? -delta : delta, -rs[2]-d, 5*ds[Muenze]*(i-1/2)-eps])
+ cylinder(h = 5 * ds[Muenze] + 2*eps, r = rs[Muenze]);
+ };
+}; \ No newline at end of file