mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-20 06:58:56 +00:00
Attempt to fix selector bug where retrieving material values gets caught in exception
This commit is contained in:
@@ -212,15 +212,26 @@ class Selector:
|
|||||||
key = ".".join(key.split(".")[1:])
|
key = ".".join(key.split(".")[1:])
|
||||||
elif "." in key and key.split(".")[0] == "material":
|
elif "." in key and key.split(".")[0] == "material":
|
||||||
try:
|
try:
|
||||||
material_definition = ifcopenshell.util.element.get_material(element, should_skip_usage=True)
|
material_definition = ifcopenshell.util.element.get_material(
|
||||||
key = ".".join(key.split(".")[1:])
|
element, should_skip_usage=True
|
||||||
materials = [inst for inst in cls.file.traverse(material_definition) if inst.is_a('IfcMaterial')]
|
)
|
||||||
for material in materials:
|
|
||||||
info = material.get_info()
|
|
||||||
if key in info and info[key] == value:
|
|
||||||
element = material
|
|
||||||
if not material_definition:
|
if not material_definition:
|
||||||
return None
|
return None
|
||||||
|
key = ".".join(key.split(".")[1:])
|
||||||
|
if value:
|
||||||
|
materials = [
|
||||||
|
inst
|
||||||
|
for inst in cls.file.traverse(material_definition)
|
||||||
|
if inst.is_a("IfcMaterial")
|
||||||
|
]
|
||||||
|
for material in materials or []:
|
||||||
|
info = material.get_info()
|
||||||
|
if key in info and info[key] == value:
|
||||||
|
element = material
|
||||||
|
if material_definition.is_a("IfcMaterialLayerSet"):
|
||||||
|
info = material_definition.get_info()
|
||||||
|
if key in info:
|
||||||
|
return info[key]
|
||||||
except:
|
except:
|
||||||
return
|
return
|
||||||
elif "." in key and key.split(".")[0] == "container":
|
elif "." in key and key.split(".")[0] == "container":
|
||||||
|
|||||||
Reference in New Issue
Block a user