Update functions of get_connected_to and get_connected_from compatible with IFC4 and IFC2X3

This commit is contained in:
Chun
2023-03-14 14:49:30 +08:00
parent 765b4a73d3
commit f859f11add
@@ -83,17 +83,31 @@ def get_connected_port(port):
def get_connected_to(element): def get_connected_to(element):
from blenderbim.bim.ifc import IfcStore
ifcSchema = IfcStore.get_file().schema
results = [] results = []
for port in ifcopenshell.util.system.get_ports(element): if ifcSchema == "IFC4":
for relConnectsPort in port.ConnectedTo: for port in ifcopenshell.util.system.get_ports(element):
for relNest in relConnectsPort.RelatedPort.Nests: for relConnectsPort in port.ConnectedTo:
results.extend(relNest.RelatingObject) 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 return results
def get_connected_from(element): def get_connected_from(element):
from blenderbim.bim.ifc import IfcStore
ifcSchema = IfcStore.get_file().schema
results = [] results = []
for port in ifcopenshell.util.system.get_ports(element): if ifcSchema == "IFC4":
for relConnectsPort in port.ConnectedFrom: for port in ifcopenshell.util.system.get_ports(element):
for relNest in relConnectsPort.RelatingPort.Nests: for relConnectsPort in port.ConnectedFrom:
results.extend(relNest.RelatingObject) for relNest in relConnectsPort.RelatedPort.Nests:
results.extend(relNest.RelatingObject)
elif ifcSchema == "IFC2X3":
for rel in element.HasPorts:
for rel2 in rel.RelatingPort.ConnectedFrom:
results.extend([r.RelatedElement for r in rel2.RelatingPort.ContainedIn if r.RelatedElement != element])
return results return results