Elemente: BIM Project Browser + Properties-Satellite-Window
Zwei neue Satellite-Windows (analog Kamera/Text-Editor): 1) Projekt-Übersicht (elemente_uebersicht.py + ElementeUebersichtApp.jsx) - Tree Geschoss → Kind → Element-Instanzen - Suche + Kind-Filter-Chips - Klick = selektieren in Rhino, Shift+Klick = zoomen - Erreichbar via account_tree-Button im Elemente-Panel-Header 2) Properties-Satellite (elemente_properties.py + ElementePropertiesApp.jsx) - Eigenes Fenster mit der PropertiesView (gemeinsame Komponente) - Live-Updates: elemente._send_state forwarded zu satellite-bridge via sticky - Erreichbar via open_in_new-Icon oben rechts in der Properties-Karte - Inline-Properties im Panel bleiben — Satellite ist für mehr Platz Plus ElementeApp-Cleanup: - ElementList (alle Elemente-Liste) raus — wird jetzt von Projekt- Übersicht abgedeckt. - Properties springen bei Selektion nach oben, NeuesElement bleibt voll sichtbar darunter (kein Scrollen mehr). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
+23
-2
@@ -4684,6 +4684,20 @@ class ElementeBridge(panel_base.BaseBridge):
|
||||
elif t == "DELETE_WALL": self._delete_wall(p.get("id"))
|
||||
elif t == "DELETE_ELEMENT": self._delete_wall(p.get("id"))
|
||||
elif t == "REGENERATE_ALL": self._regenerate_all()
|
||||
elif t == "OPEN_ELEMENTE_UEBERSICHT":
|
||||
try:
|
||||
import elemente_uebersicht
|
||||
elemente_uebersicht.open_as_window()
|
||||
except Exception as ex:
|
||||
print("[ELEMENTE] open uebersicht:", ex)
|
||||
elif t == "OPEN_ELEMENTE_PROPERTIES":
|
||||
try:
|
||||
import elemente_properties
|
||||
elemente_properties.open_as_window()
|
||||
# Direkt mal pushen damit das Fenster sofort Daten hat
|
||||
self._send_state()
|
||||
except Exception as ex:
|
||||
print("[ELEMENTE] open properties:", ex)
|
||||
|
||||
def _notify_active_geschoss(self):
|
||||
"""Schlanker Partial-Push: nur activeGeschoss + activeGeschossName.
|
||||
@@ -4884,7 +4898,7 @@ class ElementeBridge(panel_base.BaseBridge):
|
||||
})
|
||||
elements.append(base)
|
||||
sel_id = next((e["id"] for e in elements if e["selected"]), None)
|
||||
self.send("STATE", {
|
||||
payload = {
|
||||
"elements": elements,
|
||||
"geschosse": [{"id": g.get("id"), "name": g.get("name")}
|
||||
for g in geschosse if isinstance(g, dict)],
|
||||
@@ -4897,7 +4911,14 @@ class ElementeBridge(panel_base.BaseBridge):
|
||||
{"name": n, "color": m["color"],
|
||||
"hatch": m.get("hatch", ""), "scale": m.get("scale", 1.0)}
|
||||
for n, m in _MATERIAL_LIBRARY.items()],
|
||||
})
|
||||
}
|
||||
self.send("STATE", payload)
|
||||
# An Properties-Satellite-Window forwarden falls offen
|
||||
try:
|
||||
pb = sc.sticky.get("elemente_properties_bridge")
|
||||
if pb is not None and pb is not self:
|
||||
pb.send("STATE", payload)
|
||||
except Exception: pass
|
||||
|
||||
# --- Wand-Befehle -------------------------------------------------------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user