Replace-Listener: wand_layered/wand_layers/wand_style_id/wand_joint_rolle nach Replace bewahren
ROOT CAUSE: Wenn doc.Objects.Replace einer wand_axis ausgefuehrt wird (z.B. nach L-Join von smart_join), prueft der Replace-Listener ob das neue Object schon Meta hat. Wenn nicht, re-attached er via _attach_meta — aber die wand-spezifischen Felder (wand_layered, wand_layers, wand_style_id, wand_joint_rolle) wurden NICHT mit-uebergeben. Effekt: layered Wand verlor wand_layered=True nach L-Join → naechster Regen sieht is_layered=False → baut single SOLID Brep statt per-Layer-Breps → "die gemerged walls sind dann leider solid walls". Fix: Im Re-Attach-Aufruf die 4 wand-Felder mit weiterreichen aus meta. Folge-Effekt: auch wand_style_id und wand_joint_rolle waren weg, was Material-Lookup + Joint-Rolle-Override gebrochen hat. Beide jetzt fix.
This commit is contained in:
+15
-1
@@ -8589,6 +8589,14 @@ def _regenerate_element_body(doc, element_id, src_obj, meta, geom, geschoss_name
|
|||||||
per_layer_ext_start=pl_ext_s, per_layer_ext_end=pl_ext_e,
|
per_layer_ext_start=pl_ext_s, per_layer_ext_end=pl_ext_e,
|
||||||
per_layer_miter_start=pl_miter_s,
|
per_layer_miter_start=pl_miter_s,
|
||||||
per_layer_miter_end=pl_miter_e)
|
per_layer_miter_end=pl_miter_e)
|
||||||
|
# Diagnostic: layer build status — User sieht oft "solid" obwohl
|
||||||
|
# walls layered sind, kontrollieren obs an Brep-Build oder Display liegt
|
||||||
|
_n_ok = sum(1 for (b, _c, _n) in layer_breps if b is not None)
|
||||||
|
_n_fail = len(layer_breps) - _n_ok
|
||||||
|
print("[ELEMENTE] layered build {} (chain={}): {}/{} layers built"
|
||||||
|
" (def={} layers)".format(
|
||||||
|
element_id, len(chain_ids) if chain_ids else 1,
|
||||||
|
_n_ok, len(layer_breps), len(layers_def)))
|
||||||
else:
|
else:
|
||||||
single_brep = _make_volume_geometry(
|
single_brep = _make_volume_geometry(
|
||||||
geom, meta["dicke"], uk, ok,
|
geom, meta["dicke"], uk, ok,
|
||||||
@@ -15273,7 +15281,13 @@ def _on_object_replaced_body(sender, e):
|
|||||||
raum_txt_h=meta.get("raum_txt_h"),
|
raum_txt_h=meta.get("raum_txt_h"),
|
||||||
raum_align=meta.get("raum_align") or None,
|
raum_align=meta.get("raum_align") or None,
|
||||||
raum_sia=meta.get("raum_sia") or None,
|
raum_sia=meta.get("raum_sia") or None,
|
||||||
raum_fuellung=meta.get("raum_fuellung"))
|
raum_fuellung=meta.get("raum_fuellung"),
|
||||||
|
# Wand-spezifische Meta (sonst geht layered/style
|
||||||
|
# nach Replace verloren — Layered-Wand wird solid!)
|
||||||
|
wand_layered=meta.get("wand_layered"),
|
||||||
|
wand_layers=meta.get("wand_layers"),
|
||||||
|
wand_style_id=meta.get("wand_style_id") or None,
|
||||||
|
wand_joint_rolle=meta.get("wand_joint_rolle") or None)
|
||||||
new_obj.Attributes = attrs
|
new_obj.Attributes = attrs
|
||||||
new_obj.CommitChanges()
|
new_obj.CommitChanges()
|
||||||
except Exception: pass
|
except Exception: pass
|
||||||
|
|||||||
Reference in New Issue
Block a user