T-Join Tolerance auf 1m gelockert + Selection-Hint
User-Test: Bei T-Konfig waren Wand-Achsen 55cm auseinander (vermutlich auf Outline statt Axis gesnappt). Mit 20cm tol fiel T-Join durch → L-Join machte Tangent-Schnittpunkt (= L-Form falsch fuer T-Intent). Fix: T-Join Snap-Radius von 20cm auf 1m. Generous genug fuer typische Drift-Faelle (Outline-Snap statt Axis-Snap, ungefaehre Platzierung etc.), aber tight genug damit absichtliche Lücken (>1m) nicht versehentlich zugesnapped werden. Plus: Hint wenn < 2 Wand-Achsen selektiert → User weiss explizit dass GENAU 2 Wand selektiert sein muss.
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user