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
+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