From 8d0739f0d55a985eaf2d31382865afa8194a001b Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Tue, 30 Apr 2024 12:39:46 +0200 Subject: [PATCH] Set geometry when transforming curve --- .../fj-core/src/operations/transform/curve.rs | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/crates/fj-core/src/operations/transform/curve.rs b/crates/fj-core/src/operations/transform/curve.rs index 12e4bef33..7e1bcc9d2 100644 --- a/crates/fj-core/src/operations/transform/curve.rs +++ b/crates/fj-core/src/operations/transform/curve.rs @@ -18,7 +18,27 @@ impl TransformObject for Handle { // must be created to represent the new and transformed curve. cache .entry(self) - .or_insert_with(|| Curve::new().insert(core)) + .or_insert_with(|| { + // We don't actually need to transform the curve, as its + // geometry is locally defined on a surface. We need to set that + // geometry for the new object though, that we created here to + // represent the transformed curve. + + let curve = Curve::new().insert(core); + + let curve_geom = core.layers.geometry.of_curve(self).cloned(); + if let Some(curve_geom) = curve_geom { + for (surface, local_definition) in curve_geom.definitions { + core.layers.geometry.define_curve( + curve.clone(), + surface, + local_definition, + ); + } + } + + curve + }) .clone() } }