diff --git a/models/color/src/lib.rs b/models/color/src/lib.rs index 0bae8de02..565a87b7d 100644 --- a/models/color/src/lib.rs +++ b/models/color/src/lib.rs @@ -3,6 +3,7 @@ use fj::core::{ operations::{ insert::Insert, presentation::SetColor, + split::SplitFace, update::{UpdateFace, UpdateShell, UpdateSolid}, }, services::Services, @@ -15,14 +16,31 @@ pub fn model(services: &mut Services) -> Handle { cuboid .update_shell(cuboid.shells().only(), |shell| { - shell - .update_face(shell.faces().first(), |face| { - face.update_region(|region| { - region.set_color([0., 1., 0.]).insert(services) - }) - .insert(services) + let shell = shell.update_face(shell.faces().first(), |face| { + face.update_region(|region| { + region.set_color([0., 1., 0.]).insert(services) }) .insert(services) + }); + + // Split colored face, to make sure the same color is applied to the + // two derived faces. + let shell = { + let face = shell.faces().first(); + let line = { + let cycle = face.region().exterior(); + + [ + (cycle.half_edges().nth(0).unwrap(), [0.2]), + (cycle.half_edges().nth(2).unwrap(), [0.2]), + ] + }; + + let (shell, _) = shell.split_face(face, line, services); + shell + }; + + shell.insert(services) }) .insert(services) }