From 395e4ca1397cdafe00d6272d56e2f6c7adbac488 Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Mon, 19 Jun 2023 12:47:40 +0200 Subject: [PATCH] Pass `Services` into model functions This makes those functions more composable. Right now, they basically can't be combined. --- models/cuboid/src/lib.rs | 12 +++++------- models/cuboid/src/main.rs | 4 ++-- models/spacer/src/lib.rs | 23 +++++++++++++---------- models/spacer/src/main.rs | 4 ++-- models/star/src/lib.rs | 24 ++++++++++++++---------- models/star/src/main.rs | 4 ++-- 6 files changed, 38 insertions(+), 33 deletions(-) diff --git a/models/cuboid/src/lib.rs b/models/cuboid/src/lib.rs index 1c9b853e7..b76f5e6e7 100644 --- a/models/cuboid/src/lib.rs +++ b/models/cuboid/src/lib.rs @@ -9,9 +9,7 @@ use fj::{ math::Vector, }; -pub fn model(x: f64, y: f64, z: f64) -> Handle { - let mut services = Services::new(); - +pub fn model(x: f64, y: f64, z: f64, services: &mut Services) -> Handle { let sketch = Sketch::empty() .add_region( Region::polygon( @@ -21,13 +19,13 @@ pub fn model(x: f64, y: f64, z: f64) -> Handle { [x / 2., y / 2.], [-x / 2., y / 2.], ], - &mut services, + services, ) - .insert(&mut services), + .insert(services), ) - .insert(&mut services); + .insert(services); let surface = services.objects.surfaces.xy_plane(); let path = Vector::from([0., 0., z]); - (sketch, surface).sweep(path, &mut services) + (sketch, surface).sweep(path, services) } diff --git a/models/cuboid/src/main.rs b/models/cuboid/src/main.rs index 8ee161c3f..6b9fdc21f 100644 --- a/models/cuboid/src/main.rs +++ b/models/cuboid/src/main.rs @@ -1,7 +1,7 @@ -use fj::handle_model; +use fj::{core::services::Services, handle_model}; fn main() -> fj::Result { - let model = cuboid::model(3., 2., 1.); + let model = cuboid::model(3., 2., 1., &mut Services::new()); handle_model(model)?; Ok(()) } diff --git a/models/spacer/src/lib.rs b/models/spacer/src/lib.rs index 76fdfb6ed..2fda874b3 100644 --- a/models/spacer/src/lib.rs +++ b/models/spacer/src/lib.rs @@ -12,24 +12,27 @@ use fj::{ math::{Point, Vector}, }; -pub fn model(outer: f64, inner: f64, height: f64) -> Handle { - let mut services = Services::new(); - +pub fn model( + outer: f64, + inner: f64, + height: f64, + services: &mut Services, +) -> Handle { let sketch = Sketch::empty() .add_region( - Region::circle(Point::origin(), outer, &mut services) + Region::circle(Point::origin(), outer, services) .add_interiors([Cycle::circle( Point::origin(), inner, - &mut services, + services, ) - .reverse(&mut services) - .insert(&mut services)]) - .insert(&mut services), + .reverse(services) + .insert(services)]) + .insert(services), ) - .insert(&mut services); + .insert(services); let surface = services.objects.surfaces.xy_plane(); let path = Vector::from([0., 0., height]); - (sketch, surface).sweep(path, &mut services) + (sketch, surface).sweep(path, services) } diff --git a/models/spacer/src/main.rs b/models/spacer/src/main.rs index 719241cc2..18bf6af09 100644 --- a/models/spacer/src/main.rs +++ b/models/spacer/src/main.rs @@ -1,7 +1,7 @@ -use fj::handle_model; +use fj::{core::services::Services, handle_model}; fn main() -> fj::Result { - let model = spacer::model(1., 0.5, 1.); + let model = spacer::model(1., 0.5, 1., &mut Services::new()); handle_model(model)?; Ok(()) } diff --git a/models/star/src/lib.rs b/models/star/src/lib.rs index 9910cbead..4dad7f415 100644 --- a/models/star/src/lib.rs +++ b/models/star/src/lib.rs @@ -14,9 +14,13 @@ use fj::{ math::Vector, }; -pub fn model(num_points: u64, r1: f64, r2: f64, h: f64) -> Handle { - let mut services = Services::new(); - +pub fn model( + num_points: u64, + r1: f64, + r2: f64, + h: f64, + services: &mut Services, +) -> Handle { let num_vertices = num_points * 2; let vertex_iter = (0..num_vertices).map(|i| { let angle_rad = 2. * PI / num_vertices as f64 * i as f64; @@ -39,15 +43,15 @@ pub fn model(num_points: u64, r1: f64, r2: f64, h: f64) -> Handle { let sketch = Sketch::empty() .add_region( - Region::polygon(outer_points, &mut services) - .add_interiors([Cycle::polygon(inner_points, &mut services) - .reverse(&mut services) - .insert(&mut services)]) - .insert(&mut services), + Region::polygon(outer_points, services) + .add_interiors([Cycle::polygon(inner_points, services) + .reverse(services) + .insert(services)]) + .insert(services), ) - .insert(&mut services); + .insert(services); let surface = services.objects.surfaces.xy_plane(); let path = Vector::from([0., 0., h]); - (sketch, surface).sweep(path, &mut services) + (sketch, surface).sweep(path, services) } diff --git a/models/star/src/main.rs b/models/star/src/main.rs index c6f11d59c..32a8f8a8d 100644 --- a/models/star/src/main.rs +++ b/models/star/src/main.rs @@ -1,7 +1,7 @@ -use fj::handle_model; +use fj::{core::services::Services, handle_model}; fn main() -> fj::Result { - let model = star::model(5, 1., 2., 1.); + let model = star::model(5, 1., 2., 1., &mut Services::new()); handle_model(model)?; Ok(()) }