From a88b054754c2ed1a963c1198a009569f82f56f17 Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Wed, 5 Jun 2024 20:41:53 +0200 Subject: [PATCH 1/3] Avoid use of `BuildHalfEdge::circle` --- crates/fj-core/src/operations/holes.rs | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/crates/fj-core/src/operations/holes.rs b/crates/fj-core/src/operations/holes.rs index f46980348..d2b209470 100644 --- a/crates/fj-core/src/operations/holes.rs +++ b/crates/fj-core/src/operations/holes.rs @@ -43,17 +43,14 @@ impl AddHole for Shell { path: impl Into>, core: &mut Core, ) -> Self { - let entry = HalfEdge::circle( + let entry = Cycle::circle( location.position, radius, location.face.surface().clone(), core, ); let hole = Region::empty(core) - .update_exterior( - |_, core| Cycle::empty().add_half_edges([entry.clone()], core), - core, - ) + .update_exterior(|_, _| entry.clone(), core) .sweep_region( location.face.surface().clone(), None, @@ -68,19 +65,7 @@ impl AddHole for Shell { location.face, |face, core| { [face.update_region( - |region, core| { - region.add_interiors( - [Cycle::empty().add_joined_edges( - [( - entry.clone(), - *core.layers.geometry.of_half_edge(&entry), - )], - location.face.surface().clone(), - core, - )], - core, - ) - }, + |region, core| region.add_interiors([entry], core), core, )] }, From 02c96f76c60ac6bf6a68f49f06e2c8dcd03296cb Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Wed, 5 Jun 2024 20:44:15 +0200 Subject: [PATCH 2/3] Avoid use of `BuildHalfEdge::circle` --- crates/fj-core/src/operations/holes.rs | 27 ++++++-------------------- 1 file changed, 6 insertions(+), 21 deletions(-) diff --git a/crates/fj-core/src/operations/holes.rs b/crates/fj-core/src/operations/holes.rs index d2b209470..9155b8c7c 100644 --- a/crates/fj-core/src/operations/holes.rs +++ b/crates/fj-core/src/operations/holes.rs @@ -4,15 +4,15 @@ use fj_math::{Point, Scalar, Vector}; use crate::{ storage::Handle, - topology::{Cycle, Face, HalfEdge, Region, Shell}, + topology::{Cycle, Face, Region, Shell}, Core, }; use super::{ - build::{BuildCycle, BuildHalfEdge, BuildRegion}, + build::{BuildCycle, BuildRegion}, join::JoinCycle, sweep::{SweepCache, SweepRegion}, - update::{UpdateCycle, UpdateFace, UpdateRegion, UpdateShell}, + update::{UpdateFace, UpdateRegion, UpdateShell}, }; /// Add a hole to a [`Shell`] @@ -82,7 +82,7 @@ impl AddHole for Shell { ) -> Self { let radius = radius.into(); - let entry = HalfEdge::circle( + let entry = Cycle::circle( entry_location.position, radius, entry_location.face.surface().clone(), @@ -104,10 +104,7 @@ impl AddHole for Shell { }; let swept_region = Region::empty(core) - .update_exterior( - |_, core| Cycle::empty().add_half_edges([entry.clone()], core), - core, - ) + .update_exterior(|_, _| entry.clone(), core) .sweep_region( entry_location.face.surface().clone(), None, @@ -129,19 +126,7 @@ impl AddHole for Shell { entry_location.face, |face, core| { [face.update_region( - |region, core| { - region.add_interiors( - [Cycle::empty().add_joined_edges( - [( - entry.clone(), - *core.layers.geometry.of_half_edge(&entry), - )], - entry_location.face.surface().clone(), - core, - )], - core, - ) - }, + |region, core| region.add_interiors([entry], core), core, )] }, From 8ba0f875c861e8016dbe8bcda534ee5135c71f57 Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Wed, 5 Jun 2024 21:11:44 +0200 Subject: [PATCH 3/3] Simplify through hole operation --- crates/fj-core/src/operations/holes.rs | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/crates/fj-core/src/operations/holes.rs b/crates/fj-core/src/operations/holes.rs index 9155b8c7c..fb1340cbc 100644 --- a/crates/fj-core/src/operations/holes.rs +++ b/crates/fj-core/src/operations/holes.rs @@ -10,7 +10,6 @@ use crate::{ use super::{ build::{BuildCycle, BuildRegion}, - join::JoinCycle, sweep::{SweepCache, SweepRegion}, update::{UpdateFace, UpdateRegion, UpdateShell}, }; @@ -115,12 +114,7 @@ impl AddHole for Shell { let hole = swept_region.side_faces.into_iter().collect::>(); - let exit = swept_region - .top_face - .region() - .exterior() - .half_edges() - .only(); + let exit = swept_region.top_face.region().exterior(); self.update_face( entry_location.face, @@ -136,19 +130,7 @@ impl AddHole for Shell { exit_location.face, |face, core| { [face.update_region( - |region, core| { - region.add_interiors( - [Cycle::empty().add_joined_edges( - [( - exit.clone(), - *core.layers.geometry.of_half_edge(exit), - )], - exit_location.face.surface().clone(), - core, - )], - core, - ) - }, + |region, core| region.add_interiors([exit.clone()], core), core, )] },