Schnitt/Ansicht-Feinschliff: Kantenfilter, Print-Toggle, echte Fenster in der Ansicht

Vier Nutzer-Punkte:
1. Editieren im Schnitt funktioniert (Klick auf die Poché wählt das Bauteil,
   headless verifiziert) — die Störung waren die Kanten GESCHNITTENER
   Bauteile: der Extraktor projizierte auch deren Restkörper (Deckel-/
   Bodenkanten quer durch die eigene Poché). computeSection filtert sie jetzt;
   Ansichtskanten ungeschnittener Bauteile (Rückwand-Fenster etc.) bleiben.
2. Verdeckte Kanten (gestrichelt) sind Standard AUS — zuschaltbar je Ebene
   (DrawingLevel.hiddenLines, Checkbox in der Schnittlinien-Sektion).
3. Display/Print-Umschalter wirkt jetzt in ALLEN 2D-Darstellungen (Grundriss,
   Schnitt, Ansicht, Zeichnung) — war fälschlich auf den Grundriss begrenzt.
4. Fenster/Türen in der Ansicht als echtes Bauteil: Blendrahmen-Fläche →
   Flügelfelder (aus der Flügeltabelle, ungleiche Breiten/Pfosten) → Glas,
   Kämpfer/Oberlicht-Teilung, DIN-Öffnungssymbol (dezent gestrichelt,
   Dreh/Kipp/Drehkipp je Anschlag); Türen mit Rahmen + Blatt-Fläche.
737/737 grün; headless verifiziert (Schnitt A + Ansicht Süd).
This commit is contained in:
2026-07-11 02:18:09 +02:00
parent b96714641a
commit 4c4c9907af
8 changed files with 229 additions and 16 deletions
+13
View File
@@ -1141,6 +1141,19 @@ export async function computeSection(
plane.normal[2],
);
const output = JSON.parse(json) as SectionOutput;
// Kanten GESCHNITTENER Bauteile verwerfen: der Extraktor projiziert auch die
// Restkörper der geschnittenen Wände/Decken (Deckel-/Bodenkanten laufen quer
// durch die eigene Schnitt-Poché — die „komischen Linien über den
// Schnittlinien"). Die Schnittgeometrie trägt die Poché-Kontur selbst; die
// Ansichtskanten UNGESCHNITTENER Bauteile (z. B. Fenster der Rückwand)
// bleiben erhalten.
const cutOwners = new Set(
output.cutPolygons.map((cp) => `${cp.component.kind}:${cp.component.index}`),
);
const notCut = (e: SectionEdge): boolean =>
!cutOwners.has(`${e.component.kind}:${e.component.index}`);
output.visibleEdges = output.visibleEdges.filter(notCut);
output.hiddenEdges = output.hiddenEdges.filter(notCut);
// Dächer TS-seitig ergänzen (der Rust-Extraktor kennt nur Wände + Decken).
appendRoofSections(output, project, plane);
attachCutStyles(output, project, plane);