2D: Multiline-Werkzeug (Basislinie + N-1 parallele Kopien in einer Geste)

Neuer Befehl multiline.ts, baut auf derselben Offset-Geometrie auf wie der
bestehende offset-Befehl (offsetSegment) — erzeugt aber alle Kopien auf
einmal statt einzeln nacheinander offsetten zu müssen. Deckt gerade
Basislinien ab (häufigster Fall: Grenzlinie+Abstand, Leitungspaar,
Randlinien), keine mehrsegmentige Variante.

Ablauf: Start-/Endpunkt (Tab-Felder Länge/Winkel wie line.ts), dann Abstand
per Maus-Klick (Seite bestimmt Vorzeichen, wie bei offset.ts) oder getippt;
die Anzahl (Default 3, Bereich 2-6) zyklt über eine Inline-Option und bleibt
wie Abstand/Seite über Aufrufe hinweg persistent.

In Registry/Aliase (ml/parallel), ToolsPanel (COMMANDS_EDIT neben Offset),
CommandIcon, i18n de/en aufgenommen.

2 neue Tests. tsc -b / vitest run (916/916) / npm run build grün.
This commit is contained in:
2026-08-20 21:07:21 +02:00
parent 245b7d7fe1
commit 4f48b73267
7 changed files with 354 additions and 1 deletions
+4
View File
@@ -29,6 +29,7 @@ import { trimCommand } from "./cmds/trim";
import { extendCommand } from "./cmds/extend";
import { filletCommand } from "./cmds/fillet";
import { chamferCommand } from "./cmds/chamfer";
import { multilineCommand } from "./cmds/multiline";
import { importCommand } from "./cmds/import";
import { terrainCommand } from "./cmds/terrain";
import { measureCommand } from "./cmds/measure";
@@ -64,6 +65,7 @@ export const COMMANDS: Record<string, Command> = {
extend: extendCommand,
fillet: filletCommand,
chamfer: chamferCommand,
multiline: multilineCommand,
import: importCommand,
terrain: terrainCommand,
measure: measureCommand,
@@ -121,6 +123,8 @@ export const ALIASES: Record<string, string> = {
verrunden: "fillet",
ch: "chamfer",
fasen: "chamfer",
ml: "multiline",
parallel: "multiline",
imp: "import",
ter: "terrain",
schnittlinie: "sectionline",