ifc_material/material/
definition.rs1use crate::view::{borrowed_entity, optional_text, required_text, MaterialView};
4use crate::MaterialResult;
5
6borrowed_entity!(Material, "IFCMATERIAL");
7
8impl<'m> Material<'m> {
9 pub fn name(self) -> MaterialResult<&'m str> {
12 required_text("IFCMATERIAL", self.id(), self.entity(), 0, "Name")
13 }
14
15 pub fn description(self) -> MaterialResult<Option<&'m str>> {
17 optional_text("IFCMATERIAL", self.id(), self.entity(), 1, "Description")
18 }
19
20 pub fn category(self) -> MaterialResult<Option<&'m str>> {
22 optional_text("IFCMATERIAL", self.id(), self.entity(), 2, "Category")
23 }
24}
25
26impl<'m> MaterialView<'m> {
27 pub fn materials(self) -> impl Iterator<Item = Material<'m>> + 'm {
29 self.model()
30 .of_type("IFCMATERIAL")
31 .map(|(id, entity)| Material::from_known(id, entity))
32 }
33}