diff --git a/crates/fj-core/src/geometry/curve.rs b/crates/fj-core/src/geometry/curve.rs index ba9c50ae7..6362a138a 100644 --- a/crates/fj-core/src/geometry/curve.rs +++ b/crates/fj-core/src/geometry/curve.rs @@ -5,7 +5,7 @@ use crate::{storage::Handle, topology::Surface}; use super::SurfacePath; /// The geometric definition of a curve -#[derive(Clone, Default)] +#[derive(Clone, Debug, Default)] pub struct CurveGeom { /// # The redundant local definitions of the curve geometry /// @@ -42,7 +42,7 @@ impl CurveGeom { } /// The geometric definition of a curve in 2D surface coordinates -#[derive(Clone)] +#[derive(Clone, Debug)] pub struct LocalCurveGeom { /// The path that defines the curve on its surface pub path: SurfacePath, diff --git a/crates/fj-core/src/operations/holes.rs b/crates/fj-core/src/operations/holes.rs index fb1340cbc..706ceac4e 100644 --- a/crates/fj-core/src/operations/holes.rs +++ b/crates/fj-core/src/operations/holes.rs @@ -130,7 +130,23 @@ impl AddHole for Shell { exit_location.face, |face, core| { [face.update_region( - |region, core| region.add_interiors([exit.clone()], core), + |region, core| { + for half_edge in exit.half_edges() { + let geometry = core + .layers + .geometry + .of_curve(half_edge.curve()) + .unwrap() + .local_on(swept_region.top_face.surface()) + .unwrap(); + core.layers.geometry.define_curve( + half_edge.curve().clone(), + exit_location.face.surface().clone(), + geometry.clone(), + ); + } + region.add_interiors([exit.clone()], core) + }, core, )] },