Treppen 2D-Plansymbol + Pure-Transform fuer hidden Layer
Frontend: - 2D-Plansymbol pro Treppe (Tritte/Lauflinie/Aussenlinie/Bruchsymbol) mit per-Treppe-Toggles in Properties-Panel - 'Obere Stufen gestrichelt'-Toggle splittet Tritte/Aussenlinie an Schnittebene; Lauflinie hat zwei Pfeile bei Bruch - Wand-Polyline-Grips fuer alle Vertices (nicht nur Enden) - PopupMenu unterstuetzt Divider + Checkbox-Items Backend: - Eigener Layer 41_Treppen_2D fuer Plansymbol, Layer-Default schwarz - Aussenlinie-Polygone folgen der Bruch-Diagonale (kein Versatz mehr) - Linetype-Fallback laedt Dashed bei Bedarf nach - Tritten-immer-an (Toggle entfernt), Z auf Geschoss-OKFF - TREPPEN/RAEUME Layer-Migration auf Capital-Case (Treppen/Raeume) - Selection-Partnership: treppe_2d_symbol pairs in axis + volume Pure-Transform fuer Treppen-Move: - treppe_2d_symbol + treppe_volume in VOLUME_TYPES → cascade-Support - Phase 1.5 Volume-only-Detection: wenn Source unbewegt aber Volumes uniform translated → synthetisiere canonical aus Avg-Delta der bewegten Volumes (unbewegte rausgefiltert sonst Verzerrung) - Hidden-inclusive ObjectEnumerator in Snapshot + Apply-Loop damit hidden treppe_axis auf 40_Treppen mit-transformiert wird - Properties-Fallback im _send_state findet hidden Sources via expliziter Iteration → Panel zeigt Treppe auch bei 3D-Layer aus - Dimensionen-Panel skipt on_select/idle waehrend UT_ACTIVE oder Partnership-Cascade → keine Flicker beim Drag mehr
This commit is contained in:
@@ -586,6 +586,10 @@ def _install_listeners(bridge):
|
||||
# tick_idle iteriert alle Doc-Objekte, das ist Overhead bei jedem
|
||||
# Tick zwischen den einzelnen Deletes. CommandEnd refresht.
|
||||
if sc.sticky.get("_dossier_bulk_op_active"): return
|
||||
# Waehrend Gumball/Move/Rotate: nicht pollen. Geometrie ist gerade
|
||||
# in Transit (Live-Replace pro Frame), Werte wuerden mit ~5/s
|
||||
# zwischen Frames flickern. CommandEnd triggert finalen _send_state.
|
||||
if sc.sticky.get("_dossier_user_transform_active"): return
|
||||
b = sc.sticky.get("dimensionen_bridge")
|
||||
if b is not None:
|
||||
try: b.tick_idle()
|
||||
@@ -595,6 +599,15 @@ def _install_listeners(bridge):
|
||||
# Swisstopo-Import feuert tausende Selection-Events → bail.
|
||||
if sc.sticky.get("dossier_swisstopo_busy"): return
|
||||
if sc.sticky.get("_dossier_bulk_op_active"): return
|
||||
# Waehrend elemente.py's Partnership-Cascade (Klick auf Wand/Treppe
|
||||
# → 30+ Partner selektiert in einem Rutsch): NICHT pro Event ein
|
||||
# _send_state feuern. Sonst rauscht das Dimensionen-Panel mit 30+
|
||||
# Re-Renders durch und die Werte/Auswahl-Anzeige flickert wild.
|
||||
# Der Idle-Tick holt die finale Selektion eh ~5/s nach.
|
||||
if sc.sticky.get("_elemente_select_busy"): return
|
||||
# Waehrend User-Transform (Gumball/Move/Rotate): kein Re-Send, sonst
|
||||
# rauscht Replace-Storm durch und der Frontend-State zappelt.
|
||||
if sc.sticky.get("_dossier_user_transform_active"): return
|
||||
b = sc.sticky.get("dimensionen_bridge")
|
||||
if b is not None:
|
||||
try: b._send_state(force=True)
|
||||
|
||||
Reference in New Issue
Block a user