feat: Spline support for TRIM, EXTEND, OFFSET, BREAK, and LENGTHEN

Add shared spline_ops module with:
- spline_to_bspline / bspline_to_spline: acadrust ↔ truck BSplineCurve conversion
- spline_sample_xy: sample DXF-XY projection at N+1 points with parameters
- spline_nearest_t: nearest-parameter search via coarse+bisection
- spline_pts_wire: world-space wire points for WireModel preview

TRIM: Spline entities can now be used as cutting boundaries (Geo::Spline
sampled into polyline segments) and as entities being trimmed; uses
BSplineCurve::cut() to produce surviving pieces.

EXTEND: extend_spline() shoots a tangent ray from the nearest endpoint
and appends a control point at the first boundary hit.

OFFSET: offset_spline() offsets each sample point along the local
perpendicular normal and rebuilds a new spline from the offset control pts.

BREAK: break_spline() uses spline_nearest_t() + BSplineCurve::cut() to
split the spline at one or two click points.

LENGTHEN: lengthen_spline() uses numerical arc-length integration +
bisection to cut the spline at the parameter corresponding to the new
requested length.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Hakan SevenandClaude Sonnet 4.6 committed 2026-04-07 15:00:22 +03:00
1 parent 71667cfafe
commit 083eb5cbb5
7 files changed
+591 -11

No files matched your search

+6 -6
View File
@@ -114,11 +114,11 @@ Underlay (PDF/DWF/DGN)
| ARRAY Rectangular | ✅ | — |
| ARRAY Polar | ✅ | — |
| ARRAY Path | ✅ | — |
| BREAK (BR) | 🔧 | Spline |
| TRIM (TR) | 🔧 | Spline |
| EXTEND (EX) | 🔧 | Spline, LwPolyline |
| OFFSET (O) | 🔧 | Spline |
| LENGTHEN (LEN) | 🔧 | Spline, LwPolyline |
| BREAK (BR) | ✅ | — |
| TRIM (TR) | ✅ | — |
| EXTEND (EX) | 🔧 | LwPolyline |
| OFFSET (O) | ✅ | — |
| LENGTHEN (LEN) | 🔧 | LwPolyline |
| FILLET (F) | ✅ | — |
| CHAMFER (CHA) | ✅ | — |
| JOIN (J) | ✅ | — |
@@ -302,7 +302,7 @@ Underlay (PDF/DWF/DGN)
## Öncelik Sırası (Bir Sonraki Adımlar)
### Yüksek Öncelik
1. **TRIM / EXTEND / OFFSET / BREAK / LENGTHEN → Spline desteği**
1. **EXTEND / LENGTHEN → LwPolyline desteği**
### Orta Öncelik
5. **Solid3D tessellation** tamamlama (ACIS → truck pipeline)