diff --git a/rhino/aliases/cmd/smart_join.py b/rhino/aliases/cmd/smart_join.py index 8bbcb33..67c9ff1 100644 --- a/rhino/aliases/cmd/smart_join.py +++ b/rhino/aliases/cmd/smart_join.py @@ -258,6 +258,19 @@ def _run(): except Exception as ex: print("[SMART-JOIN] L-Join error:", ex) + # Safety: wenn Wand-Achsen selektiert sind, NIE auf Standard-_Join fallen + # — das wuerde mehrere Achsen zu einer Curve zusammenkleben und die Wand- + # Verknuepfung zerstoeren (Source-Duplikat-Listener kapert die alte ID). + has_wand_axis = any( + obj.Attributes.GetUserString("dossier_type") == "wand_axis" + for obj in sel) + if has_wand_axis: + print("[SMART-JOIN] Wand-Achsen selektiert: T-Join/L-Join hat nicht " + "gegriffen (zu viele Selektionen oder zu weit weg). Bitte " + "GENAU 2 Waende selektieren die sich verbinden sollen, dann " + "erneut Cmd+J.") + return + # Curves nach Closed/Open trennen closed_objs = [] has_non_closed = False diff --git a/rhino/elemente.py b/rhino/elemente.py index 0338344..542a33d 100644 --- a/rhino/elemente.py +++ b/rhino/elemente.py @@ -2180,7 +2180,7 @@ def _miter_dir(out_a, out_b): def _detect_t_junction(doc, geschoss_id, wall_id, endpoint, - pos_tol=0.001, end_tol=0.05, exclude_ids=None): + pos_tol=0.010, end_tol=0.05, exclude_ids=None): """Sucht ob `endpoint` auf der INNEREN Achse einer anderen Wand liegt (T-Stoss). Endpunkte der anderen Wand (Eckverbindung) werden bewusst ausgeschlossen — die werden bereits durch die Corner-Logik abgedeckt.