Kommentare Öffnungssymbole: DIN- durch SIA-Referenz ersetzen
Die Dreh-/Kipp-/Schiebe-Symbolik in Ansicht und 3D war fälschlich als "DIN-Konvention" kommentiert (Grundlage ist SIA 400 B.9.1.3). Reine Kommentar-/Doku-Korrektur, keine Verhaltensänderung.
This commit is contained in:
+11
-9
@@ -100,7 +100,7 @@ const FRAME_FILL_COLOR = "#d9d9d4";
|
||||
const SILL_FILL_COLOR = "#cccccb";
|
||||
/** Türblatt-Fläche. */
|
||||
const DOOR_LEAF_FILL_COLOR = "#ede6d9";
|
||||
/** Öffnungssymbol (DIN-Andeutung): dezente Annotation, nicht Bauteilkante. */
|
||||
/** Öffnungssymbol (SIA-Andeutung): dezente Annotation, nicht Bauteilkante. */
|
||||
const SYMBOL_INK = "#7d858f";
|
||||
/** Neutraler Dach-Grauton, falls keine Eindeckungs-Schicht/-Farbe auflösbar ist (wie `toWalls3d.ts::ROOF_RGB`). */
|
||||
const ROOF_RGB_FALLBACK: RRgb = [0.72, 0.45, 0.36];
|
||||
@@ -610,7 +610,7 @@ interface ProjectedOpening {
|
||||
sashRects: Array<Array<[number, number]>>;
|
||||
/** Fensterbank (Sims): Bank + Tropfkante als zwei Bänder unter dem Rahmen. */
|
||||
sill: Array<Array<[number, number]>>;
|
||||
/** Öffnungssymbol (DIN-Ansicht): Linien exakt auf den Glasfeld-Ecken. */
|
||||
/** Öffnungssymbol (SIA-Ansicht): Linien exakt auf den Glasfeld-Ecken. */
|
||||
symbol: Array<[[number, number], [number, number]]>;
|
||||
/** Tür (Blatt-Fläche statt Glas, ausser Glas-Blatt). */
|
||||
isDoor: boolean;
|
||||
@@ -791,9 +791,10 @@ function collectOpenings(project: Project, frame: ElevationFrame): ProjectedOpen
|
||||
if (fa1 < 1 - fa - 1e-6) {
|
||||
pr.divisions.push([quadAt(pr.pts, fa1, fz), quadAt(pr.pts, fa1, fieldTop)]);
|
||||
}
|
||||
// Öffnungssymbol (DIN): Linien starten/enden EXAKT auf den Glasfeld-
|
||||
// Ecken (Nutzer-Report: Anker waren daneben). Dreh: Spitze am
|
||||
// Bandseiten-Mittel des Glasfelds; Kipp: Spitze oben Mitte (VW).
|
||||
// Öffnungssymbol (SIA B.9.1.3): Linien starten/enden EXAKT auf den
|
||||
// Glasfeld-Ecken (Nutzer-Report: Anker waren daneben). Dreh/Drehkipp:
|
||||
// Spitze zeigt zur Bandseite (Anschlag), Basis zur Griffseite — SIA-
|
||||
// Konvention. Kipp: Spitze oben Mitte (VW).
|
||||
const kind = sd.opening ?? wt?.kind ?? "fest";
|
||||
if (kind === "dreh" || kind === "drehkipp") {
|
||||
const hingeLeft = (sd.hingeSide ?? "left") === "left";
|
||||
@@ -812,9 +813,10 @@ function collectOpenings(project: Project, frame: ElevationFrame): ProjectedOpen
|
||||
);
|
||||
}
|
||||
if (kind === "schiebe") {
|
||||
// Schiebeflügel: KEIN Dreieck (keine Bandseite), sondern ein Pfeil in
|
||||
// Laufrichtung (horizontal) auf halber Glashöhe — die Griffseite
|
||||
// (hingeSide) bestimmt die Pfeilrichtung. Klassische DIN-Konvention.
|
||||
// Schiebeflügel (SIA: „vertikales/horizontales Schiebefenster"):
|
||||
// KEIN Dreieck (keine Bandseite), sondern ein Pfeil in Laufrichtung
|
||||
// (horizontal) auf halber Glashöhe — die Griffseite (hingeSide)
|
||||
// bestimmt die Pfeilrichtung.
|
||||
const zc = (gz0 + gz1) / 2;
|
||||
const toRight = (sd.hingeSide ?? "left") === "left"; // Griff links ⇒ schiebt nach rechts
|
||||
const tail = toRight ? gA : gB;
|
||||
@@ -1484,7 +1486,7 @@ export function generateElevationPlan(
|
||||
},
|
||||
});
|
||||
}
|
||||
// Öffnungssymbol (DIN): dünn gestrichelt über dem Glas.
|
||||
// Öffnungssymbol (SIA): dünn gestrichelt über dem Glas.
|
||||
for (const [a, bLn] of op.symbol) {
|
||||
items.push({
|
||||
depth: d,
|
||||
|
||||
@@ -416,7 +416,7 @@ const SHADING_RGB: RRgb = [0.88, 0.88, 0.9];
|
||||
*/
|
||||
const SILL_RGB: RRgb = [0.8, 0.8, 0.78];
|
||||
/**
|
||||
* Dunkles Grau der DIN-Öffnungssymbole (dünne Diagonalen AUF dem Glas, wie in der
|
||||
* Dunkles Grau der SIA-Öffnungssymbole (dünne Diagonalen AUF dem Glas, wie in der
|
||||
* 2D-Ansicht) — feine dunkle Linien auf der Scheibe (s. Symbol-Zweig in
|
||||
* {@link frameMeshesForOpening}). Als sehr dünne, in der Öffnungsebene gedrehte
|
||||
* Prismen ({@link openingPlaneBox}) knapp vor der Glasebene.
|
||||
@@ -1919,7 +1919,7 @@ function openingAxisBox(
|
||||
* absolute Welthöhe (Meter). Der Querschnitt spannt `±halfWidth` senkrecht zur
|
||||
* Längsachse INNERHALB der Ebene (gedreht mit) und `[nBack,nFront]` entlang der
|
||||
* Grundriss-Normalen (quer zur Wand, Tiefe). Damit lassen sich die schrägen
|
||||
* DIN-Öffnungssymbole (Dreh-/Kipp-Diagonalen) als dünne, gedrehte dunkle Riegel
|
||||
* SIA-Öffnungssymbole (Dreh-/Kipp-Diagonalen) als dünne, gedrehte dunkle Riegel
|
||||
* AUF dem Glas erzeugen — der Renderer kennt nur Dreiecks-Meshes, keine Linien.
|
||||
* `null` bei entarteter Länge (≤ EPS). 8 Ecken, dieselbe {@link OPENING_BOX_TRIS}-
|
||||
* Topologie (doppelseitig gerendert ⇒ Winding egal; die drei Bits parametrisieren
|
||||
@@ -2161,9 +2161,9 @@ function resolveOpeningFrame(project: Project, wall: Wall, op: Opening): Opening
|
||||
* DetailLevel-Staffelung (VW-Detailgrad „fein" als Referenz):
|
||||
* • „grob" — wird gar nicht aufgerufen (s. {@link emitOpeningFrames}).
|
||||
* • „mittel"— Blendrahmen + Oberlicht-Kämpfer + Flügelrahmen (verschachtelt) +
|
||||
* Fensterbank/Zargen-Umgriff, aber KEINE Sprossen und KEINE DIN-Symbole.
|
||||
* Fensterbank/Zargen-Umgriff, aber KEINE Sprossen und KEINE SIA-Symbole.
|
||||
* • „fein" — zusätzlich Flügel-Mittelpfosten + Kämpfer-Zeilen (Sprossen) und
|
||||
* die DIN-Öffnungssymbole ({@link openingPlaneBox}) auf dem Glas.
|
||||
* die SIA-Öffnungssymbole ({@link openingPlaneBox}) auf dem Glas.
|
||||
*/
|
||||
function frameMeshesForOpening(
|
||||
wall: Wall,
|
||||
@@ -2240,7 +2240,7 @@ function frameMeshesForOpening(
|
||||
// über die Tiefe: der Flügelrahmen sitzt in einem EIGENEN, leicht ZURÜCK-
|
||||
// GESETZTEN und flacheren Quer-Band (`sashBackN..sashFrontN`) hinter der
|
||||
// Blendrahmen-Vorderkante — eine plastische Stufe nach innen (VW „fein"),
|
||||
// ohne vor die Fassade auszukragen. Zusätzlich (nur „fein") die DIN-Öffnungs-
|
||||
// ohne vor die Fassade auszukragen. Zusätzlich (nur „fein") die SIA-Öffnungs-
|
||||
// symbole auf dem Glas. Feste Flügel bekommen weder Flügelrahmen noch Symbol.
|
||||
if (sashesOn && params.sashes.length > 0 && sashTo - sashFrom > EPS && sashTop - sashBottom > EPS) {
|
||||
const segs = resolveSashSpans(params.sashes, sashFrom, sashTo);
|
||||
@@ -2275,7 +2275,7 @@ function frameMeshesForOpening(
|
||||
pushSash(ct - sfw, ct, bz, tz); // rechter Flügelholm
|
||||
pushSash(cf, ct, tz - sfw, tz); // oberer Flügelriegel
|
||||
pushSash(cf, ct, bz, bz + sfw); // unterer Flügelriegel
|
||||
// DIN-Öffnungssymbole (nur „fein") auf dem Glasfeld INNERHALB des Flügel-
|
||||
// SIA-Öffnungssymbole (nur „fein") auf dem Glasfeld INNERHALB des Flügel-
|
||||
// rahmens — exakt wie in der 2D-Ansicht (s. toElevation): Dreh = V mit
|
||||
// Spitze am Bandseiten-Mittel des Glasfelds, Kipp = V mit Spitze oben Mitte.
|
||||
if (!fine) continue;
|
||||
@@ -2686,9 +2686,9 @@ export interface Model3dOptions {
|
||||
* • "grob" — keine Rahmen/Sprossen (nur Loch + Scheibe).
|
||||
* • "mittel"— Blendrahmen (Pfosten/Sturz/Schwelle) + ggf. Kämpfer, dazu die
|
||||
* verschachtelten Flügelrahmen, Fensterbank (Sims) und Zargen-Umgriff — aber
|
||||
* KEINE Sprossen und KEINE DIN-Öffnungssymbole.
|
||||
* KEINE Sprossen und KEINE SIA-Öffnungssymbole.
|
||||
* • "fein" — zusätzlich Flügel-Mittelpfosten + Kämpfer-Zeilen (Sprossen) und
|
||||
* die DIN-Öffnungssymbole (Dreh/Kipp) auf dem Glas.
|
||||
* die SIA-Öffnungssymbole (Dreh/Kipp) auf dem Glas.
|
||||
* Fehlt es, gilt "fein" (= volle Details).
|
||||
*/
|
||||
detail?: DetailLevel;
|
||||
|
||||
Reference in New Issue
Block a user