fix: replace degenerate same-vertex edges with Point in lwpolyline and spline

Empty LwPolyline and single-control-point Spline fallbacks were calling
builder::line(&v, &v) with the same Rc vertex, triggering the
truck-topology panic "Two same vertices cannot construct an edge."

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Hakan Seven 2026-04-25 20:30:26 +03:00
commit 320312e81a
2 changed files with 2 additions and 6 deletions

View file

@ -14,10 +14,8 @@ const TAU: f64 = std::f64::consts::TAU;
fn to_truck(pline: &LwPolyline) -> TruckEntity {
let verts = &pline.vertices;
if verts.is_empty() {
let v = builder::vertex(Point3::new(0.0, 0.0, 0.0));
let edge = builder::line(&v, &v);
return TruckEntity {
object: TruckObject::Contour(std::iter::once(edge).collect()),
object: TruckObject::Point(builder::vertex(Point3::new(0.0, 0.0, 0.0))),
snap_pts: vec![],
tangent_geoms: vec![],
key_vertices: vec![],

View file

@ -18,10 +18,8 @@ fn to_truck(spl: &Spline) -> TruckEntity {
.map(|p| Point3::new(p.x, p.y, p.z))
.collect();
if ctrl_pts.len() < 2 {
let v = builder::vertex(Point3::new(0.0, 0.0, 0.0));
let edge = builder::line(&v, &v);
return TruckEntity {
object: TruckObject::Curve(edge),
object: TruckObject::Point(builder::vertex(Point3::new(0.0, 0.0, 0.0))),
snap_pts: vec![],
tangent_geoms: vec![],
key_vertices: vec![],