Attribute: By-Layer/By-Object-Quelle fuer Farbe, Strichstaerke, Schraffur
Vordergrund, Hintergrund, Strichstaerke und Schraffur je Element (Wand/Decke/ Drawing2D) haben jetzt einen 3-Wege-Quellen-Dropdown: Nach Ebene / Nach Bauteil / eigener Wert. Aufloesungsreihenfolge: expliziter Wert > (Quelle 'layer' => LayerCategory-Wert color/lw/hatch) > Bauteil/LineStyle-Default. Neue *Source-Felder + strokeWeight/hatchId-Overrides am Modell (additiv, optional), getLayerCategory-Accessor, resolveHatchId/resolveStrokeWeight; resolveForeground/Background um category+source erweitert. Sample rendert identisch (kein Override/Source gesetzt => Default 'object' = altes Verhalten). Offen: LayerCategory-Schraffur noch nicht im Kategorie-Dialog editierbar.
This commit is contained in:
@@ -15,6 +15,7 @@ import {
|
||||
} from "../model/types";
|
||||
import type {
|
||||
Component,
|
||||
Drawing2D,
|
||||
DrawingLevel,
|
||||
HatchStyle,
|
||||
LayerCategory,
|
||||
@@ -152,6 +153,13 @@ export interface ProjectSlice {
|
||||
id: string,
|
||||
value: string | null,
|
||||
) => void;
|
||||
/**
|
||||
* Generischer immutabler Patch auf ein Drawing2D (per ID) — analog zu
|
||||
* `updateWall`/`updateCeiling`. Trägt u. a. die By-Layer/By-Object-
|
||||
* Quellenfelder (`foregroundSource`/`backgroundSource`/`strokeWeightSource`/
|
||||
* `hatchSource`), die kein eigenes Setter-Paar haben.
|
||||
*/
|
||||
updateDrawing2D: (id: string, patch: Partial<Drawing2D>) => void;
|
||||
/**
|
||||
* Skaliert die Geometrie eines Elements auf Zielbreite×-höhe (Meter) um einen
|
||||
* Ankerpunkt (fx/fy ∈ [0,1] relativ zur bbox; 0,0 = oben-links).
|
||||
@@ -748,6 +756,12 @@ export function createProjectSlice(
|
||||
setElementBackground: (kind, id, value) =>
|
||||
setProject((p) => setOverrideField(p, kind, id, "background", value)),
|
||||
|
||||
updateDrawing2D: (id, patch) =>
|
||||
setProject((p) => ({
|
||||
...p,
|
||||
drawings2d: p.drawings2d.map((d) => (d.id === id ? { ...d, ...patch } : d)),
|
||||
})),
|
||||
|
||||
// ── Größe (Resize um Anker) ────────────────────────────────────────────
|
||||
resizeElement: (kind, id, w, h, anchor) =>
|
||||
setProject((p) => resizeElement(p, kind, id, w, h, anchor)),
|
||||
|
||||
Reference in New Issue
Block a user