From 34918962d48703368749185a1e9e67292b0ad591 Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Wed, 30 Apr 2025 11:58:36 +0200 Subject: [PATCH] Prepare to support curved sweeps --- experiments/2025-03-18/src/model.rs | 7 +++++-- experiments/2025-03-18/src/operations/sweep.rs | 9 +++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/experiments/2025-03-18/src/model.rs b/experiments/2025-03-18/src/model.rs index bd8d26d8d..d151e1847 100644 --- a/experiments/2025-03-18/src/model.rs +++ b/experiments/2025-03-18/src/model.rs @@ -1,8 +1,9 @@ use fj_interop::{Tolerance, TriMesh}; +use fj_math::Vector; use fj_viewer::Viewer; use crate::{ - geometry::{Sketch, SweptCurve, ToTriMesh}, + geometry::{Line, Sketch, SweptCurve, ToTriMesh}, handle::Handle, operations::sweep::SweepExt, topology::surface::Surface, @@ -43,7 +44,9 @@ pub fn model(viewer: &Viewer) -> TriMesh { viewer.display(top.to_tri_mesh(tolerance)); - let solid = top.sweep([0., 0., -2.]); + let solid = top.sweep(Line { + direction: Vector::from([0., 0., -2.]), + }); viewer.display(solid.to_tri_mesh(tolerance)); solid.to_tri_mesh(tolerance) diff --git a/experiments/2025-03-18/src/operations/sweep.rs b/experiments/2025-03-18/src/operations/sweep.rs index 608b98a0f..e3452e7fa 100644 --- a/experiments/2025-03-18/src/operations/sweep.rs +++ b/experiments/2025-03-18/src/operations/sweep.rs @@ -1,6 +1,5 @@ -use fj_math::Vector; - use crate::{ + geometry::Line, handle::Handle, topology::{face::Face, solid::Solid}, }; @@ -19,11 +18,13 @@ pub trait SweepExt { /// /// It should be seen as more of a placeholder for a real implementation of /// this operation. - fn sweep(self, path: impl Into>) -> Solid; + fn sweep(self, path: Line) -> Solid; } impl SweepExt for Handle { - fn sweep(self, path: impl Into>) -> Solid { + fn sweep(self, path: Line) -> Solid { + let path = path.direction; + let bottom = self; let top = Handle::new(bottom.flip().translate(path));