use ifc_model::EntityId;
use crate::error::ResourceResult;
use crate::view::ResourceView;
impl<'m, 's> ResourceView<'m, 's> {
pub fn inventory_items(&self, inventory: EntityId) -> ResourceResult<Vec<EntityId>> {
self.inventory(inventory)?;
let mut items = Vec::new();
for relation in self.ids_of_ancestor("IfcRelAssignsToGroup") {
let record = self.record(relation, "IfcRelAssignsToGroup")?;
let relating_group = record.required_ref("RelatingGroup", "IfcGroup")?;
if relating_group != inventory {
continue;
}
items.extend(record.refs("RelatedObjects", "IfcObjectDefinition", 1, false, false)?);
}
Ok(items)
}
}