diff --git a/src/geometry/geometry.rs b/src/geometry/geometry.rs index 4eb2192..0a74889 100644 --- a/src/geometry/geometry.rs +++ b/src/geometry/geometry.rs @@ -8,7 +8,7 @@ use geo::Point; use petgraph::{ stable_graph::{NodeIndex, StableDiGraph}, visit::EdgeRef, - Direction::{self, Incoming}, + Direction::{self, Incoming, Outgoing}, }; use serde::{Deserialize, Serialize}; @@ -570,6 +570,13 @@ impl< }) .map(|ni| self.primitive_weight(ni).retag(ni)) } + + pub fn is_part_of_any_compound(&self, primitive: PI) -> Option> { + self.graph + .edges_directed(primitive.petgraph_index(), Outgoing) + .find(|ei| ei.weight() == &GeometryLabel::Compound) + .map(|ei| GenericIndex::new(ei.source())) + } } impl ManageCompounds>