mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 17:31:45 +00:00
Fixed getting filtered spatial elements at import for ifc2x3 #3283
In ifc2x3 IfcProject is not IfcContext because there is no IfcContext in ifc2x3 and it was causing the error below on .ifc import with filtered spatial elements.
Also added small refactor
Traceback:
Error: Python: Traceback (most recent call last):
File "\blenderbim\bim\module\project\operator.py", line 595, in execute
ifc_importer.execute()
File "\blenderbim\bim\import_ifc.py", line 253, in execute
self.create_spatial_elements()
File "\blenderbim\bim\import_ifc.py", line 688, in create_spatial_elements
self.create_generic_elements(self.spatial_elements)
File "\blenderbim\bim\import_ifc.py", line 698, in create_generic_elements
products = self.create_products(elements)
File "\blenderbim\bim\import_ifc.py", line 717, in create_products
iterator = ifcopenshell.geom.iterator(settings, self.file, multiprocessing.cpu_count(), include=products)
File "\blenderbim\libs\site\packages\ifcopenshell\geom\main.py", line 99, in __init__
raise ValueError("include and exclude need to be an aggregate of IfcProduct?")
ValueError: include and exclude need to be an aggregate of IfcProduct?
This commit is contained in:
@@ -361,7 +361,7 @@ class IfcImporter:
|
||||
while True:
|
||||
results.add(spatial_element)
|
||||
spatial_element = ifcopenshell.util.element.get_aggregate(spatial_element)
|
||||
if not spatial_element or spatial_element.is_a("IfcContext"):
|
||||
if not spatial_element or spatial_element.is_a() in ("IfcContext", "IfcProject"):
|
||||
break
|
||||
return results
|
||||
|
||||
@@ -1342,14 +1342,11 @@ class IfcImporter:
|
||||
obj.BIMObjectProperties.collection = self.project["blender"]
|
||||
|
||||
def create_collections(self):
|
||||
if self.ifc_import_settings.collection_mode == "DECOMPOSITION":
|
||||
self.create_decomposition_collections()
|
||||
elif self.ifc_import_settings.collection_mode == "SPATIAL_DECOMPOSITION":
|
||||
self.create_spatial_decomposition_collections()
|
||||
|
||||
def create_decomposition_collections(self):
|
||||
self.create_spatial_decomposition_collections()
|
||||
self.create_aggregate_collections()
|
||||
if self.ifc_import_settings.collection_mode == "DECOMPOSITION":
|
||||
self.create_aggregate_collections()
|
||||
elif self.ifc_import_settings.collection_mode == "SPATIAL_DECOMPOSITION":
|
||||
pass
|
||||
|
||||
def create_spatial_decomposition_collections(self):
|
||||
for rel_aggregate in self.project["ifc"].IsDecomposedBy or []:
|
||||
|
||||
Reference in New Issue
Block a user