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
This commit is contained in:
2026-06-06 12:19:10 +02:00
parent 9fcada260e
commit 24f6b76f06
21 changed files with 112 additions and 112 deletions
+1 -1
View File
@@ -23,7 +23,7 @@ for dm in DisplayModeDescription.GetDisplayModes():
dmd = dm; break
if dmd is None:
print("[INSPECT] 'Dossier Plan' nicht gefunden")
print("[INSPECT] 'Dossier Plan' not found")
else:
attrs = dmd.DisplayAttributes
print("[INSPECT] Mode gefunden: {} (Id={})".format(dmd.EnglishName, dmd.Id))
+2 -2
View File
@@ -165,7 +165,7 @@ def _t_join_attempt(doc, sel):
"""T-Join: 2 OFFENE Kurven wobei der EINE Endpunkt der einen Kurve
nahe (< 1m) auf der ANDEREN Kurve mitten landet (zwischen deren
Endpunkten). Schiebt diesen Endpunkt exakt auf die andere Kurve.
Die andere Kurve bleibt unveraendert.
Die andere Kurve bleibt unchanged.
Auch 1-Wand-Modus: wenn nur 1 wand_axis selektiert, sucht automatisch
die naechste andere Wand und snappt diese eine.
@@ -407,7 +407,7 @@ def _run():
curves = [o.Geometry for o in objs]
result = rg.Curve.CreateBooleanUnion(curves, tol)
except Exception as ex:
print("[SMART-JOIN] BooleanUnion in Gruppe fehlgeschlagen:", ex)
print("[SMART-JOIN] BooleanUnion in Gruppe failed:", ex)
continue
if not result: continue
# C) Pre-Check Overlap: wenn result-Anzahl gleich input-Anzahl
+1 -1
View File
@@ -57,7 +57,7 @@ def _apply(mode_name):
if d.EnglishName == dm_name or d.LocalName == dm_name:
target = d; break
if target is None:
print("[VIEW-MODE] Display-Mode nicht gefunden:", dm_name)
print("[VIEW-MODE] Display-Mode not found:", dm_name)
return
view.ActiveViewport.DisplayMode = target
view.Redraw()
+2 -2
View File
@@ -75,7 +75,7 @@ _SPECIAL_KEY_NAMES = {
def _normalize_key_part(key_part):
"""Mapped Sonderzeichen wie '-' auf Enum-Namen ('Minus'). Buchstaben/F-Keys
bleiben unveraendert (Case-preserved)."""
bleiben unchanged (Case-preserved)."""
if key_part in _SPECIAL_KEY_NAMES:
return _SPECIAL_KEY_NAMES[key_part]
return key_part
@@ -156,7 +156,7 @@ def _xml_persist_shortcut(xml_key, macro, verbose=False):
r'<entry\s+key="' + re.escape(xml_key) + r'"\s*(/>|>[^<]*</entry>)')
m = pat.search(content)
if m:
# Check Line-Kontext: nur diese Entry auf Zeile + unveraendert?
# Check Line-Kontext: nur diese Entry auf Zeile + unchanged?
line_start = content.rfind("\n", 0, m.start()) + 1
line_end = content.find("\n", m.end())
if line_end < 0: line_end = len(content)
+4 -4
View File
@@ -243,7 +243,7 @@ def apply_snapshot_to_detail(doc, detail, snap_id):
Liefert True bei Erfolg."""
snap = next((s for s in _load_snapshots(doc) if s.get("id") == snap_id), None)
if not snap:
print("[AUSSCHNITTE] apply_to_detail: snap nicht gefunden", snap_id)
print("[AUSSCHNITTE] apply_to_detail: snap not found", snap_id)
return False
# Page-View ermitteln (fuer SetActiveDetail/SetPageAsActive)
page_view = None
@@ -611,7 +611,7 @@ class AusschnittBridge(panel_base.BaseBridge):
vp.Name = new_name
except Exception as ex:
print("[AUSSCHNITTE] Rename:", ex)
# Gespeicherten Massstab anwenden (z.B. "1:50") — falls vorhanden und
# Gespeicherten Massstab anwenden (z.B. "1:50") — falls present und
# Viewport parallel ist (in Perspective ignoriert massstab._apply_scale).
try:
scale_str = (snap.get("scale") or "").strip()
@@ -668,7 +668,7 @@ class AusschnittBridge(panel_base.BaseBridge):
doc = Rhino.RhinoDoc.ActiveDoc
snap = next((s for s in self._load(doc) if s.get("id") == snap_id), None)
if not snap:
print("[AUSSCHNITTE] Snap nicht gefunden:", snap_id)
print("[AUSSCHNITTE] Snap not found:", snap_id)
return
snap_by_id = {}
for ls in (snap.get("layers") or []):
@@ -773,7 +773,7 @@ class AusschnittBridge(panel_base.BaseBridge):
doc = Rhino.RhinoDoc.ActiveDoc
snap = next((s for s in self._load(doc) if s.get("id") == snap_id), None)
if not snap:
print("[AUSSCHNITTE] open_settings: snap nicht gefunden", snap_id)
print("[AUSSCHNITTE] open_settings: snap not found", snap_id)
return
outer = self
bridge_holder = {"form": None, "id": snap_id}
+1 -1
View File
@@ -44,7 +44,7 @@ def _on_begin_command(sender, e):
Rhino.UI.Panels.FocusPanel(guid)
except Exception: pass
if sc.sticky.get(_VERBOSE_KEY):
print("[BEGIN-CMD] Gestaltung-Panel opened/fokussiert")
print("[BEGIN-CMD] Gestaltung-Panel opened/focused")
except Exception as ex:
print("[BEGIN-CMD] OpenPanel:", ex)
try:
+38 -38
View File
@@ -488,7 +488,7 @@ def _build_sia_preset_rules():
def _ensure_sia_preset(force=False):
"""Stellt sicher dass das SIA-Preset im cross-doc Presets-File existiert.
force=True: ueberschreibt bestehendes Preset (Single-Source-of-Truth aus
elemente.py). force=False: nur anlegen wenn noch nicht vorhanden so
elemente.py). force=False: nur anlegen wenn noch not present so
bleiben User-Anpassungen aus dem Overrides-Panel erhalten."""
try:
import overrides as _ov
@@ -726,7 +726,7 @@ def _resolve_decke_z(doc, gid, dicke, uk_over, ok_over):
def _find_ebene_sublayer_name(doc, keywords, default_code, default_name,
default_color="#888888", default_lw=0.35):
"""Findet aus der Ebenen-Liste den ersten Sublayer der einem der Keywords
entspricht. Wenn nicht gefunden, wird der Sublayer mit den Default-Werten
entspricht. Wenn not found, wird der Sublayer mit den Default-Werten
AUTOMATISCH in die Ebenen-Liste eingetragen (damit er auch im Ebenen-
Manager-UI erscheint) und der Rhinopanel-Bridge ein State-Refresh
getriggert. Ergebnis: 'CODE_NAME' wie 'WAENDE'."""
@@ -747,7 +747,7 @@ def _find_ebene_sublayer_name(doc, keywords, default_code, default_name,
if kw in low:
return "{}_{}".format(e.get("code", default_code),
name or default_name)
# 2) Auto-Add: weder Keyword noch Code vorhanden → Eintrag anlegen
# 2) Auto-Add: weder Keyword noch Code present → Eintrag anlegen
if ebenen and not any(isinstance(e, dict) and e.get("code") == default_code
for e in ebenen):
ebenen.append({
@@ -821,7 +821,7 @@ def _ensure_referenz_child_in_doc(doc, parent_code, parent_keywords,
parent_code + 'r' (z.B. '20r'). Liefert (parent_sub_name, child_sub_name)
fuer Pfad-Konstruktion.
Idempotent: legt nur an wenn nicht vorhanden, triggert dann
Idempotent: legt nur an wenn not present, triggert dann
build_layers + broadcast_state."""
parent_sub = _find_ebene_sublayer_name(
doc, parent_keywords, parent_code, parent_default_name,
@@ -1491,7 +1491,7 @@ def _make_treppe_preview_handler(p0, breite, referenz, n_stufen,
- `fixed_length`: Mausvektor wird genau auf diese Laenge reskaliert
- `min_length` / `max_length`: Mausvektor wird in dieser Range
geclampt (frei innerhalb, Stop bei den Grenzen)
- sonst: Mausvektor wird unveraendert benutzt"""
- sonst: Mausvektor wird unchanged benutzt"""
import System.Drawing as SD
color_axis = SD.Color.FromArgb(255, 95, 200, 180)
color_edge = SD.Color.FromArgb(180, 140, 215, 200)
@@ -4933,7 +4933,7 @@ def _read_meta(obj):
def _find_objects_by_wall_id(doc, wall_id, type_filter=None):
"""Findet alle Rhino-Objekte mit der gegebenen wall_id. Hidden+Locked
werden mit-iteriert sonst werden Treppen-Volumes auf hidden 3D-Layer
nicht gefunden + Regen-Replace schlaegt fehl Duplikate."""
not found + Regen-Replace schlaegt fehl Duplikate."""
out = []
try:
_s = Rhino.DocObjects.ObjectEnumeratorSettings()
@@ -4959,7 +4959,7 @@ def _find_axis(doc, wall_id):
def _wall_group_index(doc, wall_id, create_if_missing=True):
"""Liefert den Rhino-Group-Index fuer eine Wand (Group enthaelt axis +
alle volumes). Wenn noch keine existiert + create_if_missing: erstelle
eine neue Gruppe und ordne die Achse zu. -1 wenn axis nicht gefunden."""
eine neue Gruppe und ordne die Achse zu. -1 wenn axis not found."""
axis_obj = _find_axis(doc, wall_id)
if axis_obj is None: return -1
try:
@@ -6570,7 +6570,7 @@ def _make_decke_volume(outline_curve, dicke, uk, ok, hole_curves=None):
rg.Point3d(0, 0, ok))
result = face.CreateExtrusion(path, True)
if result is None or not result.IsValid:
print("[ELEMENTE] BrepFace.CreateExtrusion fehlgeschlagen"
print("[ELEMENTE] BrepFace.CreateExtrusion failed"
"Fallback ohne Loch.")
return _make_decke_volume(outline_curve, dicke, uk, ok, None)
return result
@@ -6790,7 +6790,7 @@ def _make_raum_stamp_text(centroid, name, nummer, funktion, area, rundung,
elif align == "rechts": te.Justification = rg.TextJustification.MiddleRight
else: te.Justification = rg.TextJustification.MiddleCenter
except Exception: pass
# Font/Style — nur wenn doc + font_name vorhanden, sonst Doc-Default
# Font/Style — nur wenn doc + font_name present, sonst Doc-Default
if doc is not None and font:
try:
f = Rhino.DocObjects.Font.FromQuartetProperties(
@@ -9481,7 +9481,7 @@ def _regenerate_element_body(doc, element_id, src_obj, meta, geom, geschoss_name
Rhino.DocObjects.ObjectColorSource.ColorFromObject)
attrs.ObjectColor = SD.Color.FromArgb(255, 0, 0, 0)
except Exception: pass
# Faces via Material — wenn voll-dict mit PBR vorhanden, PBR-
# Faces via Material — wenn voll-dict mit PBR present, PBR-
# Material mit Texturen bauen, sonst einfaches Diffuse-Material.
mat_idx = -1
if full_mat_dict is not None:
@@ -10087,7 +10087,7 @@ def _regen_treppe_2d_symbol(doc, element_id, meta, geom, g_start, geschoss_name,
def _ensure_linetype_dashed(doc):
"""Liefert Index der 'Dashed'-Linetype. Wenn nicht vorhanden, laedt sie
"""Liefert Index der 'Dashed'-Linetype. Wenn not present, laedt sie
via LoadDefaultLinetypes nach. Fallback -1 (= By Layer continuous)."""
def _find():
try:
@@ -11033,7 +11033,7 @@ class ElementeBridge(panel_base.BaseBridge):
try:
with _TimedBlock("Wand AddCurve + Regen"):
if doc.Objects.AddCurve(axis, attrs) == System.Guid.Empty:
print("[ELEMENTE] Wand AddCurve fehlgeschlagen"); return
print("[ELEMENTE] Wand AddCurve failed"); return
# Joint-Cache invalidieren — neue Wand-Achse ist im Doc.
_invalidate_joints_cache(geschoss_id)
_regenerate_element(doc, wall_id)
@@ -11186,7 +11186,7 @@ class ElementeBridge(panel_base.BaseBridge):
dicke, uk_over, ok_over, "mid")
outline_id = doc.Objects.AddCurve(outline, attrs)
if outline_id == System.Guid.Empty:
print("[ELEMENTE] Decke AddCurve fehlgeschlagen"); return
print("[ELEMENTE] Decke AddCurve failed"); return
_regenerate_element(doc, element_id)
doc.Views.Redraw()
print("[ELEMENTE] Decke erzeugt: {}".format(element_id))
@@ -11294,7 +11294,7 @@ class ElementeBridge(panel_base.BaseBridge):
0.0, "", "", "mid", aussp_parent=decke_id)
new_id = doc.Objects.AddCurve(outline, attrs)
if new_id == System.Guid.Empty:
print("[ELEMENTE] Aussparung AddCurve fehlgeschlagen"); return
print("[ELEMENTE] Aussparung AddCurve failed"); return
_save_last(aussp_modus=modus)
# Eltern-Decke regenerieren — das Loch wird abgezogen
_regenerate_element(doc, decke_id)
@@ -11458,7 +11458,7 @@ class ElementeBridge(panel_base.BaseBridge):
dach_variante=dach_variante)
outline_id = doc.Objects.AddCurve(outline, attrs)
if outline_id == System.Guid.Empty:
print("[ELEMENTE] Dach AddCurve fehlgeschlagen"); return
print("[ELEMENTE] Dach AddCurve failed"); return
_regenerate_element(doc, element_id)
doc.Views.Redraw()
print("[ELEMENTE] Dach erzeugt: {} ({}, neigung={}°)".format(
@@ -11725,7 +11725,7 @@ class ElementeBridge(panel_base.BaseBridge):
pt_at_brueest = rg.Point3d(on_axis.X, on_axis.Y, wall_uk + float(brueest))
new_id = doc.Objects.AddPoint(pt_at_brueest, attrs)
if new_id == System.Guid.Empty:
print("[ELEMENTE] AddPoint fehlgeschlagen"); return
print("[ELEMENTE] AddPoint failed"); return
# Last-used
if typ == "fenster":
@@ -11762,7 +11762,7 @@ class ElementeBridge(panel_base.BaseBridge):
geschosse = _load_geschosse(doc)
gs = _geschoss_by_id(doc, geschoss_start)
if gs is None:
print("[ELEMENTE] Startgeschoss nicht gefunden"); return
print("[ELEMENTE] Startgeschoss not found"); return
geschoss_end = p.get("geschossEnd") or ""
if not geschoss_end:
# naechstes Geschoss > start_okff
@@ -12287,7 +12287,7 @@ class ElementeBridge(panel_base.BaseBridge):
treppe_art=treppe_art)
new_id = doc.Objects.AddCurve(line, attrs)
if new_id == System.Guid.Empty:
print("[ELEMENTE] AddCurve fehlgeschlagen"); return
print("[ELEMENTE] AddCurve failed"); return
save_kwargs = dict(treppe_breite=breite, treppe_n=n_stufen,
treppe_referenz=referenz,
treppe_modus=modus_def,
@@ -12415,7 +12415,7 @@ class ElementeBridge(panel_base.BaseBridge):
trag_angle=angle, trag_z_over=z_over)
new_id = doc.Objects.AddPoint(pt3, attrs)
if new_id == System.Guid.Empty:
print("[ELEMENTE] Stuetze AddPoint fehlgeschlagen"); return
print("[ELEMENTE] Stuetze AddPoint failed"); return
_save_last(stuetze_profil=profil, stuetze_b=B, stuetze_h=H,
stuetze_d=D, stuetze_t=t_wall, stuetze_angle=angle)
_regenerate_element(doc, element_id)
@@ -12546,7 +12546,7 @@ class ElementeBridge(panel_base.BaseBridge):
trag_angle=angle, trag_z_over=z_over)
new_id = doc.Objects.AddCurve(line, attrs)
if new_id == System.Guid.Empty:
print("[ELEMENTE] Traeger AddCurve fehlgeschlagen"); return
print("[ELEMENTE] Traeger AddCurve failed"); return
_save_last(traeger_profil=profil, traeger_b=B, traeger_h=H,
traeger_d=D, traeger_t=t_wall, traeger_angle=angle)
_regenerate_element(doc, element_id)
@@ -12649,7 +12649,7 @@ class ElementeBridge(panel_base.BaseBridge):
raum_txt_h=txt_h)
new_id = doc.Objects.AddCurve(outline_curve, attrs)
if new_id == System.Guid.Empty:
print("[ELEMENTE] Raum AddCurve fehlgeschlagen"); return
print("[ELEMENTE] Raum AddCurve failed"); return
_save_last(raum_modus=modus, raum_name_last=name,
raum_rundung=rundung, raum_funktion=funktion,
raum_txt_h=txt_h)
@@ -12701,7 +12701,7 @@ class ElementeBridge(panel_base.BaseBridge):
stempel_scope=scope, stempel_txt_h=txt_h)
new_id = doc.Objects.AddText(te, attrs)
if new_id == System.Guid.Empty:
print("[ELEMENTE] Stempel AddText fehlgeschlagen"); return
print("[ELEMENTE] Stempel AddText failed"); return
_save_last(stempel_txt_h=txt_h)
doc.Views.Redraw()
print("[ELEMENTE] Stempel erzeugt: {} (scope={})".format(stempel_id, scope))
@@ -12970,7 +12970,7 @@ class ElementeBridge(panel_base.BaseBridge):
stile = load_raum_stempel_stile(doc)
stil = next((s for s in stile if s.get("id") == sid), None)
if stil is None:
print("[ELEMENTE] APPLY_RAUM_STIL: Stil {} nicht gefunden".format(sid))
print("[ELEMENTE] APPLY_RAUM_STIL: Stil {} not found".format(sid))
return
# Stil-Felder → Patch fuer _update_wall-Pfad
patch_base = {}
@@ -13069,7 +13069,7 @@ class ElementeBridge(panel_base.BaseBridge):
stile = load_stempel_stile(doc)
stil = next((s for s in stile if s.get("id") == sid), None)
if stil is None:
print("[ELEMENTE] APPLY_STEMPEL_STIL: {} nicht gefunden".format(sid))
print("[ELEMENTE] APPLY_STEMPEL_STIL: {} not found".format(sid))
return
# Stil-Felder → Patch fuer _update_wall stempel-Branch
patch_base = {}
@@ -13214,7 +13214,7 @@ class ElementeBridge(panel_base.BaseBridge):
subprocess.Popen(["open", url])
print("[ELEMENTE] Swisstopo Karte geoeffnet:", url)
except Exception as ex:
print("[ELEMENTE] Karte oeffnen fehlgeschlagen:", ex)
print("[ELEMENTE] Karte oeffnen failed:", ex)
def _cmd_import_swisstopo(self, p):
"""File-Picker -> Rhino _-Import -> bewege neue Objekte auf den
@@ -13224,7 +13224,7 @@ class ElementeBridge(panel_base.BaseBridge):
doc = Rhino.RhinoDoc.ActiveDoc
if doc is None: return
kind = (p.get("kind") or "buildings").lower()
# Target-Sublayer ableiten (auto-anlegen wenn nicht vorhanden)
# Target-Sublayer ableiten (auto-anlegen wenn not present)
if kind == "buildings":
sub_name = _find_ebene_sublayer_name(
doc, ["gebaeude", "gebäude", "buildings"],
@@ -13275,7 +13275,7 @@ class ElementeBridge(panel_base.BaseBridge):
try:
Rhino.RhinoApp.RunScript(cmd, False)
except Exception as ex:
print("[ELEMENTE] _-Import fehlgeschlagen:", ex); return
print("[ELEMENTE] _-Import failed:", ex); return
# Differenz: neu hinzugekommene Objekte
new_objs = []
@@ -13298,13 +13298,13 @@ class ElementeBridge(panel_base.BaseBridge):
import layer_builder
parent_idx = layer_builder._find_top_by_id(doc, z_id)
if parent_idx < 0:
print("[ELEMENTE] Swisstopo: Parent-Layer nicht gefunden")
print("[ELEMENTE] Swisstopo: Parent-Layer not found")
return
parent_id = doc.Layers[parent_idx].Id
code = sub_name.split("_", 1)[0]
sub_idx = layer_builder._find_sublayer_by_code(doc, parent_id, code)
if sub_idx < 0:
print("[ELEMENTE] Swisstopo: Sublayer {} nicht gefunden "
print("[ELEMENTE] Swisstopo: Sublayer {} not found "
"— bitte erst Ebenen-Apply ausloesen".format(code))
return
moved = 0
@@ -13646,7 +13646,7 @@ class ElementeBridge(panel_base.BaseBridge):
len(grids), len(merged["points"]),
len(merged["es"]), len(merged["ns"])))
except Exception as ex:
self._push_log("Grid-Merge fehlgeschlagen: {}".format(ex))
self._push_log("Grid-Merge failed: {}".format(ex))
# Terrain-Volumize-Option: aus Opts lesen. depth in
# METERN aus UI → in Doc-Units konvertieren.
@@ -13676,7 +13676,7 @@ class ElementeBridge(panel_base.BaseBridge):
if vol_obj is not None: obj = vol_obj
if obj: mesh_objects.append((obj, merged_grid["bbox"]))
except Exception as ex:
self._push_log("Mesh-Bau fehlgeschlagen: {}".format(ex))
self._push_log("Mesh-Bau failed: {}".format(ex))
# Contours sind die Grundlage fuer vier moegliche Outputs:
# 'contours' → flache 2D-Curves auf OKFF
@@ -14157,7 +14157,7 @@ class ElementeBridge(panel_base.BaseBridge):
base_idx = layer_builder._find_sublayer_by_code(
doc, parent_id, "80")
if base_idx < 0:
self._push_log(" 80_swisstopo nicht gefunden")
self._push_log(" 80_swisstopo not found")
return
base_id = doc.Layers[base_idx].Id
moved = 0
@@ -14165,7 +14165,7 @@ class ElementeBridge(panel_base.BaseBridge):
sub_idx = layer_builder._find_sublayer_by_code(
doc, base_id, tile_id)
if sub_idx < 0:
self._push_log(" Sub-Layer fuer {} nicht gefunden".format(tile_id))
self._push_log(" Sub-Layer fuer {} not found".format(tile_id))
continue
try:
attrs = obj.Attributes.Duplicate()
@@ -14342,7 +14342,7 @@ class ElementeBridge(panel_base.BaseBridge):
doc, with_children=not solid)
parent_idx = layer_builder._find_top_by_id(doc, z_id)
if parent_idx < 0:
self._push_log(" Geschoss nicht gefunden"); return
self._push_log(" Geschoss not found"); return
parent_id = doc.Layers[parent_idx].Id
base_idx = layer_builder._find_sublayer_by_code(
doc, parent_id, target_code)
@@ -16255,7 +16255,7 @@ def _on_object_deleted(sender, e):
wenn die Source mit gleicher ID zurueckkommt (= Transform, kein User-
Delete).
"""
# Waehrend Swisstopo-Import: keine DOSSIER-Metas vorhanden, nur Overhead
# Waehrend Swisstopo-Import: keine DOSSIER-Metas present, nur Overhead
if sc.sticky.get("dossier_swisstopo_busy"): return
# Waehrend Move/Rotate/Mirror/Scale: CommandEnd-Pfad uebernimmt das
# Re-Sync. Sonst queued der Delete-Event ueberfluessige Regen-Calls die
@@ -16628,7 +16628,7 @@ def _migrate_plangrafik_60_to_80_once(doc):
e["code"] = "80"
changed = True
break
# RAEUME / GF / AGF proaktiv eintragen wenn noch nicht vorhanden — damit
# RAEUME / GF / AGF proaktiv eintragen wenn noch not present — damit
# sie im Ebenen-Manager sichtbar sind ohne erst einen Raum erstellen zu
# muessen.
existing_codes = {e.get("code") for e in ebenen if isinstance(e, dict)}
@@ -16970,7 +16970,7 @@ def _on_idle_selection(sender, e):
# One-shot: alte wand_outline Curves entfernen (Feature deaktiviert
# wegen Technical-Drawing Konflikt)
_migrate_strip_wand_outlines_once(doc)
# Oeffnungen-Tree in dossier_ebenen anlegen falls noch nicht vorhanden
# Oeffnungen-Tree in dossier_ebenen anlegen falls noch not present
# (sonst erscheinen die neuen Sublayer nicht im Ebenen-Panel).
_ensure_oeff_ebenen_once(doc)
@@ -17360,7 +17360,7 @@ def _on_command_begin(sender, e):
# Listener bail-out — am Ende einmal redrawn.
if name in _USER_BULK_CMDS:
sc.sticky[_BULK_ACTIVE_KEY] = name
print("[ELEMENTE] Bulk-Op start: '{}' — Listener bail aktiv".format(name))
print("[ELEMENTE] Bulk-op start: '{}' — Listener bail active".format(name))
try:
sc.sticky["_dossier_bulk_redraw_prev"] = bool(doc.Views.RedrawEnabled)
doc.Views.RedrawEnabled = False
+1 -1
View File
@@ -56,7 +56,7 @@ for n in dir(layer):
except Exception as ex:
print(" layer.{} -> err: {}".format(n, ex))
# layer.SectionStyle dumpen wenn vorhanden
# layer.SectionStyle dumpen wenn present
try:
if hasattr(layer, "SectionStyle"):
dump("layer.SectionStyle", layer.SectionStyle)
+10 -10
View File
@@ -102,7 +102,7 @@ def _find_linetype_index(doc, name):
def _try_set(obj, prop_names, value):
"""Versucht den Wert auf das erste vorhandene Property zu setzen.
"""Versucht den Wert auf das erste presente Property zu setzen.
Liefert den Property-Namen bei Erfolg, sonst None."""
if isinstance(prop_names, str):
prop_names = (prop_names,)
@@ -170,7 +170,7 @@ def _apply_section_style(doc, layer, section_cfg, layer_color):
layer.RemoveCustomSectionStyle()
print(diag, "removed (kein Hatch + kein Boundary)")
except Exception as ex:
print(diag, "remove fehlgeschlagen:", ex)
print(diag, "remove failed:", ex)
return
style = SS()
@@ -384,7 +384,7 @@ def build_layers(doc, zeichnungsebenen, ebenen):
diag_prefix=z_name + "/")
doc.Views.Redraw()
n_total = len(walk_ebenen(ebenen))
print("[EBENEN] {} Zeichnungsebenen x {} Ebenen aktualisiert (inkl. {} Sub)".format(
print("[EBENEN] {} drawing levels x {} layers updated (incl. {} sub)".format(
len(zeichnungsebenen), len(ebenen), max(0, n_total - len(ebenen))))
@@ -532,7 +532,7 @@ def update_clipping_plane(doc, active_z, enabled):
is_geschoss = bool(active_z and active_z.get("isGeschoss") and active_z.get("okff") is not None)
# IMMER vorhandene Plane loeschen — bei Re-Enable wollen wir frische
# IMMER presente Plane loeschen — bei Re-Enable wollen wir frische
# vp_ids (alte koennten leer/falsch sein, dann clippt das Replace zwar
# die Geometrie aber keinen Viewport).
if existing is not None:
@@ -540,15 +540,15 @@ def update_clipping_plane(doc, active_z, enabled):
doc.Objects.Delete(existing.Id, True)
print("[CLIP] alte Plane geloescht")
except Exception as ex:
print("[CLIP] Delete fehlgeschlagen:", ex)
print("[CLIP] Delete failed:", ex)
if (not enabled) or (not is_geschoss):
print("[CLIP] disabled — fertig (enabled={}, isGeschoss={})".format(enabled, is_geschoss))
print("[CLIP] disabled — done (enabled={}, isGeschoss={})".format(enabled, is_geschoss))
doc.Views.Redraw()
return
# dict.get(k, default) liefert default NUR wenn Key fehlt — bei
# Key-vorhanden-aber-None gibt's None zurueck. float(None) crasht.
# Key-present-aber-None gibt's None zurueck. float(None) crasht.
# Daher explizit None-faangen:
okff_raw = active_z.get("okff")
sh_raw = active_z.get("schnitthoehe")
@@ -656,7 +656,7 @@ def cleanup_default_layers(doc):
except Exception:
pass
if deleted:
print("[EBENEN] Default-Layer entfernt: {}".format(", ".join(deleted)))
print("[EBENEN] Default layer removed: {}".format(", ".join(deleted)))
def _find_sublayer_by_code_recursive(doc, parent_id, code):
@@ -682,14 +682,14 @@ def set_active_sublayer(doc, zeichnungsebene_id, code):
7101_Strassen liegt zwei Ebenen tief)."""
parent_idx = _find_top_by_id(doc, zeichnungsebene_id)
if parent_idx < 0:
print("[EBENEN] Parent-Layer fuer Zeichnungsebene {} nicht gefunden".format(zeichnungsebene_id))
print("[EBENEN] Parent-Layer fuer Zeichnungsebene {} not found".format(zeichnungsebene_id))
return
parent_id = doc.Layers[parent_idx].Id
sub_idx = _find_sublayer_by_code_recursive(doc, parent_id, code)
if sub_idx >= 0:
doc.Layers.SetCurrentLayerIndex(sub_idx, True)
else:
print("[EBENEN] Sublayer mit Code {} unter Parent {} nicht gefunden".format(code, doc.Layers[parent_idx].Name))
print("[EBENEN] Sublayer with code {} under parent {} not found".format(code, doc.Layers[parent_idx].Name))
def apply_visibility(doc, zeichnungsebenen, ebenen, active_z_id, active_code, z_mode, e_mode):
+11 -11
View File
@@ -234,7 +234,7 @@ def _read_launcher_schema():
data = json.loads(f.read().decode("utf-8"))
schema = (data or {}).get("layerSchema")
if isinstance(schema, list) and schema:
# Sanity: alle vier Pflichtfelder vorhanden
# Sanity: alle vier Pflichtfelder present
clean = [r for r in schema
if isinstance(r, dict)
and r.get("code") and r.get("name")
@@ -673,7 +673,7 @@ def apply_layer_preset_by_name(doc, name):
presets = load_layer_presets(doc)
preset = next((p for p in presets if p.get("name") == name), None)
if preset is None:
print("[EBENEN] apply_layer_preset_by_name: '{}' nicht gefunden".format(name))
print("[EBENEN] apply_layer_preset_by_name: '{}' not found".format(name))
return False
payload = {
"layers": preset.get("layers") or [],
@@ -1621,7 +1621,7 @@ class EbenenBridge(panel_base.BaseBridge):
def _send_library(self):
"""Sendet aktuelle Library-Items ans Frontend
(LIBRARY_ITEMS-Message). Items kommen mit
previewDataUri (base64 PNG) wenn Vorschau vorhanden."""
previewDataUri (base64 PNG) wenn Vorschau present."""
try:
import library
m = library.load_manifest()
@@ -1952,7 +1952,7 @@ class EbenenBridge(panel_base.BaseBridge):
replaced = True
break
if not replaced:
print("[EBENEN] save_geschoss: id {} nicht gefunden".format(gid))
print("[EBENEN] save_geschoss: id {} not found".format(gid))
return
# Build_layers + Save via _apply (durchlaeuft ohne save_e)
e_raw = doc.Strings.GetValue("dossier_ebenen")
@@ -2055,7 +2055,7 @@ class EbenenBridge(panel_base.BaseBridge):
return False
replaced = _replace_in_tree(e_list, orig_code, updated)
if not replaced:
print("[EBENEN] save_ebene: code {} nicht gefunden".format(orig_code))
print("[EBENEN] save_ebene: code {} not found".format(orig_code))
return
z_raw = doc.Strings.GetValue("dossier_zeichnungsebenen")
try: z_list = json.loads(z_raw) if z_raw else []
@@ -2191,10 +2191,10 @@ class EbenenBridge(panel_base.BaseBridge):
n_with_fill = sum(1 for e in ebenen if isinstance(e, dict)
and isinstance(e.get("fill"), dict)
and e["fill"].get("pattern") not in (None, "None"))
print("[EBENEN] dossier_ebenen gespeichert: {} Ebenen, davon {} mit fill, JSON-len={}".format(
print("[EBENEN] dossier_ebenen saved: {} layers, of which {} with fill, JSON-len={}".format(
len(ebenen), n_with_fill, len(e_json)))
re_read = doc.Strings.GetValue("dossier_ebenen")
print("[EBENEN] dossier_ebenen verifiziert: len={}".format(len(re_read) if re_read else 0))
print("[EBENEN] dossier_ebenen verified: len={}".format(len(re_read) if re_read else 0))
print("[EBENEN] _apply: cleanup_default_layers ...")
layer_builder.cleanup_default_layers(doc)
print("[EBENEN] _apply: ensure_active_sublayer ...")
@@ -2208,7 +2208,7 @@ class EbenenBridge(panel_base.BaseBridge):
if fill_changed:
gestaltung.refresh_layer_fills(doc)
else:
print("[EBENEN] _apply: fill-Signatur unveraendert -> kein Hatch-Refresh")
print("[EBENEN] _apply: fill signature unchanged -> no hatch refresh")
# Plot-Color Repair laeuft immer (no-op falls schon synchron)
gestaltung.repair_plot_colors(doc)
except Exception as ex:
@@ -2600,12 +2600,12 @@ class EbenenBridge(panel_base.BaseBridge):
return
parent_idx = layer_builder._find_top_by_id(doc, z_id)
if parent_idx < 0:
print("[EBENEN] Parent fuer aktive Zeichnungsebene nicht gefunden")
print("[EBENEN] Parent fuer aktive Zeichnungsebene not found")
return
parent_id = doc.Layers[parent_idx].Id
sub_idx = layer_builder._find_sublayer_by_code(doc, parent_id, code)
if sub_idx < 0:
print("[EBENEN] Sublayer {} unter {} nicht gefunden".format(code, doc.Layers[parent_idx].Name))
print("[EBENEN] Sublayer {} unter {} not found".format(code, doc.Layers[parent_idx].Name))
return
objs = list(doc.Objects.GetSelectedObjects(False, False))
moved = 0
@@ -2749,7 +2749,7 @@ class EbenenBridge(panel_base.BaseBridge):
pe_states = None
pz_states = None
# --- Eye-State-Pfad (wenn vorhanden) ---
# --- Eye-State-Pfad (wenn present) ---
if pe_states is not None or pz_states is not None:
try:
e_raw = doc.Strings.GetValue("dossier_ebenen") or "[]"
+5 -5
View File
@@ -389,7 +389,7 @@ class LayoutsBridge(panel_base.BaseBridge):
try:
page = doc.Views.AddPageView(name, w, h)
if page is None:
print("[LAYOUTS] AddPageView fehlgeschlagen"); return
print("[LAYOUTS] AddPageView failed"); return
print("[LAYOUTS] '{}' angelegt ({}x{})".format(name, w, h))
except Exception as ex:
print("[LAYOUTS] AddPageView Fehler:", ex)
@@ -414,7 +414,7 @@ class LayoutsBridge(panel_base.BaseBridge):
done = True
print("[LAYOUTS] SetPageSize -> {}x{}".format(w, h))
except Exception as ex:
print("[LAYOUTS] SetPageSize fehlgeschlagen:", ex)
print("[LAYOUTS] SetPageSize failed:", ex)
# 2) Fallback: Properties (haengt von Rhino-Version ab)
if not done:
try:
@@ -423,7 +423,7 @@ class LayoutsBridge(panel_base.BaseBridge):
done = True
print("[LAYOUTS] PageWidth/Height-Properties -> {}x{}".format(w, h))
except Exception as ex:
print("[LAYOUTS] Property-Setter fehlgeschlagen:", ex)
print("[LAYOUTS] Property-Setter failed:", ex)
if not done:
print("[LAYOUTS] Konnte Seiten-Groesse nicht setzen — bitte ueber Rhinos Layout-Dialog aendern")
try: page.Redraw()
@@ -515,7 +515,7 @@ class LayoutsBridge(panel_base.BaseBridge):
pdf.Write(path)
print("[LAYOUTS] PDF geschrieben: {} ({} Seite(n))".format(path, n_added))
except Exception as ex:
print("[LAYOUTS] PDF-Export fehlgeschlagen:", ex)
print("[LAYOUTS] PDF-Export failed:", ex)
finally:
# Vorherige View wieder aktivieren
if prev_view is not None:
@@ -538,7 +538,7 @@ class LayoutsBridge(panel_base.BaseBridge):
if doc.Path:
base = os.path.splitext(os.path.basename(doc.Path))[0] + "_Layouts"
dlg.FileName = "{}.pdf".format(base)
# Default-Folder — neben der .3dm wenn vorhanden
# Default-Folder — neben der .3dm wenn present
if doc.Path:
try: dlg.Directory = System.Uri(os.path.dirname(doc.Path))
except Exception: pass
+2 -2
View File
@@ -698,7 +698,7 @@ def _read_3dm_geometry(abs_path):
"""Liest alle Top-Level-Objekte aus einer .3dm-Datei. Returns Liste von
(GeometryBase, ObjectAttributes). Bei Fehler leere Liste."""
if not abs_path or not os.path.isfile(abs_path):
print("[LIBRARY] _read_3dm: Datei nicht gefunden:", abs_path)
print("[LIBRARY] _read_3dm: Datei not found:", abs_path)
return []
try:
from Rhino.FileIO import File3dm
@@ -840,7 +840,7 @@ def import_item(doc, item_id, at_point=None, layer2d=-1, layer3d=-1):
symbol/object → InstanceDefinition im Doc via File3dm.Read.
at_point + layer2d/3d nur fuer symbol/object."""
item = find_item(item_id)
if item is None: return False, "Item nicht gefunden: " + str(item_id)
if item is None: return False, "Item not found: " + str(item_id)
t = item.get("type")
if t == "material":
return import_material(doc, item)
+3 -3
View File
@@ -104,7 +104,7 @@ def _detect_dpi():
try:
from System.Diagnostics import Process, ProcessStartInfo
except Exception as ex:
print("[MASSSTAB] auto-detect: .NET Process nicht verfuegbar:", ex)
print("[MASSSTAB] auto-detect: .NET Process not available:", ex)
return None
if not os.path.isfile("/usr/bin/osascript"):
# Vermutlich nicht macOS -> nichts zu detecten
@@ -162,7 +162,7 @@ def _detect_dpi():
lpx, float(data.get("lpy") or 0)))
return dpi
except Exception as ex:
print("[MASSSTAB] auto-detect fehlgeschlagen:", ex)
print("[MASSSTAB] auto-detect failed:", ex)
return None
finally:
if script_path:
@@ -875,7 +875,7 @@ def _apply_scale(doc, vp, ratio):
Rhino.RhinoApp.RunScript("_-Zoom _Factor {:.6f} _Enter".format(factor), False)
applied = True
except Exception as ex3:
print("[MASSSTAB] _apply_scale alle Varianten fehlgeschlagen:",
print("[MASSSTAB] _apply_scale alle Varianten failed:",
ex1, ex2, ex3)
if not applied:
return False
+1 -1
View File
@@ -257,7 +257,7 @@ def delete_rule_template(name):
def set_active_preset(doc, name):
"""Aktiviert ein gespeichertes Preset: kopiert dessen Rules ins Doc-Config
und markiert es als activePreset. Wenn name leer/None: aktives Preset
geclear-t, Rules bleiben unveraendert (User waehlt "kein Preset"). Bei
geclear-t, Rules bleiben unchanged (User waehlt "kein Preset"). Bei
aktivem enabled-Flag wird sofort neu applied. True bei Erfolg."""
if doc is None: return False
cfg = load_config(doc)
+11 -11
View File
@@ -113,7 +113,7 @@ def migrate_to_dossier(doc):
new = "dossier_" + suffix
try:
if doc.Strings.GetValue(new):
continue # Dossier-Variante vorhanden -> nicht ueberschreiben
continue # Dossier-Variante present -> nicht ueberschreiben
for prefix in _LEGACY_PREFIXES:
old_v = doc.Strings.GetValue(prefix + suffix)
if old_v:
@@ -327,7 +327,7 @@ def load_inline(wv, mode, params=None):
if _INLINE_TEMPLATE is None or _INLINE_TEMPLATE[0] != cur_mtime:
sig, tmpl = _build_inline_template()
if tmpl is None:
print("[{}] dist nicht gefunden".format(mode.upper()))
print("[{}] dist not found".format(mode.upper()))
return
_INLINE_TEMPLATE = (sig, tmpl)
@@ -741,7 +741,7 @@ def make_panel_icon(name_or_letter, bg_hex):
except Exception as ex:
print("[panel_base] Icon path check error:", ex)
# 1) Material-Icon-Font (wenn keine SVG vorhanden)
# 1) Material-Icon-Font (wenn keine SVG present)
mat_cp = _MATERIAL_CODEPOINTS.get(name_or_letter)
if not used_svg and mat_cp is not None:
font_family_name = _try_material_font()
@@ -815,7 +815,7 @@ def make_panel_icon(name_or_letter, bg_hex):
print("[panel_base] Icon erzeugt via Eto.Drawing.Icon(path) [{}]".format(tag))
return ic
except Exception as ex:
print("[panel_base] Eto.Drawing.Icon(path) fehlgeschlagen:", ex)
print("[panel_base] Eto.Drawing.Icon(path) failed:", ex)
# Bitmap-Fallback (in-memory) — wenn alles vorherige fehlschlaegt
try:
ic = drawing.Icon(1.0, bmp)
@@ -825,7 +825,7 @@ def make_panel_icon(name_or_letter, bg_hex):
print("[panel_base] Icon Fallback: Eto.Bitmap zurueck ({})".format(tag))
return bmp
except Exception as ex:
print("[panel_base] Icon-Erstellung fehlgeschlagen:", ex)
print("[panel_base] Icon-Erstellung failed:", ex)
return None
@@ -860,7 +860,7 @@ def register_and_open(mode, caption, guid_str, bridge_factory, icon_spec=None, m
t_reg = time.time()
plugin = find_plugin()
if plugin is None:
print("[{}] Plugin nicht gefunden".format(mode.upper()))
print("[{}] Plugin not found".format(mode.upper()))
return
try:
type_name = "DynPanel_" + mode
@@ -900,7 +900,7 @@ def register_and_open(mode, caption, guid_str, bridge_factory, icon_spec=None, m
registered_with_icon = False
# Erst mit Icon versuchen, dann stillschweigend ohne (Mac Rhino-Panels
# akzeptieren auf manchen Versionen nur System.Drawing.Icon, das auf
# Mac nicht verfuegbar ist - die Registrierung ohne Icon ist OK).
# Mac not available ist - die Registrierung ohne Icon ist OK).
attempts = [(icon, True)] if icon is not None else []
attempts.append((None, False))
for arg, with_icon in attempts:
@@ -914,10 +914,10 @@ def register_and_open(mode, caption, guid_str, bridge_factory, icon_spec=None, m
break
except Exception as ex:
if with_icon:
print("[{}] RegisterPanel mit Icon fehlgeschlagen: {}".format(
print("[{}] RegisterPanel mit Icon failed: {}".format(
mode.upper(), ex))
else:
print("[{}] RegisterPanel fehlgeschlagen: {}".format(
print("[{}] RegisterPanel failed: {}".format(
mode.upper(), ex))
if registered and not registered_with_icon and icon is not None:
print("[{}] Panel ohne Icon registriert (Fallback)".format(mode.upper()))
@@ -927,7 +927,7 @@ def register_and_open(mode, caption, guid_str, bridge_factory, icon_spec=None, m
sc.sticky[sticky_guid] = System.Guid(guid_str)
print("[{}] Panel registered".format(mode.upper()))
except Exception as ex:
print("[{}] Registrierung fehlgeschlagen: {}".format(mode.upper(), ex))
print("[{}] Registrierung failed: {}".format(mode.upper(), ex))
return
_t_mark("register", mode, t_reg)
@@ -938,5 +938,5 @@ def register_and_open(mode, caption, guid_str, bridge_factory, icon_spec=None, m
_t_mark("OpenPanel", mode, t_open)
print("[{}] Panel opened".format(mode.upper()))
except Exception as ex:
print("[{}] OpenPanel fehlgeschlagen: {}".format(mode.upper(), ex))
print("[{}] OpenPanel failed: {}".format(mode.upper(), ex))
_t_mark("register_and_open", mode, t_outer)
+1 -1
View File
@@ -362,7 +362,7 @@ def _load_all(sender, e):
print("[STARTUP] unit-check active doc error:", ex)
# Aliases + Shortcuts (Defaults aus rhino/aliases/shortcuts_default.json
# + User-Overrides aus dossier_settings.json) registrieren. Idempotent —
# SetMacro/SetMacro ueberschreibt vorhandene Eintraege. Wenn Bridge noch
# SetMacro/SetMacro ueberschreibt presente Eintraege. Wenn Bridge noch
# nicht in sticky liegt (elemente-Panel noch nicht geladen) ist das ok,
# die Aliases zeigen auf das Dispatch-Skript das die Bridge lazy aus
# sticky liest.
+3 -3
View File
@@ -191,7 +191,7 @@ def _hex_to_color(h):
def _force_load_linetypes(doc):
"""Rhinos Linetype-Tabelle wird lazy initialisiert — wir triggern es."""
# 1) Eingebaute Methode (falls vorhanden)
# 1) Eingebaute Methode (falls present)
for method_name in ("LoadDefaultLinetypes", "LoadDefaults", "LoadStandardLinetypes"):
try:
getattr(doc.Linetypes, method_name)()
@@ -320,7 +320,7 @@ def _ebene_fill_for_layer(doc, layer):
if True:
f = e.get("fill")
if not isinstance(f, dict):
print("[GESTALTUNG] _ebene_fill_for_layer: Ebene code={} hat KEIN fill-Feld".format(code))
print("[GESTALTUNG] _ebene_fill_for_layer: Ebene code={} has NO fill field".format(code))
return None
# lw: Strichstaerke der Hatch-Linien in mm. None = "wie Stift der Ebene"
# (ColorSource/PlotWeightSource bleibt auf FromLayer).
@@ -737,7 +737,7 @@ def refresh_layer_fills(doc):
if updated or color_updated or added:
doc.Views.Redraw()
print("[GESTALTUNG] refresh_layer_fills: pattern={}, farbe={}, neu={}, unveraendert={}".format(
print("[GESTALTUNG] refresh_layer_fills: pattern={}, farbe={}, neu={}, unchanged={}".format(
updated, color_updated, added, skipped))
return updated + color_updated + added
+3 -3
View File
@@ -899,7 +899,7 @@ def generate_patch_from_contours(doc, contour_curves, progress=None):
brep = rg.Brep.CreatePatch(
geom_list, u_spans, v_spans, doc.ModelAbsoluteTolerance)
if brep is None:
if progress: progress("Patch fehlgeschlagen (None zurueck)")
if progress: progress("Patch failed (None zurueck)")
return None
gid = doc.Objects.AddBrep(brep)
if gid and gid != System.Guid.Empty:
@@ -1027,7 +1027,7 @@ def volumize_terrain_object(doc, top_obj, depth_doc, progress=None):
old_id = top_obj.Id
new_gid = doc.Objects.AddMesh(vol, attrs)
if new_gid is None or new_gid == System.Guid.Empty:
if progress: progress("Volumize: AddMesh fehlgeschlagen")
if progress: progress("Volumize: AddMesh failed")
return None
doc.Objects.Delete(old_id, True)
new_obj = doc.Objects.Find(new_gid)
@@ -1137,7 +1137,7 @@ def _geotiff_to_png(tif_path, max_dim=2048):
img.width, img.height))
return png_path
except ImportError:
print("[SWISSTOPO] Pillow nicht verfuegbar — versuche Eto.Drawing")
print("[SWISSTOPO] Pillow not available — versuche Eto.Drawing")
except Exception as ex:
print("[SWISSTOPO] Pillow-convert fail:", ex)
# --- Variante 2: Eto.Drawing (Mac NSImage liest TIFF)
+3 -3
View File
@@ -95,7 +95,7 @@ class TextEditorBridge(panel_base.BaseBridge):
self._form_ref = None
self._edit_obj_id = edit_obj_id # bei Doppelklick-Edit set
self._initial_text = initial_text
self._initial_runs = initial_runs # rich-format-Runs falls vorhanden
self._initial_runs = initial_runs # rich-format-Runs falls present
self._initial_html = initial_html # 1:1 Editor-HTML beim Reopen
def set_form(self, form):
@@ -274,7 +274,7 @@ class TextEditorBridge(panel_base.BaseBridge):
break
except Exception: pass
if applied_scale is None:
print("[TEXT-EDITOR] AnnotationScaling-Property nicht gefunden")
print("[TEXT-EDITOR] AnnotationScaling-Property not found")
attrs = Rhino.DocObjects.ObjectAttributes()
col = st.get("color") # [r,g,b] oder None
@@ -573,7 +573,7 @@ def open_for_edit(obj):
if rj: initial_runs = json.loads(rj)
except Exception as ex:
print("[TEXT-EDITOR] read runs:", ex)
# Editor-innerHTML (Round-Trip-Konservierung): wenn vorhanden,
# Editor-innerHTML (Round-Trip-Konservierung): wenn present,
# wird der Editor exakt mit diesem HTML geoeffnet
initial_html = None
try:
+8 -8
View File
@@ -133,7 +133,7 @@ def _apply_viewport_colors(cfg):
try:
appset = Rhino.ApplicationSettings.AppearanceSettings
except Exception as ex:
print("[OBERLEISTE] AppearanceSettings nicht verfuegbar:", ex)
print("[OBERLEISTE] AppearanceSettings not available:", ex)
return False
applied = []
for key, attr in _VIEWPORT_COLOR_ATTRS:
@@ -162,7 +162,7 @@ def _import_display_modes(paths):
try:
DMD = Rhino.Display.DisplayModeDescription
except Exception as ex:
print("[OBERLEISTE] DisplayModeDescription nicht verfuegbar:", ex)
print("[OBERLEISTE] DisplayModeDescription not available:", ex)
return 0
for p in paths:
try:
@@ -340,7 +340,7 @@ def _ensure_dossier_display_mode(target_name, target_guid, template_basename,
try:
from Rhino.Display import DisplayModeDescription
except Exception as ex:
print("[OBERLEISTE] {}: DMD nicht verfuegbar: {}".format(target_name, ex))
print("[OBERLEISTE] {}: DMD not available: {}".format(target_name, ex))
return False
import re
template_ini_path = os.path.join(_TEMPLATES_DIR, template_basename)
@@ -349,7 +349,7 @@ def _ensure_dossier_display_mode(target_name, target_guid, template_basename,
target_guid_obj = System.Guid(target_guid)
except Exception:
target_guid_obj = None
# Template-Datei vorhanden? Wenn ja, Hash davon als "version key"
# Template-Datei present? Wenn ja, Hash davon als "version key"
# benutzen — wir nur neu importieren wenn sich die Template-Datei
# geaendert hat.
template_exists = os.path.isfile(template_ini_path)
@@ -553,7 +553,7 @@ def _ensure_dossier_display_mode(target_name, target_guid, template_basename,
dmd = dm; break
except Exception: pass
if dmd is None:
print("[OBERLEISTE] Plan-Mode: nach Import nicht gefunden")
print("[OBERLEISTE] Plan-Mode: nach Import not found")
return False
# KEIN _apply_dossier_plan_attrs() hier — der wuerde
# UpdateDisplayMode() aufrufen und die ini-Werte (ClipSectionUsage,
@@ -882,7 +882,7 @@ def _apply_window_layout_impl(name):
else:
print("[OBERLEISTE] No Rhino.UI API candidates (Mac Rhino "
"exposed das nicht statisch). Falling back to scripted commands.")
# Args zum Probieren: GUID zuerst (falls vorhanden) dann Name.
# Args zum Probieren: GUID zuerst (falls present) dann Name.
# Beide als 1-arg Tuple. Doppelte Klammern haben in der alten Version
# zu mix von String/Tuple gefuehrt — hier sauber als Liste of Tuples.
arg_variants = []
@@ -948,7 +948,7 @@ def open_settings_dialog():
import Eto.Forms as _ef
import Eto.Drawing as _ed
except Exception as ex:
print("[OBERLEISTE] Eto-Import fehlgeschlagen:", ex); return
print("[OBERLEISTE] Eto-Import failed:", ex); return
cfg = _settings_load()
layouts = _list_window_layouts()
@@ -1803,7 +1803,7 @@ class OberleisteBridge(panel_base.BaseBridge):
elif t == "RUN_COMMAND":
cmd = (p.get("cmd") or "").strip()
if cmd:
# Auto-Praefix mit "_" falls nicht vorhanden, damit auch
# Auto-Praefix mit "_" falls not present, damit auch
# lokalisierte Rhino-Installationen die EN-Namen verstehen.
if not (cmd.startswith("_") or cmd.startswith("'")):
cmd = "_" + cmd
+1 -1
View File
@@ -420,7 +420,7 @@ def _show_html_form(title, html, width=620, height=720, on_navigating=None,
import Eto.Forms as ef
import Eto.Drawing as ed
except Exception as ex:
print("[WELCOME] Eto.Forms nicht verfuegbar:", ex)
print("[WELCOME] Eto.Forms not available:", ex)
return None
try: