Fix broken selector utility

This commit is contained in:
Dion Moult
2020-07-14 19:27:56 +10:00
parent 1222716e16
commit 63e65b2114
@@ -1,3 +1,5 @@
import ifcopenshell.util
import ifcopenshell.util.element
import lark
class Selector():
@@ -129,7 +131,7 @@ class Selector():
comparison = filter_rule.children[1].children[0].data
value = filter_rule.children[2].children[0][1:-1]
for element in elements:
element_value = IfcAttributeExtractor.get_element_key(element, key)
element_value = self.get_element_value(element, key)
if not element_value:
continue
if not comparison \
@@ -137,6 +139,16 @@ class Selector():
results.append(element)
return results
def get_element_value(self, element, key):
info = element.get_info()
if key in info:
return info[key]
elif '.' in key:
pset_name, prop = key.split('.')
psets = ifcopenshell.util.element.get_psets(element)
if pset_name in psets and prop in psets[pset_name]:
return psets[pset_name][prop]
def filter_element(self, element, element_value, comparison, value):
if comparison == 'equal':
return str(element_value) == value