T-Junction-Toleranz auf 1cm gelockert + dJoin-Safety: keine _Join auf Achsen

T-Junction-Detection (_detect_t_junction): pos_tol von 1mm auf 1cm erhoeht.
User-Feedback: bei manuellem Snap kann's leicht ein paar mm danebengehen,
1mm war zu eng. 1cm ist immer noch tight genug fuer Architektur-Workflow.

smart_join (dJoin): Safety-Check vor _Join-Fallback. Wenn IRGENDEINE
wand_axis in der Selection ist (auch zusaetzlich zu anderen Curves), wird
NICHT auf Standard-_Join gefallen — sonst kleistert _Join mehrere Wand-
Achsen zu einer Polyline zusammen, der Listener detektiert das als
"Source-Duplikat" und vergibt neue Wall-IDs → alle Meta-Verknuepfungen
brechen.

Stattdessen: Print-Meldung dass T-Join/L-Join nicht gegriffen hat. User
muss GENAU 2 Waende selektieren die verbunden werden sollen.
This commit is contained in:
2026-05-31 12:29:54 +02:00
parent 9999f3d0ad
commit 17ff7a8017
2 changed files with 14 additions and 1 deletions
+13
View File
@@ -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