Merge: Ansicht (Elevation) als echte 2D-Darstellung + Schatten-Toggle
toElevation.ts: Painter-Projektion des 3D-Modells auf die Ansichtsebene (Fassaden-/Deckenflächen fern→nah, Rückseiten-Culling, Fenster/Türen als Rahmen+Glas, Bodenlinie) + klassischer 45°-Schlagschatten auskragender Bauteile (Sutherland–Hodgman auf die Empfängerfläche geclippt). Schatten- Umschalter in der Ansichts-Leiste (DrawingLevel.shadows), App rendert elevation-Ebenen über den neuen Generator (synchron, ohne WASM).
This commit is contained in:
@@ -1393,6 +1393,12 @@ export interface ViewRibbonTabProps {
|
||||
renderModeEnabled: boolean;
|
||||
planColorMode: PlanColorMode;
|
||||
onPlanColorMode: (m: PlanColorMode) => void;
|
||||
/** Ob die aktive Ebene eine Ansicht (kind "elevation") ist — nur dann ist der
|
||||
* Schatten-Umschalter sichtbar/aktiv. */
|
||||
shadowsAvailable: boolean;
|
||||
/** Schlagschatten der aktiven Ansicht ein/aus (DrawingLevel.shadows). */
|
||||
shadows: boolean;
|
||||
onShadows: (v: boolean) => void;
|
||||
combos: ComboMenuHandlers;
|
||||
/** Text-/Font-Formatierung auf DERSELBEN Leiste (Raumstempel-Ziel; `null` =
|
||||
* nur Defaults). Liegt bewusst im „Ansichten"-Tab (Nutzer-Wunsch). */
|
||||
@@ -1428,6 +1434,9 @@ export function ViewRibbonTab({
|
||||
renderModeEnabled,
|
||||
planColorMode,
|
||||
onPlanColorMode,
|
||||
shadowsAvailable,
|
||||
shadows,
|
||||
onShadows,
|
||||
combos,
|
||||
textTarget,
|
||||
}: ViewRibbonTabProps) {
|
||||
@@ -1662,6 +1671,25 @@ export function ViewRibbonTab({
|
||||
<Sep />
|
||||
|
||||
|
||||
{/* Schatten ein/aus — NUR für eine aktive Ansicht (kind "elevation").
|
||||
Schreibt DrawingLevel.shadows; der Ansichts-Generator (toElevation)
|
||||
zeichnet dann den 45°-Schlagschatten auskragender Bauteile. */}
|
||||
{shadowsAvailable && (
|
||||
<>
|
||||
<div className="tb-group" role="group" aria-label={t("elevation.shadows")}>
|
||||
<button
|
||||
className={`tb-toggle${shadows ? " active" : ""}`}
|
||||
onClick={() => onShadows(!shadows)}
|
||||
title={t("elevation.shadows.hint")}
|
||||
aria-pressed={shadows}
|
||||
>
|
||||
{t("elevation.shadows")}
|
||||
</button>
|
||||
</div>
|
||||
<Sep />
|
||||
</>
|
||||
)}
|
||||
|
||||
{/* Text-/Font-Formatierung auf DERSELBEN Leiste (Nutzer-Wunsch: Text und
|
||||
Ansichten zusammen) — Stil/Schrift/Grösse + B/I/U · L/C/R + Zeilenhöhe,
|
||||
formatiert das aktuelle Text-Ziel (Raumstempel) live. */}
|
||||
|
||||
Reference in New Issue
Block a user