import IfcDistributionPorts with assets when executing append_library_element and for type products, use the type product's collection, not the container

This commit is contained in:
falken10vdl
2026-01-09 17:11:02 +01:00
parent ed7ae0da9c
commit c41496a9c3
2 changed files with 22 additions and 6 deletions
@@ -381,6 +381,7 @@ class Usecase:
def append_type_product(self):
self.whitelisted_inverse_attributes = {
"IfcObjectDefinition": ["HasAssociations"],
"IfcDistributionElementType": ["IsNestedBy"],
self.base_material_class: ["HasExternalReferences", "HasProperties", "HasRepresentation"],
"IfcRepresentationItem": ["StyledByItem", "LayerAssignment"],
"IfcRepresentation": ["LayerAssignments"],
@@ -397,6 +398,7 @@ class Usecase:
"IfcObjectDefinition": ["HasAssociations"],
"IfcObject": ["IsDefinedBy.IfcRelDefinesByProperties"],
"IfcElement": ["HasOpenings"],
"IfcDistributionElement": ["IsNestedBy"],
self.base_material_class: ["HasExternalReferences", "HasProperties", "HasRepresentation"],
"IfcRepresentationItem": [
"StyledByItem",
@@ -488,7 +490,8 @@ class Usecase:
attribute_class = None
if "." in attribute:
attribute, attribute_class = attribute.split(".")
for inverse in getattr(element, attribute, []):
inverse_values = getattr(element, attribute, [])
for inverse in inverse_values:
if attribute_class and inverse.is_a(attribute_class):
self.add_inverse_element(inverse)
elif not attribute_class:
@@ -569,6 +572,8 @@ class Usecase:
return False
elif element.is_a("IfcRoot") and self.by_guid(element.GlobalId) is not None:
return False
elif element.is_a("IfcDistributionPort"):
return False
elif element.is_a(self.target_class):
return True
elif self.target_class == "IfcProduct" and element.is_a("IfcTypeProduct"):