2D: By-Layer/By-Object-Attribute für Wand/Decke konsistent verdrahtet
resolveBackground (generatePlan/shared.ts) existierte korrekt implementiert, wurde aber nirgends aufgerufen — Wand-/Decken-Poché nutzte überall fest HATCH_INK/HATCH_PAPER, die By-Layer-Hintergrundfarbe kam nie im Renderer an. Signatur an resolveForeground angeglichen (string | undefined statt erzwungenem Component.color-Fallback), damit "kein Override gesetzt" weiter auf die neutrale SIA-Poché-Konvention fällt statt auf die rohe Bauteilfarbe — sonst hätte jedes bestehende Projekt ohne gesetzten Override optisch umgeschlagen. Verdrahtet in walls.ts/ceilings.ts (Grundriss) und neu auch in splitWallLayers/splitSlabLayers (Schnitt, toSection.ts) — dort fehlte bei MEHRSCHICHTIGEM Wand-/Deckentyp zusätzlich foreground/hatchId komplett (owner.foreground/hatchSource wurden nie an resolveForeground/resolveHatchId übergeben, nur der Default lief); splitSlabLayers bekam dafür einen neuen `owner: Ceiling`-Parameter (die einschichtigen Pfade über resolveWallSectionStyle/resolveCeilingSectionStyle waren bereits korrekt). Ceiling.strokeWeight/strokeWeightSource war komplett unverdrahtet (fixe LAYER_LINE_MM-Konstante) — das Attribut-Panel bietet aber einen Editier- Umschalter dafür (identisch zur Wand). addCeilingPoche bekommt jetzt eine aufgelöste lwMm (resolveStrokeWeight, wie schon bei der Wand); die Deckenkontur bleibt weiterhin die gestrichelte Überkopf-Ansichtslinie, nur die Dicke folgt jetzt dem Override — Verhaltensänderung auch im Default-Fall, wenn eine Kategorie eine von LAYER_LINE_MM abweichende Strichstärke trägt. Bewusst NICHT angefasst: Wand-/Decken-Strichstärke im Schnitt-Umriss (SECTION_CUT_OUTLINE_MM in generateSectionPlan) — eine einzige, uniforme Konstante für ALLE Schnitt-Polygone, kein Per-Bauteil-Wert; das wirkt wie eine bewusste Zeichnungskonvention (analog zur "grob"-Vollschwarz-Poché nach SIA 400 B.9/36), nicht wie der "UI verspricht etwas, Renderer hält es nicht"- Bugmuster der übrigen Funde. Würde ausserdem eine Erweiterung von SectionCutPolygon um ein Gewichtsfeld brauchen (heute keins) — grösserer, separat zu scopender Eingriff. 6 neue Tests (splitWallLayers/splitSlabLayers mit/ohne Override, Grundriss weiterhin über die 907 Gesamttests abgedeckt). tsc -b / vitest run (907/907) / npm run build grün.
This commit is contained in:
@@ -438,21 +438,25 @@ export function resolveForeground(
|
||||
}
|
||||
|
||||
/**
|
||||
* Kollabiert die Hintergrund-/Füllfarbkette (Poché) eines Bauteils, analog zu
|
||||
* {@link resolveForeground}:
|
||||
* Kollabiert die Hintergrund-/Füllfarbkette (Poché-Override) eines Bauteils zu
|
||||
* einem einzelnen Wert, exakt analog zu {@link resolveForeground}:
|
||||
* (Attribut-Override `override`) ?? (`source==="layer"` ⇒ `category.color`) ??
|
||||
* (`Component.background`) ?? `Component.color`.
|
||||
* Immer definiert (endet spätestens bei `Component.color` = heutiges Verhalten).
|
||||
* (`Component.background`) ?? `undefined`.
|
||||
* `undefined` als Endergebnis heißt „kein Override gesetzt" — Aufrufer fallen
|
||||
* dann auf ihren eigenen Default zurück (bei Wand/Decke die neutrale SIA-
|
||||
* Poché-Farbe HATCH_INK/HATCH_PAPER, NICHT `Component.color` — die reale
|
||||
* Bauteilfarbe soll die Schnitt-Konvention nicht überschreiben, nur ein
|
||||
* bewusster Override).
|
||||
*/
|
||||
export function resolveBackground(
|
||||
comp: Component,
|
||||
override?: string,
|
||||
category?: LayerCategory,
|
||||
source?: AttributeSource,
|
||||
): string {
|
||||
): string | undefined {
|
||||
if (override != null) return override;
|
||||
if (source === "layer") return category?.color ?? comp.background ?? comp.color;
|
||||
return comp.background ?? comp.color;
|
||||
if (source === "layer") return category?.color ?? comp.background;
|
||||
return comp.background;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user