diff options
-rw-r--r-- | Geldkasette.scad | 44 |
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 |