mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-10 17:58:20 +00:00
ifcopenshell.util.selector.filter_elements - inherited predefined types
mentioned by @theoryshaw on osarch - https://community.osarch.org/discussion/comment/20126/#Comment_20126
This commit is contained in:
@@ -524,7 +524,10 @@ class FacetTransformer(lark.Transformer):
|
||||
name = name.children[0].value
|
||||
|
||||
def filter_function(element):
|
||||
element_value = getattr(element, name, None)
|
||||
if name == "PredefinedType":
|
||||
element_value = ifcopenshell.util.element.get_predefined_type(element)
|
||||
else:
|
||||
element_value = getattr(element, name, None)
|
||||
return self.compare(element_value, comparison, value)
|
||||
|
||||
self.elements = set(filter(filter_function, self.elements))
|
||||
|
||||
@@ -165,6 +165,11 @@ class TestFilterElements(test.bootstrap.IFC4):
|
||||
element.Description = "Foobar"
|
||||
assert subject.filter_elements(self.file, "IfcWall, Name=Foo, Description=Foobar") == {element}
|
||||
|
||||
element_type = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWallType")
|
||||
element_type.PredefinedType = "SOLIDWALL"
|
||||
ifcopenshell.api.run("type.assign_type", self.file, related_objects=[element], relating_type=element_type)
|
||||
assert subject.filter_elements(self.file, "IfcWall, PredefinedType=SOLIDWALL") == {element}
|
||||
|
||||
def test_selecting_by_type(self):
|
||||
element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall")
|
||||
element_type = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWallType")
|
||||
|
||||
Reference in New Issue
Block a user