From 6515e0916aa730bb3e07a19b4f7b129bd570c941 Mon Sep 17 00:00:00 2001 From: krande Date: Sun, 17 Oct 2021 14:51:59 +0200 Subject: [PATCH] Added support for IfcGroup --- src/ada/concepts/levels.py | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/ada/concepts/levels.py b/src/ada/concepts/levels.py index 4fb4ea935..de7e13704 100644 --- a/src/ada/concepts/levels.py +++ b/src/ada/concepts/levels.py @@ -1049,7 +1049,9 @@ def to_ifc(self, destination_file, include_fem=False) -> None: for p in self.get_all_parts_in_assembly(include_self=True): add_part_objects_to_ifc(p, f, self, include_fem) - # all_groups = [p.groups.values() for p in self.get_all_parts_in_assembly(include_self=True)] + all_groups = [p.groups.values() for p in self.get_all_parts_in_assembly(include_self=True)] + for group in chain.from_iterable(all_groups): + group.to_ifc(f) if len(self.presentation_layers) > 0: presentation_style = f.createIfcPresentationStyle("HiddenLayers") @@ -1215,12 +1217,31 @@ class Group: members: List[Union[Part, Beam, Plate, Wall, Pipe, Shape]] parent: Union[Part, Assembly] description: str = "" + ifc_elem = None + + def _generate_ifc_elem(self, f): + a = self.parent.get_assembly() + owner_history = a.user.to_ifc() + return f.create_entity("IfcGroup", create_guid(), owner_history, self.name, self.description) def to_ifc(self, f): - guid = create_guid() a = self.parent.get_assembly() owner_history = a.user.to_ifc() - _ = f.create_entity("IfcGroup", guid, owner_history, self.name, self.description) + if self.ifc_elem is None: + self.ifc_elem = self._generate_ifc_elem(f) + + relating_objects = [] + for m in self.members: + relating_objects.append(m.get_ifc_elem()) + f.create_entity( + "IfcRelAssignsToGroup", + create_guid(), + owner_history, + self.name, + self.description, + RelatedObjects=relating_objects, + RelatingGroup=self.ifc_elem, + ) @dataclass