$fs = 0.01;
$fn = $preview ? 32 : 64;
breite_x = 150;
breite_y = 110;
anz_x = 5;
anz_y = 4;
spalt = 5;
hohe_bed = 1;
rund = 15;
one_rund = 2;
dicke = 1.6;
hohe = 25;
hohe_under = 5;
verangung = 6;
underset = 5;
bed_hohe = 1;
one_x = breite_x / anz_x;
one_y = breite_y / anz_y;
module boden(){
difference(){
cube([breite_x,breite_y,hohe_bed]);
aussenecken();
translate([spalt+(spalt/2),spalt+(spalt/2),-1])hull() {
translate([breite_x-(spalt*3),0,0]) cylinder(hohe_bed+3,d=spalt);
cylinder(hohe_bed+3,d=spalt);
}
translate([spalt+(spalt/2),breite_y-(spalt+(spalt/2)),-1])hull() {
translate([breite_x-(spalt*3),0,0]) cylinder(hohe_bed+3,d=spalt);
cylinder(hohe_bed+3,d=spalt);
}
}
}
translate([-one_x/2,-one_y/2,0])boden();
module onecup(verang) {
offset(r = one_rund) {
square([one_x - (2 * one_rund)-verang, one_y - (2 * one_rund)-verang], center = true);
}
}
module one(){
hull(){
linear_extrude(0.01)onecup(verangung+verangung+dicke+dicke+hohe_under);
translate([0,0,hohe])linear_extrude(0.01)onecup(verangung+verangung+dicke+dicke+hohe_under);
}
}
module arrange_cups() {
for (i = [0 : anz_x - 1]) {
for (j = [0 : anz_y - 1]) {
translate([i * one_x, j * one_y, 0]) one();
}
}
}
difference(){
arrange_cups();
linear_extrude(bed_hohe)difference(){
translate([breite_x/2-(one_x/2),breite_y/2-(one_y/2)])square([breite_x+0.1, breite_y+0.1], center = true);
translate([breite_x/2-(one_x/2),breite_y/2-(one_y/2)])offset(r = one_rund) {
square([breite_x-one_rund-one_rund+0.1, breite_y-one_rund-one_rund+0.1], center = true);
}
}
}
module ausenecke(rotate){
rotate([0,0,rotate]){
difference(){
cube([rund/2,rund/2,hohe_bed+1]);
translate([rund/2,rund/2,-1])cylinder(hohe_bed+3,d=rund);
}
}
}
module aussenecken(){
translate([0,0,-0.01]){
ausenecke(0);
translate([breite_x,0,0]) ausenecke(90);
translate([breite_x,breite_y,0]) ausenecke(180);
translate([0,breite_y,0]) ausenecke(270);}
}