forked from 1b-agent/opencadstudio-upstream
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 <[email protected]>
This commit is contained in:
1 parent
6b4bc1b832
commit
320312e81a
2 files changed
+2
-6
No files matched your search
@@ -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![],
|
||||
|
||||
@@ -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![],
|
||||
|
||||
Reference in new issue
Block a user