2D: Griff-Editieren funktioniert jetzt auch bei Mehrfachauswahl
Bug: grips/edgeGrips in useGripEditing.ts waren über sich gegenseitig ausschliessende Zweige auf genau ein selektiertes Element zugeschnitten; bei zwei oder mehr gewählten Elementen (Zeichnungen oder Wänden) traf kein Zweig, beide Arrays wurden leer -> keine Griffe mehr sichtbar/ziehbar. Neues GripOwner-Modell (gripOwners/gripOwnerRange parallel zum flachen grips-Array, EdgeGrip.owner? neu im Modell): jedes gewählte Element liefert weiterhin einen eigenen, zusammenhängenden Vertex-/Kanten-Block. applyGrip/applyEdge/cycleGripEditField/onGripMove lösen die Zielroute (moveGripOf/moveEdgeOf) jetzt pro Griff über dessen owner auf statt über die singulären selectedDrawingId/selectedWallId. Einzelauswahl ist ein Spezialfall derselben Logik, kein separater Pfad. Der Tab-Feld-Controller (getippte Länge/Winkel beim Ziehen) funktioniert dadurch auch bei Mehrfachauswahl korrekt pro Griff. Öffnung/Treppe/Decke/Raum bleiben bewusst exklusiv (kein Multi-Select für diese vier). PlanView.tsx brauchte keine Änderung, da Hit-Test und Rendering dort bereits generisch über die flachen grips/edgeGrips-Arrays laufen.
This commit is contained in:
@@ -1616,6 +1616,13 @@ export interface EdgeGrip {
|
||||
* entlang der Außennormale wie bisher.
|
||||
*/
|
||||
free?: boolean;
|
||||
/**
|
||||
* Zu welchem Element diese Kante gehört (für Mehrfachauswahl — mehrere
|
||||
* gewählte Elemente liefern je eigene Kanten-Griffe). Fehlt bei den
|
||||
* exklusiven Einzel-Fällen (Decke/Raum), die weiterhin über die separat
|
||||
* gehaltene `selectedCeilingId`/`selectedRoomId` aufgelöst werden.
|
||||
*/
|
||||
owner?: { drawingId?: string; wallId?: string };
|
||||
}
|
||||
|
||||
// ── Extrudierter Körper (truck-Integration, docs/design/truck-plan.md) ─────
|
||||
|
||||
Reference in New Issue
Block a user