#! python3 # -*- coding: utf-8 -*- # SPDX-License-Identifier: AGPL-3.0-or-later # Copyright (C) 2026 Karim Gabriele Varano """ dossier_view_mode.py Setzt Display-Mode (+ optional Standard-Ansicht) im aktiven Viewport. Aufruf: _-RunPythonScript "/.../dossier_view_mode.py" mode: plan | persp3d | material | raytracing """ import sys import Rhino _MODES = { "plan": {"display": "Dossier Plan", "view": "Top", "label": "DOSSIER Plan-Mode"}, "persp3d": {"display": "Dossier 3D", "view": "Perspective","label": "DOSSIER 3D-Mode"}, "material": {"display": "Dossier Material", "view": None, "label": "DOSSIER Material-Mode"}, "raytracing": {"display": "Dossier Raytracing", "view": None, "label": "DOSSIER Raytracing"}, } def _apply(mode_name): spec = _MODES.get(mode_name) if spec is None: print("[VIEW-MODE] Unbekannt:", mode_name) return try: Rhino.RhinoApp.SetCommandPrompt(spec.get("label", "DOSSIER View")) except Exception: pass doc = Rhino.RhinoDoc.ActiveDoc if doc is None: print("[VIEW-MODE] Kein aktives Doc") return view = doc.Views.ActiveView if view is None: print("[VIEW-MODE] Kein aktiver Viewport") return # Standard-View setzen (Top / Perspective) falls definiert vw_name = spec["view"] if vw_name: try: view.ActiveViewport.SetProjection( Rhino.Display.DefinedViewportProjection.Top if vw_name == "Top" else Rhino.Display.DefinedViewportProjection.Perspective, vw_name, True) except Exception as ex: print("[VIEW-MODE] view-set:", ex) # Display-Mode setzen via Description-Lookup dm_name = spec["display"] try: all_dm = Rhino.Display.DisplayModeDescription.GetDisplayModes() target = None for d in all_dm: if d.EnglishName == dm_name or d.LocalName == dm_name: target = d; break if target is None: print("[VIEW-MODE] Display-Mode not found:", dm_name) return view.ActiveViewport.DisplayMode = target view.Redraw() except Exception as ex: print("[VIEW-MODE] display-mode:", ex) if __name__ == "__main__": if len(sys.argv) >= 2: _apply(str(sys.argv[1]).strip().lower()) else: print("[VIEW-MODE] Erwartet Mode-Name:", ", ".join(_MODES.keys()))