#! python 3 """ 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")