Files
DOSSIER/rhino/clean_layers.py
T
karim 9dc191be4f Initial commit — Dossier Rhino 8 Plugin
OpenStudio-Suite Architektur-Plugin fuer Rhino 8 (Mac):
- Smart-Elemente: Wand, Decke, Dach (Pult/Sattel/Walm/Mansarde),
  Oeffnungen (Fenster/Tueren mit Rahmen + Sims + Glas + Fluegel),
  Treppen (gerade · L · Wendel mit Schrittmass-Validierung)
- Live-Previews mit Step-Lines + Soll-Range-Clamping
- Bidirektionale Selection-Sync zwischen Source-Linie und Volume
- Geschoss-/Ebenen-Verwaltung mit OKFF-Persistenz
- Layouts mit PDF-Export
- Ausschnitte / Massstab / Override-Regeln
- Petrol-Gruen Theme (Rapport-konform)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 04:27:41 +02:00

52 lines
1.3 KiB
Python

# ! python3
"""
clean_layers.py
Loescht Rhino-Standardlayer (Default, Layer 01-05 usw.)
die keine Objekte enthalten und nicht zum RhinoPanel gehoeren.
Ausfuehren via _RunPythonScript.
"""
import re
import Rhino
import scriptcontext as sc
sc.sticky["rhinopanel_registered"] = False
sc.sticky["rhinopanel_form"] = None
doc = Rhino.RhinoDoc.ActiveDoc
PROTECTED = {
"10_grundrisse", "20_schnitte", "30_ansichten",
"00_raster", "01_vermessung", "40_situation",
"90_referenzen", "99_konstruktion",
}
pattern = re.compile(r'^(default|layer\s*0*\d+)$', re.IGNORECASE)
gone = []
skip = []
for i in range(doc.Layers.Count - 1, -1, -1):
layer = doc.Layers[i]
root = layer.FullPath.split("::")[0].strip().lower()
if root in PROTECTED:
continue
if not pattern.match(layer.Name.strip()):
continue
try:
if doc.Layers.Delete(i, True):
gone.append(layer.Name)
else:
skip.append(layer.Name)
except Exception:
skip.append(layer.Name)
doc.Views.Redraw()
if gone:
print("[clean_layers] Geloescht: {}".format(", ".join(gone)))
else:
print("[clean_layers] Nichts geloescht (schon sauber?)")
if skip:
print("[clean_layers] Uebersprungen (Objekte drauf): {}".format(", ".join(skip)))
print("[clean_layers] Panel-Sticky zurueckgesetzt")