OpenSCAD-Render des Dunstabzugshauben-Ersatzteils mit Rad und Achse

Ersatzteil für die Dunstabzugshaube

Eines meiner ersten OpenSCAD-Designs: ein Ersatzteil für unsere Dunstabzugshaube — das meine Frau endgültig mit dem 3D-Drucker versöhnt hat. Mit Preview-Highlight und optionaler Verstärkungsachse.

Beitrag komplett (.zip)

„Beitrag komplett“ liefert den OpenSCAD-Quelltext als fertige .scad-Dateien plus eine druckbare Kopie — ein Vorteil für CARECOM.united-Mitglieder. Die Mitgliedschaft ist kostenlos und unverbindlich. Zur Mitgliedschaft →

OpenSCAD-Render des Ersatzteils

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) und d2 (oben) wird aus dem Zylinder ein Kegelstumpf — hier das namensgebende „Rad".
  • Varianten per Schalter: verstaerkungAchse = true; schaltet über ein if eine 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:

Das gedruckte Ersatzteil

Es ist ein Fehler aufgetreten. Neu laden 🗙

Verbindung wird wiederhergestellt …

Wieder­verbindung fehl­geschlagen – nächster Versuch in Sekunden.

Wieder­verbindung fehl­geschlagen.
Bitte erneut versuchen oder die Seite neu laden.

Die Sitzung wurde vom Server pausiert.

Sitzung konnte nicht fort­gesetzt werden.
Bitte erneut versuchen oder die Seite neu laden.