9dc191be4f
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>
52 lines
1.3 KiB
Python
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")
|