2D: Höhenkoten-Werkzeug + Masskette bleibt gerade + Punkt-Notation

Neues Werkzeug "Höhenkote" (SIA 400 B.5.4, Figur 18): Dreieck-Symbol +
Höhenwert an einem Punkt. Vier Varianten (OK/UK × fertig/roh) bestimmen
Dreieck-Richtung und Füllung, per Option umschaltbar. Die Norm ordnet
Zahlen UNTERHALB einer Masslinie explizit Höhenmassen zu — das war der
eigentliche Grund, warum ein separater Typ statt einer Bemassungs-Variante
nötig war.

Bemassungs-Korrektur: eine Masskette bleibt beim Zeichnen immer eine
GERADE Linie (Klicks ab dem dritten Punkt werden auf die durch Punkt 1/2
festgelegte Gerade projiziert), auch wenn die Bedienung wie eine Polylinie
funktioniert — vorher konnte man versehentlich einen Zickzack-Pfad
erzeugen.

Ausserdem: Masszahlen nutzen jetzt Punkt- statt Komma-Notation ("3.96"
statt "3,96") — die tatsächlich gezeichneten Beispiele in der Norm
(Figur 13/14/18) verwenden durchgängig den Punkt, nicht das Komma aus der
abstrakten B.5.2-Beispielliste.
This commit is contained in:
2026-08-22 02:32:11 +02:00
parent 4c7fc99eb8
commit 2dc57d01a5
21 changed files with 433 additions and 19 deletions
+2
View File
@@ -114,6 +114,8 @@ export function translateProject(project: Project, dx: number, dy: number): Proj
return { ...d, geom: { ...g, pts: shiftAll(g.pts, dx, dy) } };
case "dimension":
return { ...d, geom: { ...g, a: shift(g.a, dx, dy), b: shift(g.b, dx, dy) } };
case "kote":
return { ...d, geom: { ...g, at: shift(g.at, dx, dy) } };
case "text":
return { ...d, geom: { ...g, at: shift(g.at, dx, dy) } };
case "image":
+16
View File
@@ -1534,6 +1534,22 @@ export type Drawing2DGeom =
* andere Elemente — Assoziativität nur über die eigenen Endpunkte).
*/
| { shape: "dimension"; a: Vec2; b: Vec2; offset: number }
/**
* Höhenkote (SIA 400 B.5.4, Figur 18): Dreieck-Symbol + Höhenwert (Meter,
* ±0.00-Referenz frei wählbar, s. Norm) an einem Punkt. `kind` bestimmt
* Dreieck-Richtung (OK = Spitze nach unten, UK = Spitze nach oben) UND
* Füllung (fertig = Kontur/hohl, roh = voll gefüllt) — vier norm-genaue
* Varianten, die fünfte („OK fertig UND roh kombiniert") ist nicht gebaut.
* `at` ist die SPITZE des Dreiecks (der exakte referenzierte Punkt).
*/
| {
shape: "kote";
at: Vec2;
value: number;
kind: "okFertig" | "ukFertig" | "okRoh" | "ukRoh";
/** Drehung (Radiant); Werkzeug erzeugt bewusst nur 0, s. Ellipse-Muster. */
rotation: number;
}
| {
shape: "text";
at: Vec2;