diff --git a/vordach.scad b/vordach.scad new file mode 100644 index 0000000..0f9240b --- /dev/null +++ b/vordach.scad @@ -0,0 +1,338 @@ +// ============================================================ +// PARAMETRISCHES VORDACH - OpenSCAD +// Autor: John M. Wayne +// Datum: 2026-05-16 +// Lizenz: CC BY 4.0 +// +// EINHEITENSYSTEM: alle Maße in Millimeter (mm) +// +// KOORDINATENURSPRUNG: +// X = Breite (entlang der Hauswand) +// Y = Tiefe (Auskragung vom Haus weg) +// Z = Höhe +// +// MONTAGEHINWEIS: +// Die Wandseite liegt bei Y = 0. +// Die Pfosten stehen auf Z = 0 (Bodenebene). +// ============================================================ + + +// ============================================================ +// 1. GLOBALE PARAMETER – hier zentral anpassen +// ============================================================ + +// --- Gesamtgeometrie --- +vordach_breite = 3000; // [mm] Breite des Vordachs entlang der Hauswand +vordach_tiefe = 1500; // [mm] Auskragung (Tiefe) vom Haus nach außen +dach_neigung_grad = 7; // [°] Gefälle nach vorne (min. 5° für Stegplatten) + +// --- Pfosten --- +pfosten_breite = 100; // [mm] Querschnitt Pfosten (quadratisch) +pfosten_hoehe = 2400; // [mm] Pfostenhöhe ab Boden (Unterkante Dach vorne) +pfosten_anzahl = 2; // Anzahl Frontstützen (bei Breite > 3 m: 3 empfohlen) + +// --- Wandhalterung / Pfette --- +pfette_breite = 120; // [mm] Breite der Wandpfette (Holz oder Stahl) +pfette_hoehe = 180; // [mm] Höhe der Wandpfette + +// TOLERANZ HAUSWAND: +// Mauerwerk ist selten exakt lotrecht. Empfohlene Montagetoleranz: +// - Dübelbohrlöcher ±5 mm übermessen (Langloch in Z-Richtung) +// - Pfette mit Beilagscheiben (0–10 mm) unterlegen +// - 'wandtoleranz_z': Z-Versatz der Pfette gegenüber Sollhöhe +// (+ = Pfette höher, - = Pfette tiefer; typisch ±20 mm) +// - 'wandtoleranz_y': Luftspalt Pfette <-> Wand (Putz, Dämmung) +wandtoleranz_z = 0; // [mm] Höhenkorrektur Wandmontage +wandtoleranz_y = 5; // [mm] Abstand Pfette zur Wandoberfläche + +// --- Dachfläche / Sparren --- +sparren_breite = 80; // [mm] Sparrenquerschnitt Breite +sparren_hoehe = 120; // [mm] Sparrenquerschnitt Höhe +sparren_abstand = 500; // [mm] Achsabstand der Sparren +// Richtwerte je Dachmaterial: +// Stegplatten (PC): max. 600 mm Glas (VSG): max. 500 mm +// Trapezblech: max. 1250 mm Bitumenwellpl.: max. 450 mm +dach_ueberstand_vorne = 100; // [mm] Überstand Eindeckung an der Traufe +dach_ueberstand_seite = 50; // [mm] Seitlicher Überstand + +// --- Dacheindeckung --- +// MATERIAL-UMSCHALTER (Wert als String eintragen): +// "stegplatten" → Polycarbonat-Stegplatten (16 mm) +// "glas" → Verbundsicherheitsglas VSG ( 8 mm) +// "blech" → Trapezblech / Aluminium (35 mm inkl. Profil) +// "bitumen" → Bitumenwellplatten (43 mm inkl. Welle) +dach_material = "stegplatten"; + +// Materialstärken (werden per dach_staerke() automatisch gewählt) +stegplatten_staerke = 16; +glas_staerke = 8; +blech_staerke = 35; +bitumen_staerke = 43; + +// --- Verbindungselemente (Visualisierung) --- +schraube_dm = 12; // [mm] Schraubendurchmesser (M12) +ankerplatte_groesse = 150; // [mm] Fußplatte Pfosten (quadratisch) +ankerplatte_staerke = 10; // [mm] Plattendicke + +// --- Renderqualität --- +$fn = 32; // Auflösung Zylinder (32 = schnell, 128 = Druckqualität) + + +// ============================================================ +// 2. ABGELEITETE GRÖSSEN – nicht manuell ändern +// ============================================================ + +// Dachhöhe hinten (Wandseite) aus Neigung + Tiefe +dach_hoehe_vorne = pfosten_hoehe; +dach_hoehe_hinten = pfosten_hoehe + tan(dach_neigung_grad) * vordach_tiefe; + +// Materialstärke per ternärer Kette +// HINWEIS: OpenSCAD-Funktionen dürfen nicht auf globale String-Variablen +// zugreifen, daher direkte Referenz auf die globalen Stärken-Variablen. +function dach_staerke() = + dach_material == "stegplatten" ? stegplatten_staerke : + dach_material == "glas" ? glas_staerke : + dach_material == "blech" ? blech_staerke : + dach_material == "bitumen" ? bitumen_staerke : + stegplatten_staerke; // Fallback + +// Sparrenlänge (Schräglänge auf der Dachneigung) +sparren_laenge = vordach_tiefe / cos(dach_neigung_grad) + dach_ueberstand_vorne; + +// Anzahl Sparren +sparren_count = floor((vordach_breite + 2 * dach_ueberstand_seite) / sparren_abstand) + 1; + +// Dübelabstand Wandpfette (alle 500 mm ein Befestigungspunkt) +duebel_abstand = 500; +duebel_anzahl = round(vordach_breite / duebel_abstand); + + +// ============================================================ +// 3. MODULE +// ============================================================ + +// ------------------------------------------------------------ +// 3.1 PFOSTEN (Frontstütze) +// Ursprung: Unterkante, Mitte des Pfostenquerschnitts +// +// Montagehinweis: +// Ankerplatten mit chemischem Dübel (z. B. Hilti HIT-RE 500) +// befestigen. Bohrdurchmesser = schraube_dm + 1 mm Spielpassung. +// ankerplatte_groesse an vorhandenes Fundament anpassen. +// ------------------------------------------------------------ +module pfosten(hoehe = pfosten_hoehe) { + + // Schaft + color("SaddleBrown", 0.9) + translate([-pfosten_breite/2, -pfosten_breite/2, 0]) + cube([pfosten_breite, pfosten_breite, hoehe]); + + // Fußplatte + color("Silver") + translate([-ankerplatte_groesse/2, -ankerplatte_groesse/2, -ankerplatte_staerke]) + cube([ankerplatte_groesse, ankerplatte_groesse, ankerplatte_staerke]); + + // Ankerschrauben (Visualisierung, 4 Stück) + for (dx = [-1, 1]) + for (dy = [-1, 1]) + color("DarkGray") + translate([dx * (ankerplatte_groesse/2 - 20), + dy * (ankerplatte_groesse/2 - 20), + -ankerplatte_staerke]) + cylinder(d = schraube_dm, + h = ankerplatte_staerke + 30, + center = false); + + // Kopfplatte (Auflager für Sparren) + color("Silver") + translate([-ankerplatte_groesse/2, -ankerplatte_groesse/2, hoehe]) + cube([ankerplatte_groesse, ankerplatte_groesse, ankerplatte_staerke]); +} + + +// ------------------------------------------------------------ +// 3.2 WANDHALTERUNG / WANDPFETTE +// Verläuft entlang der gesamten Breite an der Hauswand. +// +// Montagehinweis: +// - wandtoleranz_y erzeugt Luftspalt (Putz, Dämmung, Belüftung) +// - wandtoleranz_z korrigiert Höhenabweichungen im Mauerwerk +// - Dübelmuster: alle duebel_abstand mm ein Befestigungspunkt +// - Holzpfette: druckimprägniert C24, Hirnholz mit Anstrich +// - Stahlpfette: feuerverzinkt, Wandanschluss mit EPDM abdichten +// ------------------------------------------------------------ +module wandpfette() { + + // Z-Position: Sparrenauflager bündig mit Oberkante Pfette + let (pfette_z = dach_hoehe_hinten - pfette_hoehe + wandtoleranz_z) { + + // Pfettenkörper + color("Peru", 0.9) + translate([0, wandtoleranz_y, pfette_z]) + cube([vordach_breite, pfette_breite, pfette_hoehe]); + + // Dübel / Wandschrauben (Visualisierung) + for (i = [0 : duebel_anzahl]) + let (x = i * (vordach_breite / max(duebel_anzahl, 1))) + color("DarkGray") + translate([x, -80, pfette_z + pfette_hoehe / 2]) + rotate([90, 0, 0]) + cylinder(d = 16, h = 80); + } +} + + +// ------------------------------------------------------------ +// 3.3 SPARREN +// Ein einzelner Dachsparren, geneigt per dach_neigung_grad. +// Ursprung: Wandpfettenauflager (Y=0, Z=dach_hoehe_hinten) +// +// Hinweis Materialwahl: +// Stegplatten → Sparren in Falllinie (Hohlkammern = Entwässerung) +// Glas → alle 500 mm (Statik nachweisen!) +// Trapezblech → bis 1250 mm selbsttragend +// Bitumen → Vollschalung oder max. 450 mm Abstand +// ------------------------------------------------------------ +module sparren(laenge = sparren_laenge) { + + color("BurlyWood") + rotate([-dach_neigung_grad, 0, 0]) + cube([sparren_breite, laenge, sparren_hoehe]); +} + + +// ------------------------------------------------------------ +// 3.4 DACHFLÄCHE / EINDECKUNG +// Vereinfachte geneigte Plattengeometrie. +// +// Stegplatten (PC): +// - Überlappung min. 100 mm in Falllinie, Aluabschlussband +// - Ausdehnung ca. 2.5 mm/m/10 K → Klemmprofil nicht festklemmen +// - UV-Schutzseite (blaue Folie) IMMER nach oben +// - Randversiegelung: Aluband oben + gelochtes Lüftungsband unten +// +// Glas (VSG): +// - Randeinstand min. 20 mm im Klemmprofil +// - Eigengewicht 10 mm VSG ≈ 25 kg/m² → Statik erforderlich! +// - Thermisch getrennte Profile (Wärmebrücke vermeiden) +// - Norm: VSG nach DIN 18008 +// +// Trapezblech: +// - Dachneigung min. 3° (Stehfalz) / 5° (Trapez) +// - First/Traufe mit vorkomprimiertem Dichtband +// - Schrauben IMMER durch Hochrippe mit Scheibendichtung +// +// Bitumenwellplatte: +// - Längsüberlappung: 1 Welle; Querüberlappung: min. 200 mm +// - First: Firsthaube + Schaumstoff-Dichtstreifen +// ------------------------------------------------------------ +module dachflaeche() { + + let (staerke = dach_staerke(), + breite_gesamt = vordach_breite + 2 * dach_ueberstand_seite) { + + color("LightBlue", 0.5) + translate([-dach_ueberstand_seite, 0, dach_hoehe_hinten]) + rotate([-dach_neigung_grad, 0, 0]) + cube([breite_gesamt, sparren_laenge, staerke]); + } +} + + +// ------------------------------------------------------------ +// 3.5 LÄNGSTRÄGER (First- und Traufpfette) +// Horizontale Träger parallel zur Hauswand. +// y_pos: Achsposition in Y, z_pos: Unterkante in Z +// ------------------------------------------------------------ +module laengstraeger(y_pos, z_pos) { + color("Sienna", 0.85) + translate([0, y_pos - sparren_breite / 2, z_pos]) + cube([vordach_breite, sparren_breite, sparren_hoehe]); +} + + +// ============================================================ +// 4. HAUPTASSEMBLIERUNG +// ============================================================ + +module vordach_komplett() { + + // --- Pfosten --- + // Gleichmäßig über die Breite verteilt an der Vorderkante + let (abstand = (pfosten_anzahl > 1) + ? (vordach_breite - pfosten_breite) / (pfosten_anzahl - 1) + : 0) { + + for (i = [0 : pfosten_anzahl - 1]) + let (px = pfosten_breite / 2 + i * abstand) + translate([px, + vordach_tiefe - pfosten_breite / 2, + 0]) + pfosten(); + } + + // --- Wandpfette --- + wandpfette(); + + // --- Sparren --- + for (i = [0 : sparren_count - 1]) + let (sx = -dach_ueberstand_seite + i * sparren_abstand) + translate([sx, 0, dach_hoehe_hinten]) + sparren(); + + // --- Firstpfette (wandseitig) und Traufpfette (vorne) --- + laengstraeger(0, dach_hoehe_hinten - sparren_hoehe); + laengstraeger(vordach_tiefe, dach_hoehe_vorne - sparren_hoehe); + + // --- Dachfläche --- + dachflaeche(); +} + + +// ============================================================ +// 5. RENDER-AUFRUF +// ============================================================ + +vordach_komplett(); + + +// ============================================================ +// 6. DEBUG / SCHNITTANSICHT (Kommentar entfernen zum Aktivieren) +// ============================================================ + +// Querschnitt in der Mitte (Y-Schnitt): +// intersection() { +// vordach_komplett(); +// translate([vordach_breite/2 - 5, -100, -100]) +// cube([10, vordach_tiefe + 200, dach_hoehe_hinten + 500]); +// } + +// Einzelmodule isoliert testen: +// pfosten(); +// wandpfette(); +// sparren(); +// dachflaeche(); + + +// ============================================================ +// 7. ANPASSUNGSGUIDE (Kurzreferenz) +// ============================================================ +// +// AUFGABE VARIABLE(N) +// ───────────────────────────────────────────────────────── +// Größe ändern vordach_breite, vordach_tiefe +// Gefälle einstellen dach_neigung_grad +// Dachmaterial wechseln dach_material (+ sparren_abstand prüfen!) +// Putzausgleich Wand wandtoleranz_y +// Höhenausgleich Wand wandtoleranz_z +// Pfosten-Querschnitt pfosten_breite +// Pfostenanzahl erhöhen pfosten_anzahl +// Überstand Traufe/Seite dach_ueberstand_vorne / dach_ueberstand_seite +// Renderauflösung $fn (oben, global) +// ───────────────────────────────────────────────────────── +// +// EXPORTHINWEIS: +// F5 = Vorschau (OpenCSG, schnell) +// F6 = vollständiges Render (CGAL) → dann STL / DXF exportieren +// File → Export → DXF → 2D-Projektion für Werkstattzeichnung +// ============================================================ diff --git a/vordach1.scad b/vordach1.scad new file mode 100644 index 0000000..0f9240b --- /dev/null +++ b/vordach1.scad @@ -0,0 +1,338 @@ +// ============================================================ +// PARAMETRISCHES VORDACH - OpenSCAD +// Autor: John M. Wayne +// Datum: 2026-05-16 +// Lizenz: CC BY 4.0 +// +// EINHEITENSYSTEM: alle Maße in Millimeter (mm) +// +// KOORDINATENURSPRUNG: +// X = Breite (entlang der Hauswand) +// Y = Tiefe (Auskragung vom Haus weg) +// Z = Höhe +// +// MONTAGEHINWEIS: +// Die Wandseite liegt bei Y = 0. +// Die Pfosten stehen auf Z = 0 (Bodenebene). +// ============================================================ + + +// ============================================================ +// 1. GLOBALE PARAMETER – hier zentral anpassen +// ============================================================ + +// --- Gesamtgeometrie --- +vordach_breite = 3000; // [mm] Breite des Vordachs entlang der Hauswand +vordach_tiefe = 1500; // [mm] Auskragung (Tiefe) vom Haus nach außen +dach_neigung_grad = 7; // [°] Gefälle nach vorne (min. 5° für Stegplatten) + +// --- Pfosten --- +pfosten_breite = 100; // [mm] Querschnitt Pfosten (quadratisch) +pfosten_hoehe = 2400; // [mm] Pfostenhöhe ab Boden (Unterkante Dach vorne) +pfosten_anzahl = 2; // Anzahl Frontstützen (bei Breite > 3 m: 3 empfohlen) + +// --- Wandhalterung / Pfette --- +pfette_breite = 120; // [mm] Breite der Wandpfette (Holz oder Stahl) +pfette_hoehe = 180; // [mm] Höhe der Wandpfette + +// TOLERANZ HAUSWAND: +// Mauerwerk ist selten exakt lotrecht. Empfohlene Montagetoleranz: +// - Dübelbohrlöcher ±5 mm übermessen (Langloch in Z-Richtung) +// - Pfette mit Beilagscheiben (0–10 mm) unterlegen +// - 'wandtoleranz_z': Z-Versatz der Pfette gegenüber Sollhöhe +// (+ = Pfette höher, - = Pfette tiefer; typisch ±20 mm) +// - 'wandtoleranz_y': Luftspalt Pfette <-> Wand (Putz, Dämmung) +wandtoleranz_z = 0; // [mm] Höhenkorrektur Wandmontage +wandtoleranz_y = 5; // [mm] Abstand Pfette zur Wandoberfläche + +// --- Dachfläche / Sparren --- +sparren_breite = 80; // [mm] Sparrenquerschnitt Breite +sparren_hoehe = 120; // [mm] Sparrenquerschnitt Höhe +sparren_abstand = 500; // [mm] Achsabstand der Sparren +// Richtwerte je Dachmaterial: +// Stegplatten (PC): max. 600 mm Glas (VSG): max. 500 mm +// Trapezblech: max. 1250 mm Bitumenwellpl.: max. 450 mm +dach_ueberstand_vorne = 100; // [mm] Überstand Eindeckung an der Traufe +dach_ueberstand_seite = 50; // [mm] Seitlicher Überstand + +// --- Dacheindeckung --- +// MATERIAL-UMSCHALTER (Wert als String eintragen): +// "stegplatten" → Polycarbonat-Stegplatten (16 mm) +// "glas" → Verbundsicherheitsglas VSG ( 8 mm) +// "blech" → Trapezblech / Aluminium (35 mm inkl. Profil) +// "bitumen" → Bitumenwellplatten (43 mm inkl. Welle) +dach_material = "stegplatten"; + +// Materialstärken (werden per dach_staerke() automatisch gewählt) +stegplatten_staerke = 16; +glas_staerke = 8; +blech_staerke = 35; +bitumen_staerke = 43; + +// --- Verbindungselemente (Visualisierung) --- +schraube_dm = 12; // [mm] Schraubendurchmesser (M12) +ankerplatte_groesse = 150; // [mm] Fußplatte Pfosten (quadratisch) +ankerplatte_staerke = 10; // [mm] Plattendicke + +// --- Renderqualität --- +$fn = 32; // Auflösung Zylinder (32 = schnell, 128 = Druckqualität) + + +// ============================================================ +// 2. ABGELEITETE GRÖSSEN – nicht manuell ändern +// ============================================================ + +// Dachhöhe hinten (Wandseite) aus Neigung + Tiefe +dach_hoehe_vorne = pfosten_hoehe; +dach_hoehe_hinten = pfosten_hoehe + tan(dach_neigung_grad) * vordach_tiefe; + +// Materialstärke per ternärer Kette +// HINWEIS: OpenSCAD-Funktionen dürfen nicht auf globale String-Variablen +// zugreifen, daher direkte Referenz auf die globalen Stärken-Variablen. +function dach_staerke() = + dach_material == "stegplatten" ? stegplatten_staerke : + dach_material == "glas" ? glas_staerke : + dach_material == "blech" ? blech_staerke : + dach_material == "bitumen" ? bitumen_staerke : + stegplatten_staerke; // Fallback + +// Sparrenlänge (Schräglänge auf der Dachneigung) +sparren_laenge = vordach_tiefe / cos(dach_neigung_grad) + dach_ueberstand_vorne; + +// Anzahl Sparren +sparren_count = floor((vordach_breite + 2 * dach_ueberstand_seite) / sparren_abstand) + 1; + +// Dübelabstand Wandpfette (alle 500 mm ein Befestigungspunkt) +duebel_abstand = 500; +duebel_anzahl = round(vordach_breite / duebel_abstand); + + +// ============================================================ +// 3. MODULE +// ============================================================ + +// ------------------------------------------------------------ +// 3.1 PFOSTEN (Frontstütze) +// Ursprung: Unterkante, Mitte des Pfostenquerschnitts +// +// Montagehinweis: +// Ankerplatten mit chemischem Dübel (z. B. Hilti HIT-RE 500) +// befestigen. Bohrdurchmesser = schraube_dm + 1 mm Spielpassung. +// ankerplatte_groesse an vorhandenes Fundament anpassen. +// ------------------------------------------------------------ +module pfosten(hoehe = pfosten_hoehe) { + + // Schaft + color("SaddleBrown", 0.9) + translate([-pfosten_breite/2, -pfosten_breite/2, 0]) + cube([pfosten_breite, pfosten_breite, hoehe]); + + // Fußplatte + color("Silver") + translate([-ankerplatte_groesse/2, -ankerplatte_groesse/2, -ankerplatte_staerke]) + cube([ankerplatte_groesse, ankerplatte_groesse, ankerplatte_staerke]); + + // Ankerschrauben (Visualisierung, 4 Stück) + for (dx = [-1, 1]) + for (dy = [-1, 1]) + color("DarkGray") + translate([dx * (ankerplatte_groesse/2 - 20), + dy * (ankerplatte_groesse/2 - 20), + -ankerplatte_staerke]) + cylinder(d = schraube_dm, + h = ankerplatte_staerke + 30, + center = false); + + // Kopfplatte (Auflager für Sparren) + color("Silver") + translate([-ankerplatte_groesse/2, -ankerplatte_groesse/2, hoehe]) + cube([ankerplatte_groesse, ankerplatte_groesse, ankerplatte_staerke]); +} + + +// ------------------------------------------------------------ +// 3.2 WANDHALTERUNG / WANDPFETTE +// Verläuft entlang der gesamten Breite an der Hauswand. +// +// Montagehinweis: +// - wandtoleranz_y erzeugt Luftspalt (Putz, Dämmung, Belüftung) +// - wandtoleranz_z korrigiert Höhenabweichungen im Mauerwerk +// - Dübelmuster: alle duebel_abstand mm ein Befestigungspunkt +// - Holzpfette: druckimprägniert C24, Hirnholz mit Anstrich +// - Stahlpfette: feuerverzinkt, Wandanschluss mit EPDM abdichten +// ------------------------------------------------------------ +module wandpfette() { + + // Z-Position: Sparrenauflager bündig mit Oberkante Pfette + let (pfette_z = dach_hoehe_hinten - pfette_hoehe + wandtoleranz_z) { + + // Pfettenkörper + color("Peru", 0.9) + translate([0, wandtoleranz_y, pfette_z]) + cube([vordach_breite, pfette_breite, pfette_hoehe]); + + // Dübel / Wandschrauben (Visualisierung) + for (i = [0 : duebel_anzahl]) + let (x = i * (vordach_breite / max(duebel_anzahl, 1))) + color("DarkGray") + translate([x, -80, pfette_z + pfette_hoehe / 2]) + rotate([90, 0, 0]) + cylinder(d = 16, h = 80); + } +} + + +// ------------------------------------------------------------ +// 3.3 SPARREN +// Ein einzelner Dachsparren, geneigt per dach_neigung_grad. +// Ursprung: Wandpfettenauflager (Y=0, Z=dach_hoehe_hinten) +// +// Hinweis Materialwahl: +// Stegplatten → Sparren in Falllinie (Hohlkammern = Entwässerung) +// Glas → alle 500 mm (Statik nachweisen!) +// Trapezblech → bis 1250 mm selbsttragend +// Bitumen → Vollschalung oder max. 450 mm Abstand +// ------------------------------------------------------------ +module sparren(laenge = sparren_laenge) { + + color("BurlyWood") + rotate([-dach_neigung_grad, 0, 0]) + cube([sparren_breite, laenge, sparren_hoehe]); +} + + +// ------------------------------------------------------------ +// 3.4 DACHFLÄCHE / EINDECKUNG +// Vereinfachte geneigte Plattengeometrie. +// +// Stegplatten (PC): +// - Überlappung min. 100 mm in Falllinie, Aluabschlussband +// - Ausdehnung ca. 2.5 mm/m/10 K → Klemmprofil nicht festklemmen +// - UV-Schutzseite (blaue Folie) IMMER nach oben +// - Randversiegelung: Aluband oben + gelochtes Lüftungsband unten +// +// Glas (VSG): +// - Randeinstand min. 20 mm im Klemmprofil +// - Eigengewicht 10 mm VSG ≈ 25 kg/m² → Statik erforderlich! +// - Thermisch getrennte Profile (Wärmebrücke vermeiden) +// - Norm: VSG nach DIN 18008 +// +// Trapezblech: +// - Dachneigung min. 3° (Stehfalz) / 5° (Trapez) +// - First/Traufe mit vorkomprimiertem Dichtband +// - Schrauben IMMER durch Hochrippe mit Scheibendichtung +// +// Bitumenwellplatte: +// - Längsüberlappung: 1 Welle; Querüberlappung: min. 200 mm +// - First: Firsthaube + Schaumstoff-Dichtstreifen +// ------------------------------------------------------------ +module dachflaeche() { + + let (staerke = dach_staerke(), + breite_gesamt = vordach_breite + 2 * dach_ueberstand_seite) { + + color("LightBlue", 0.5) + translate([-dach_ueberstand_seite, 0, dach_hoehe_hinten]) + rotate([-dach_neigung_grad, 0, 0]) + cube([breite_gesamt, sparren_laenge, staerke]); + } +} + + +// ------------------------------------------------------------ +// 3.5 LÄNGSTRÄGER (First- und Traufpfette) +// Horizontale Träger parallel zur Hauswand. +// y_pos: Achsposition in Y, z_pos: Unterkante in Z +// ------------------------------------------------------------ +module laengstraeger(y_pos, z_pos) { + color("Sienna", 0.85) + translate([0, y_pos - sparren_breite / 2, z_pos]) + cube([vordach_breite, sparren_breite, sparren_hoehe]); +} + + +// ============================================================ +// 4. HAUPTASSEMBLIERUNG +// ============================================================ + +module vordach_komplett() { + + // --- Pfosten --- + // Gleichmäßig über die Breite verteilt an der Vorderkante + let (abstand = (pfosten_anzahl > 1) + ? (vordach_breite - pfosten_breite) / (pfosten_anzahl - 1) + : 0) { + + for (i = [0 : pfosten_anzahl - 1]) + let (px = pfosten_breite / 2 + i * abstand) + translate([px, + vordach_tiefe - pfosten_breite / 2, + 0]) + pfosten(); + } + + // --- Wandpfette --- + wandpfette(); + + // --- Sparren --- + for (i = [0 : sparren_count - 1]) + let (sx = -dach_ueberstand_seite + i * sparren_abstand) + translate([sx, 0, dach_hoehe_hinten]) + sparren(); + + // --- Firstpfette (wandseitig) und Traufpfette (vorne) --- + laengstraeger(0, dach_hoehe_hinten - sparren_hoehe); + laengstraeger(vordach_tiefe, dach_hoehe_vorne - sparren_hoehe); + + // --- Dachfläche --- + dachflaeche(); +} + + +// ============================================================ +// 5. RENDER-AUFRUF +// ============================================================ + +vordach_komplett(); + + +// ============================================================ +// 6. DEBUG / SCHNITTANSICHT (Kommentar entfernen zum Aktivieren) +// ============================================================ + +// Querschnitt in der Mitte (Y-Schnitt): +// intersection() { +// vordach_komplett(); +// translate([vordach_breite/2 - 5, -100, -100]) +// cube([10, vordach_tiefe + 200, dach_hoehe_hinten + 500]); +// } + +// Einzelmodule isoliert testen: +// pfosten(); +// wandpfette(); +// sparren(); +// dachflaeche(); + + +// ============================================================ +// 7. ANPASSUNGSGUIDE (Kurzreferenz) +// ============================================================ +// +// AUFGABE VARIABLE(N) +// ───────────────────────────────────────────────────────── +// Größe ändern vordach_breite, vordach_tiefe +// Gefälle einstellen dach_neigung_grad +// Dachmaterial wechseln dach_material (+ sparren_abstand prüfen!) +// Putzausgleich Wand wandtoleranz_y +// Höhenausgleich Wand wandtoleranz_z +// Pfosten-Querschnitt pfosten_breite +// Pfostenanzahl erhöhen pfosten_anzahl +// Überstand Traufe/Seite dach_ueberstand_vorne / dach_ueberstand_seite +// Renderauflösung $fn (oben, global) +// ───────────────────────────────────────────────────────── +// +// EXPORTHINWEIS: +// F5 = Vorschau (OpenCSG, schnell) +// F6 = vollständiges Render (CGAL) → dann STL / DXF exportieren +// File → Export → DXF → 2D-Projektion für Werkstattzeichnung +// ============================================================ diff --git a/vordach_holzauszug.xlsx b/vordach_holzauszug.xlsx new file mode 100644 index 0000000..a062353 Binary files /dev/null and b/vordach_holzauszug.xlsx differ