diff --git a/rhino/aliases/cmd/smart_join.py b/rhino/aliases/cmd/smart_join.py index 1bcb3b7..d1b8ed0 100644 --- a/rhino/aliases/cmd/smart_join.py +++ b/rhino/aliases/cmd/smart_join.py @@ -142,7 +142,9 @@ def _t_join_attempt(doc, sel): if not (isinstance(c1, rg.Curve) and isinstance(c2, rg.Curve)): return False if c1.IsClosed or c2.IsClosed: return False - tol_snap = 0.20 # 20 cm Snap-Radius fuer T-Verbindung + tol_snap = 1.00 # 1 m Snap-Radius fuer T-Verbindung — generous damit + # auch grosse Drift (z.B. wenn User auf Outline statt + # Axis gesnappt hat = 30cm Wand-dicke) gefangen wird end_tol = 0.05 # 5cm: wenn closest-point nahe Endpunkt → eigentlich L candidates = [] debug_rows = [] @@ -250,6 +252,16 @@ def _run(): sel = list(doc.Objects.GetSelectedObjects(False, False)) if not sel: Rhino.RhinoApp.RunScript("_Join", False); return + # Hint wenn zu wenig Wand-Objekte selektiert + n_wand_axes = sum(1 for o in sel + if (o.Attributes.GetUserString("dossier_element_type") + or "") == "wand_axis") + if n_wand_axes < 2 and any( + (o.Attributes.GetUserString("dossier_element_type") or "") + .startswith("wand_") for o in sel): + print("[SMART-JOIN] nur {} Wand-Achse(n) selektiert — fuer T/L-Join " + "GENAU 2 Waende selektieren (Click Wand + Shift+Click 2. Wand)." + .format(n_wand_axes)) # T-Join: Endpunkt der einen Curve trifft mitten auf die andere → snap. # L-Join: beide Endpunkte werden zum Schnittpunkt der verlaengerten Linien