fixed bug in system.get_connected_to / get_connected_from

import was missing
This commit is contained in:
Andrej730
2023-07-31 17:30:11 +05:00
parent e9f77f8d2e
commit ef01766f4d
@@ -17,6 +17,8 @@
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>. # along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
import ifcopenshell.util
group_types = { group_types = {
"IfcZone": ("IfcZone", "IfcSpace", "IfcSpatialZone"), "IfcZone": ("IfcZone", "IfcSpace", "IfcSpatialZone"),
"IfcBuiltSystem": ( "IfcBuiltSystem": (
@@ -82,35 +84,37 @@ def get_connected_port(port):
return rel.RelatingPort return rel.RelatingPort
# TODO: cover in tests
def get_connected_to(element): def get_connected_to(element):
results = [] results = []
for port in ifcopenshell.util.system.get_ports(element): for port in ifcopenshell.util.system.get_ports(element):
for relConnectsPort in port.ConnectedTo: for relConnectsPort in port.ConnectedTo:
for disPort in [relConnectsPort.RelatedPort,relConnectsPort.RelatingPort]: for disPort in [relConnectsPort.RelatedPort, relConnectsPort.RelatingPort]:
if hasattr(disPort,"Nests"): if hasattr(disPort, "Nests"):
for relNest in disPort.Nests: for relNest in disPort.Nests:
if relNest.RelatingObject != element: if relNest.RelatingObject != element:
results.append(relNest.RelatingObject) results.append(relNest.RelatingObject)
# IFC2X3 only, deprecated in IFC4 # IFC2X3 only, deprecated in IFC4
elif hasattr(disPort,"ContainedIn"): elif hasattr(disPort, "ContainedIn"):
for relConPortToElement in disPort.ContainedIn: for relConPortToElement in disPort.ContainedIn:
if relConPortToElement.RelatedElement != element: if relConPortToElement.RelatedElement != element:
results.append(relConPortToElement.RelatedElement) results.append(relConPortToElement.RelatedElement)
return(results) return results
# TODO: cover in tests
def get_connected_from(element): def get_connected_from(element):
results = [] results = []
for port in ifcopenshell.util.system.get_ports(element): for port in ifcopenshell.util.system.get_ports(element):
for relConnectsPort in port.ConnectedFrom: for relConnectsPort in port.ConnectedFrom:
for disPort in [relConnectsPort.RelatedPort,relConnectsPort.RelatingPort]: for disPort in [relConnectsPort.RelatedPort, relConnectsPort.RelatingPort]:
if hasattr(disPort,"Nests"): if hasattr(disPort, "Nests"):
for relNest in disPort.Nests: for relNest in disPort.Nests:
if relNest.RelatingObject != element: if relNest.RelatingObject != element:
results.append(relNest.RelatingObject) results.append(relNest.RelatingObject)
# IFC2X3 only, deprecated in IFC4 # IFC2X3 only, deprecated in IFC4
elif hasattr(disPort,"ContainedIn"): elif hasattr(disPort, "ContainedIn"):
for relConPortToElement in disPort.ContainedIn: for relConPortToElement in disPort.ContainedIn:
if relConPortToElement.RelatedElement != element: if relConPortToElement.RelatedElement != element:
results.append(relConPortToElement.RelatedElement) results.append(relConPortToElement.RelatedElement)
return(results) return results