
Dieses Ersatzteil unserer Siemens- oder Bosch-Dunstabzugshaube war tatsächlich eines meiner ersten OpenSCAD-Designs. Und nachdem das Teil verbaut war, hat meine Frau ihren Frieden mit meiner Anschaffung gemacht! ;)
Genau darin liegt der eigentliche Wert: ein kaputtes, nicht mehr lieferbares Teil ausmessen, nachmodellieren und drucken — statt das ganze Gerät zu entsorgen. Der Code passt nur auf genau diese Haube; übertragbar sind aber die Techniken, die hier durchscheinen.
Was man hier lernen kann
- Im Preview hervorheben:
#cylinder(7, d1=41.5, d2=25);— das vorangestellte#färbt ein Teil im Vorschaufenster auffällig ein. Hilfreich, um beim Tüfteln zu sehen, welches Element man gerade vor sich hat. - Zylinder zu Kegel: Mit
d1(unten) undd2(oben) wird aus dem Zylinder ein Kegelstumpf — hier das namensgebende „Rad". - Varianten per Schalter:
verstaerkungAchse = true;schaltet über einifeine Verstärkung gegenüber dem Original frei. So bleibt eine Verbesserung optional und vergleichbar, ohne den Code zu zerschneiden.
Und ja — würde ich das Teil heute neu konstruieren, käme es mit benannten Variablen statt fester Zahlen. Auch das gehört dazu: Die ersten Entwürfe dürfen pragmatisch sein; Hauptsache, das Teil sitzt.
verstaerkungAchse = true;
$fn=40;
cube([20,29.3, 2]);
translate([(20/2) - (10/2), 29.3,0])
cube([10,7, 2]);
translate([-2/2, 29.3 + 7-2/2 , 2/2])
rotate([0,90,0])
cylinder(6.2*2+10, d=2);
translate([-2/2, 29.3 + 3-2/2 , 2/2])
rotate([0,90,0])
cylinder(6.2*2+10, d=2);
/* Füllversuch */
if (verstaerkungAchse) {
translate([-2/2, 29.3 + 3-1/2 , 2/2])
rotate([0,90,0])
cylinder(6.2*2+10, d=2);
translate([-2/2, 29.3 + 3 , 2/2])
rotate([0,90,0])
cylinder(6.2*2+10, d=2);
translate([-2/2, 29.3 + 3+1/2 , 2/2])
rotate([0,90,0])
cylinder(6.2*2+10, d=2);
translate([-2/2, 29.3 + 4 , 2/2])
rotate([0,90,0])
cylinder(6.2*2+10, d=2);
translate([-2/2, 29.3 + 4.5 , 2/2])
rotate([0,90,0])
cylinder(6.2*2+10, d=2);
translate([-2/2, 29.3 + 5 , 2/2])
rotate([0,90,0])
cylinder(6.2*2+10, d=2);
translate([-2/2, 29.3 + 5.5 , 2/2])
rotate([0,90,0])
cylinder(6.2*2+10, d=2);
}
/* --- */
translate([0, 0, -8])
rotate([0, 0, 0])
cube([20,3, 8]);
translate([0,6.2,0])
rotate([0,90,0])
cylinder(6.2*2+10-2, d=2);
difference() {
translate([20/2-1/2-1,29.3 + 1 , 2/2])
rotate([0,90,0])
cylinder(2, d=10);
translate([(20/2) - (10/2), 29.3 -5,-20])
cube([15,15, 20]);
}
// "Rad"
difference() {
union() {
translate([20/2-7/2, 2.5/2-41.5/2, 0])
rotate([0, 90, 0])
#cylinder(7, d1=41.5, d2=25);
translate([20/2-7/2, -30 -20, 41.5/2 -2])
cube([7,30,2]);
translate([20/2-7/2, -20, 41.5/2 - 8.1])
cube([7,2, 8.1]);
translate([7, -7, 0])
cube([13, 7, 2]);
}
translate([20/2-7/2 - 0.1, 2.5/2-41.5/2, 0])
rotate([0, 90, 0])
cylinder(7.2, d1=41.5-2*2, d2=25-2*2);
};
Und so sieht das gedruckte Teil aus:



