From 9cde41b68639e53583621b4e1070b14cacbe9ac2 Mon Sep 17 00:00:00 2001 From: karim Date: Wed, 20 May 2026 13:31:31 +0200 Subject: [PATCH] =?UTF-8?q?Idle:=20bail=20bei=20User-Transform=20(Move/Dra?= =?UTF-8?q?g/Gumball)=20=E2=80=94=20Element=20bleibt=20zusammen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Der Idle-Handler verarbeitet Pending-Regens + Cascade-Queues. Lief bislang auch waehrend _UT_ACTIVE_KEY (Move/Gumball/Drag), debounct nur ueber last_replace_time. Auf Mac feuert Move aber teils via Delete+Re-Add statt Replace → debounce greift nicht zuverlaessig, Idle koennte mitten in einem Move ein Volume regenerieren und damit die Geometrie unter Rhinos Transform wegziehen → einzelne Sub-Volumen blieben am alten Ort, Element zerfaellt optisch. Fix: idle bail bei _UT_ACTIVE_KEY. CommandEnd der Transform-Cmds sync't Volumen selber, dort werden die Regens richtig in den Transform-Undo-Record gefaltet. Co-Authored-By: Claude Opus 4.7 --- rhino/elemente.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/rhino/elemente.py b/rhino/elemente.py index ff955be..f9fae4d 100644 --- a/rhino/elemente.py +++ b/rhino/elemente.py @@ -9240,6 +9240,12 @@ def _on_idle_selection(sender, e): # Waehrend Bulk-Op (z.B. _Delete bei 6000 OSM-Curves): nicht pollen. # Wuerde sonst pro Idle-Tick alle Objekte iterieren = Quasi-Stall. if sc.sticky.get(_BULK_ACTIVE_KEY): return + # Waehrend User-Transform (Move/Drag/Gumball): keine Regen-/Cascade- + # Verarbeitung. Sonst kann ein gequeuter Regen die Geometrie wegziehen + # die Rhino gerade interaktiv transformiert → Element zerfaellt + # waehrend des Verschiebens. Die Transform-CommandEnd-Logik kuemmert + # sich selber um Volume-Sync am Ende. + if sc.sticky.get(_UT_ACTIVE_KEY): return b = sc.sticky.get("elemente_bridge") if b is None: return doc = Rhino.RhinoDoc.ActiveDoc