$fn=30; positions = [ [96, 2.3, "Reset"], //linke untere Kante [105.4, 13.9, "Sel"], [105.4, 27.5, "-"], [105.4, 40.2, "+"], [105.4, 53.4, "OK"], [6.4, 15, "X5 X2 X1"], [6.4, 32.9, "OK"], [6.4, 50.5, "OK"], [5.2, 5.2, ""], // center des locks [5.2, 71.8, ""], [112, 5.2, ""], [112, 71.8, ""], ]; module button(cutout){ color("black") cube([6,6, 3.8]); color("silver") translate([0,0,3.8]) cube([6,6,0.3]); if (!cutout){ color("black")translate([3,3,0]) cylinder(d=3.5, h=5); }else{ color("black")translate([3,3,0]) cylinder(d=8,h=25); } } module switch(cutout){ color("silver") cube([13,7.4, 4.8]); if (!cutout){ color("black")translate([3.5,3,0]) cube([2.2,2.2, 11]); }else{ color("black")translate([2,0.4,0]) cube([9.2,6.2, 25]); } } module platine(cutout){ // wenn cutout=true, dann wsind die Auschnitte gemeint difference(){ union(){ color("red") cube([117, 77, 1.8]); if (cutout) translate([0,0,1.8]) color("darkred") cube([117, 77, 15]); } for (i=[8:11]){ translate([ positions[i][0],positions[i][1],-0.1]) cylinder(d=3.3, h=2);} if (cutout){ for (i=[8:11]){ translate([ positions[i][0],positions[i][1],1.8]) cylinder(d=10, h=15.1); }} } for (i=[0:4]){ translate([ positions[i][0],positions[i][1],1.8]) button(cutout);} for (i=[5:7]){ translate([ positions[i][0],positions[i][1],1.8]) switch(cutout);} translate([29.6, 9.2, 12.8]) union(){ color("red") cube([71.5, 55, 1.8]); color("black")translate([0,5.6,1.8]) cube([60, 43, 3]); color("black")translate([65,2,-11]) cube([5, 51, 11]); } if (!cutout){ color("silver")translate([15.35,69,5+1.8]) rotate([0,90,90]) cylinder(d=11, h=22);}else{ color("silver")translate([15.35,77,5+1.8]) rotate([0,90,90]) cylinder(d=16, h=14); } color("black")translate([93,63.2,1.8])cube ([9,14, 10.8]); } platine(true);