Files
DOSSIER/rhino/aliases/dossier_view_mode.py
T
karim 24f6b76f06 Translate remaining internal log messages to English
- EBENEN: drawing levels updated, sublayer not found, saved/verified
- GESTALTUNG: Linetypes before/after, fill field, opened/focused
- CLIP: disabled done
- ELEMENTE: Bulk-op, Listener bail
- Global: not found, not available, unchanged, failed, present
2026-06-06 12:19:10 +02:00

73 lines
2.4 KiB
Python

#! 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>
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()))