Waende: Cluster-Boolean-Union + Click-UX + Outline/Centerline + Smart-L-Join
Geometrie
- _find_wall_cluster: BFS ueber alle same-material verbundenen Waende inkl.
T-Junctions (Stem auf Through-Achse + Through-Wand-Mitte erkannt)
- _build_cluster_union_brep: per-Wand-Rect-Extrude + Boolean-Union zu einem
einheitlichen Brep. Walls ueberlappen am Joint via Extension um
nachbar_dicke/2 (Far-Face-Reach ohne Stummel)
- _regen_cluster_anchor: Anchor-Pattern wie Chain — anchor haelt cluster_brep
+ alle openings als BoolDiff cutouts pro Member-Wand
- _is_linear_chain: nur lineare 2-Wall-Endpoint-Sequenzen → existing
Polyline-Extrude. Komplexe Cluster (verzweigt / mit T-Junction) → Union
Auto-T-Snap
- _t_snap_to_wand_axis mit zwei Pfaden:
- Volume-Hit: IsPointInside (strict=False) auf wand_volume Brep → snap zur
naechsten Cluster-Achse, unabhaengig von Wand-Dicke
- Axis-Near: dynamische Toleranz max(15cm, dicke/2+10cm) → dicke Waende
kriegen groessere Snap-Zone
- Endpunkt-Bias 10cm → naher Endpunkt gewinnt fuer saubere Corner
- Aufruf in _collect_wall_polyline + first-pt der Wand-Erstellung
Click-Verhalten
- _ClusterVolumeSelectHandler (MouseCallback): in Plan-View
- Klick INNEN im Volume → naechste Achse selektieren
- Klick auf Vertex (12 px) → Volume selektieren (Standard)
- Klick auf Edge (8 px) → Volume selektieren (Standard)
- Klick direkt auf Achse (5 px) → Rhino-Standard, Achse selektiert
- wand_axis aus _PAIRED_SOURCE_TYPES raus → Klick auf Linie selektiert NUR
die Linie (kein Mit-Selektieren des Volumens)
- wand_volume bleibt in _PAIRED_VOLUME_TYPES + _collect_partners erweitert:
Volume-Klick sammelt alle Cluster-Member-Achsen + Centerlines + Outlines
→ alle Referenzlinien leuchten bei Volume-Klick mit auf
- Auto-Group fuer alle Waende entfernt + Startup-Migration
_migrate_strip_wall_auto_groups_once raeumt alte Memberships
Outline + Centerline
- _make_wall_centerline: parallele Achse-Offset bei ref != mid → Centerline
- _make_wall_outline: geschlossenes Viereck (linker + rechter Offset +
perpendikulare Caps)
- _regen_wall_lines: LOCKED Curves auf Referenzen-Sublayer
- Centerline (dashed): nur bei ref=left/right
- Outline (solid): nur Solo-Waende (Cluster-Member ueber merged Brep)
- Beide mit dossier_type-Tag fuer Cleanup beim naechsten Regen
Smart-L-Join (dJoin)
- _l_join_attempt: 2 OFFENE Curves mit nicht-parallelen Tangenten →
unendliche-Linien-Schnitt + Endpunkte beider Curves auf Schnittpunkt
ersetzen (extend / shorten zu L)
- _walls_and_curves_from_sel: dedupliziert Selection via wall_id, akzeptiert
axis+volume Auto-Group als 1 Wand
- Fallback zu Standard _Join wenn nicht passend
Performance
- Joint-Cache per-batch invalidieren statt per-regen (sticky
_dossier_regen_batch_active)
This commit is contained in:
+1117
-65
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user