From 5732921fb65d0abadeae49afc478623982697b34 Mon Sep 17 00:00:00 2001 From: Chun <36185113+chunchk@users.noreply.github.com> Date: Thu, 16 Mar 2023 00:29:33 +0800 Subject: [PATCH] a simplifier workflow and a more consistent coding style --- .../ifcopenshell/util/system.py | 51 ++++++++++--------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/src/ifcopenshell-python/ifcopenshell/util/system.py b/src/ifcopenshell-python/ifcopenshell/util/system.py index 51ee9e001b..208979e584 100644 --- a/src/ifcopenshell-python/ifcopenshell/util/system.py +++ b/src/ifcopenshell-python/ifcopenshell/util/system.py @@ -83,31 +83,34 @@ def get_connected_port(port): def get_connected_to(element): - from blenderbim.bim.ifc import IfcStore - ifcSchema = IfcStore.get_file().schema results = [] - if ifcSchema == "IFC4": - for port in ifcopenshell.util.system.get_ports(element): - for relConnectsPort in port.ConnectedTo: - for relNest in relConnectsPort.RelatedPort.Nests: - results.extend(relNest.RelatingObject) - elif ifcSchema == "IFC2X3": - for port in element.HasPorts: - for relConnectsPort in port.RelatingPort.ConnectedTo: - results.extend([r.RelatedElement for r in relConnectsPort.RelatedPort.ContainedIn if r.RelatedElement != element]) - return results + for port in ifcopenshell.util.system.get_ports(element): + for relConnectsPort in port.ConnectedTo: + for disPort in [relConnectsPort.RelatedPort,relConnectsPort.RelatingPort]: + if hasattr(disPort,"Nests"): + for relNest in disPort.Nests: + if relNest.RelatingObject != element: + results.append(relNest.RelatingObject) + # IFC2X3 only, deprecated in IFC4 + elif hasattr(disPort,"ContainedIn"): + for relConPortToElement in disPort.ContainedIn: + if relConPortToElement.RelatedElement != element: + results.append(relConPortToElement.RelatedElement) + return(results) + def get_connected_from(element): - from blenderbim.bim.ifc import IfcStore - ifcSchema = IfcStore.get_file().schema results = [] - if ifcSchema == "IFC4": - for port in ifcopenshell.util.system.get_ports(element): - for relConnectsPort in port.ConnectedFrom: - for relNest in relConnectsPort.RelatedPort.Nests: - results.extend(relNest.RelatingObject) - elif ifcSchema == "IFC2X3": - for port in element.HasPorts: - for relConnectsPort in port.RelatingPort.ConnectedFrom: - results.extend([r.RelatedElement for r in relConnectsPort.RelatingPort.ContainedIn if r.RelatedElement != element]) - return results \ No newline at end of file + for port in ifcopenshell.util.system.get_ports(element): + for relConnectsPort in port.ConnectedFrom: + for disPort in [relConnectsPort.RelatedPort,relConnectsPort.RelatingPort]: + if hasattr(disPort,"Nests"): + for relNest in disPort.Nests: + if relNest.RelatingObject != element: + results.append(relNest.RelatingObject) + # IFC2X3 only, deprecated in IFC4 + elif hasattr(disPort,"ContainedIn"): + for relConPortToElement in disPort.ContainedIn: + if relConPortToElement.RelatedElement != element: + results.append(relConPortToElement.RelatedElement) + return(results) \ No newline at end of file