Linien: modulares Segment-System (Strich/Punkt/Luecke) + Loop-Vorschau

Der Linien-Editor ist modular: eine Linie ist eine geordnete, loopende Folge
aus Segmenten Strich (Laenge), Punkt (Dot) und Luecke (Laenge) — beliebige
Sequenzen (Volllinie/Strichlinie/Punktlinie/Strich-Punkt als Presets, plus
frei), die Schluss-Luecke ist die letzte Luecke. Datenbasis bleibt
LineStyle.dash (mm, alternierend); ein Punkt ist ein 0-Laengen-AN-Segment.
Enthaelt dash eine 0, wird die Linie mit runder Kappe gezeichnet, damit
Punkte als Dots erscheinen (Live + Print; GL/DXF Folgearbeit). Neue reine
Segment-Logik in ui/lineSegments.ts. LineSwatch zeigt den ersten Loop dunkel
und 2 weitere grau (Loop-Kontext). 14 neue Tests, 127 gruen.
This commit is contained in:
2026-07-04 01:21:04 +02:00
parent f09ba0e49f
commit a302d512d9
10 changed files with 433 additions and 60 deletions
+13 -2
View File
@@ -572,10 +572,21 @@ export const de = {
"resources.random.reroll": "Neu würfeln",
"resources.stroke.solid": "Vollinie",
"resources.stroke.dash": "Strich",
"resources.dash.segments": "Segmente (mm)",
"resources.dash.hint": "Alternierend Strich/Lücke in mm (z. B. 1, 2 = 1 mm Strich, 2 mm Lücke).",
"resources.dash.segments": "Segmente",
"resources.dash.hint": "Geordnete, loopende Folge aus Strich/Punkt/Lücke (mm). Die letzte Lücke ist der Abstand zum nächsten Loop.",
"resources.dash.add": "Segment",
"resources.dash.remove": "Segment entfernen",
"resources.linePreset.label": "Muster",
"resources.linePreset.solid": "Vollinie",
"resources.linePreset.dash": "Strichlinie",
"resources.linePreset.dot": "Punktlinie",
"resources.linePreset.dashDot": "Strich-Punkt",
"resources.seg.dash": "Strich",
"resources.seg.dot": "Punkt",
"resources.seg.gap": "Lücke",
"resources.seg.addDash": "+ Strich",
"resources.seg.addDot": "+ Punkt",
"resources.seg.addGap": "+ Lücke",
"resources.hatchKind.vector": "Vektor",
"resources.hatchKind.image": "Bild",
"resources.lines.parallel": "Parallel",
+13 -2
View File
@@ -567,10 +567,21 @@ export const en: Record<TranslationKey, string> = {
"resources.random.reroll": "Re-roll",
"resources.stroke.solid": "Solid",
"resources.stroke.dash": "Dash",
"resources.dash.segments": "Segments (mm)",
"resources.dash.hint": "Alternating dash/gap in mm (e.g. 1, 2 = 1 mm dash, 2 mm gap).",
"resources.dash.segments": "Segments",
"resources.dash.hint": "Ordered, looping sequence of dash/dot/gap (mm). The last gap is the spacing to the next loop.",
"resources.dash.add": "Segment",
"resources.dash.remove": "Remove segment",
"resources.linePreset.label": "Pattern",
"resources.linePreset.solid": "Solid",
"resources.linePreset.dash": "Dashed",
"resources.linePreset.dot": "Dotted",
"resources.linePreset.dashDot": "Dash-dot",
"resources.seg.dash": "Dash",
"resources.seg.dot": "Dot",
"resources.seg.gap": "Gap",
"resources.seg.addDash": "+ Dash",
"resources.seg.addDot": "+ Dot",
"resources.seg.addGap": "+ Gap",
"resources.hatchKind.vector": "Vector",
"resources.hatchKind.image": "Image",
"resources.lines.parallel": "Parallel",