mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 17:31:45 +00:00
Fix #3627. Bug where exclude didn't take into account entities are "OR" not "AND". Whoops.
This commit is contained in:
@@ -1504,7 +1504,7 @@ class Drawing(blenderbim.core.tool.Drawing):
|
||||
elements = cls.get_elements_in_camera_view(tool.Ifc.get_object(drawing), bpy.data.objects)
|
||||
include = pset.get("Include", None)
|
||||
if include:
|
||||
elements = set(ifcopenshell.util.selector.filter_elements(ifc_file, include, elements=elements))
|
||||
elements = ifcopenshell.util.selector.filter_elements(ifc_file, include, elements=elements)
|
||||
else:
|
||||
if tool.Ifc.get_schema() == "IFC2X3":
|
||||
base_elements = set(ifc_file.by_type("IfcElement") + ifc_file.by_type("IfcSpatialStructureElement"))
|
||||
@@ -1516,7 +1516,7 @@ class Drawing(blenderbim.core.tool.Drawing):
|
||||
|
||||
exclude = pset.get("Exclude", None)
|
||||
if exclude:
|
||||
elements -= set(ifcopenshell.util.selector.filter_elements(ifc_file, exclude, elements=elements))
|
||||
elements -= ifcopenshell.util.selector.filter_elements(ifc_file, exclude)
|
||||
elements -= set(ifc_file.by_type("IfcOpeningElement"))
|
||||
return elements
|
||||
|
||||
@@ -1529,10 +1529,10 @@ class Drawing(blenderbim.core.tool.Drawing):
|
||||
tool.Ifc.get_object(drawing), [tool.Ifc.get_object(e) for e in ifc_file.by_type("IfcSpace")]
|
||||
)
|
||||
if include:
|
||||
elements = set(ifcopenshell.util.selector.filter_elements(ifc_file, include, elements=elements.copy()))
|
||||
elements = ifcopenshell.util.selector.filter_elements(ifc_file, include, elements=elements)
|
||||
exclude = pset.get("Exclude", None)
|
||||
if exclude:
|
||||
elements -= set(ifcopenshell.util.selector.filter_elements(ifc_file, exclude, elements=elements.copy()))
|
||||
elements -= ifcopenshell.util.selector.filter_elements(ifc_file, exclude)
|
||||
return elements
|
||||
|
||||
@classmethod
|
||||
|
||||
@@ -119,7 +119,9 @@ def get_element_value(element, query):
|
||||
return Selector.get_element_value(element, filter_query["keys"], filter_query["is_regex"])
|
||||
|
||||
|
||||
def filter_elements(ifc_file, query, elements=None):
|
||||
def filter_elements(ifc_file, query, elements=None, edit_in_place=False):
|
||||
if elements and not edit_in_place:
|
||||
elements = elements.copy()
|
||||
transformer = FacetTransformer(ifc_file, elements)
|
||||
transformer.transform(filter_elements_grammar.parse(query))
|
||||
return transformer.get_results()
|
||||
|
||||
Reference in New Issue
Block a user