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:
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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)
|
||||
|
||||
@@ -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
@@ -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
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user