#! python3 # SPDX-License-Identifier: AGPL-3.0-or-later # Copyright (C) 2026 Karim Gabriele Varano """Loescht ALLE Custom-Display-Modes (User-erstellte) — laesst die Rhino- Built-ins (Wireframe, Shaded, Rendered, Ghosted, XRay, Technical, Artistic, Pen, Monochrome, Arctic, Raytraced) in Ruhe. Loescht auch Orphan-Modes ohne Namen (die manchmal bei abgebrochenen Imports hierbleiben und Rhino zum Crash bringen wenn man sie anklickt). Vorgehen: _RunPythonScript /Users/karim/STUDIO/DOSSIER/rhino/_clean_display_modes.py """ from Rhino.Display import DisplayModeDescription BUILTIN_NAMES = { "Wireframe", "Shaded", "Rendered", "Ghosted", "X-Ray", "XRay", "X Ray", "Technical", "Artistic", "Pen", "Monochrome", "Arctic", "Raytraced", } deleted = [] kept = [] errors = [] for dm in list(DisplayModeDescription.GetDisplayModes()): name_en = name_local = None try: name_en = dm.EnglishName except Exception: pass try: name_local = dm.LocalName except Exception: pass name_display = name_en or name_local or "(Orphan, kein Name)" is_builtin = (name_en in BUILTIN_NAMES) or (name_local in BUILTIN_NAMES) if is_builtin: kept.append(name_display) continue # Custom oder Orphan → loeschen try: dm_id = dm.Id ok = DisplayModeDescription.DeleteDisplayMode(dm_id) if ok: deleted.append("{} ({})".format(name_display, dm_id)) else: errors.append("{} → DeleteDisplayMode returned False".format(name_display)) except Exception as ex: errors.append("{} → {}".format(name_display, ex)) print("[CLEAN] Display-Modes gesaeubert.") print("[CLEAN] Built-ins behalten ({}):".format(len(kept))) for n in kept: print(" ✓ {}".format(n)) print("") print("[CLEAN] Geloescht ({}):".format(len(deleted))) for n in deleted: print(" × {}".format(n)) if errors: print("") print("[CLEAN] Fehler ({}):".format(len(errors))) for e in errors: print(" ! {}".format(e)) print("") print("[CLEAN] Fertig. Jetzt _reset_panels.py laufen lassen damit der") print("[CLEAN] Plugin den 'Dossier Plan' aus dem Template neu importiert.")