diff --git a/crates/fj-core/src/operations/sweep/cycle.rs b/crates/fj-core/src/operations/sweep/cycle.rs index 4ef505f30..974770fc1 100644 --- a/crates/fj-core/src/operations/sweep/cycle.rs +++ b/crates/fj-core/src/operations/sweep/cycle.rs @@ -10,7 +10,7 @@ use crate::{ Core, }; -use super::SweepCache; +use super::{half_edge::SweptHalfEdge, SweepCache}; /// # Sweep a [`Cycle`] /// @@ -66,7 +66,10 @@ impl SweepCycle for Cycle { let (bottom_half_edge, bottom_half_edge_next) = bottom_half_edge_pair; - let (side_face, top_half_edge) = bottom_half_edge.sweep_half_edge( + let SweptHalfEdge { + face: side_face, + top_half_edge, + } = bottom_half_edge.sweep_half_edge( bottom_half_edge_next.start_vertex().clone(), bottom_surface.clone(), color, diff --git a/crates/fj-core/src/operations/sweep/half_edge.rs b/crates/fj-core/src/operations/sweep/half_edge.rs index d87ac7f3d..f5c4ec1e5 100644 --- a/crates/fj-core/src/operations/sweep/half_edge.rs +++ b/crates/fj-core/src/operations/sweep/half_edge.rs @@ -44,7 +44,7 @@ pub trait SweepHalfEdge { path: impl Into>, cache: &mut SweepCache, core: &mut Core, - ) -> (Face, Handle); + ) -> SweptHalfEdge; } impl SweepHalfEdge for Handle { @@ -56,7 +56,7 @@ impl SweepHalfEdge for Handle { path: impl Into>, cache: &mut SweepCache, core: &mut Core, - ) -> (Face, Handle) { + ) -> SweptHalfEdge { let path = path.into(); let half_edge_geom = *core.layers.geometry.of_half_edge(self); @@ -161,6 +161,20 @@ impl SweepHalfEdge for Handle { let face = Face::new(surface, region); - (face, edge_top) + SweptHalfEdge { + face, + top_half_edge: edge_top, + } } } + +/// The result of sweeping a [`HalfEdge`] +/// +/// See [`SweepHalfEdge`]. +pub struct SweptHalfEdge { + /// The face created by sweeping the half-edge + pub face: Face, + + /// The top half-edge of the created face + pub top_half_edge: Handle, +} diff --git a/crates/fj-core/src/operations/sweep/mod.rs b/crates/fj-core/src/operations/sweep/mod.rs index f93efbe93..df9c6df37 100644 --- a/crates/fj-core/src/operations/sweep/mod.rs +++ b/crates/fj-core/src/operations/sweep/mod.rs @@ -15,7 +15,7 @@ mod vertex; pub use self::{ cycle::{SweepCycle, SweptCycle}, face::SweepFace, - half_edge::SweepHalfEdge, + half_edge::{SweepHalfEdge, SweptHalfEdge}, path::SweepSurfacePath, region::{SweepRegion, SweptRegion}, shell_face::{ShellExtendedBySweep, SweepFaceOfShell},