mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 17:31:45 +00:00
Add recipe to extract only spaces (#1521)
`ExtractElements` was not allowing to extract only spaces. It also helps to workaround revit-ifc failure in linking spaces. See: https://github.com/Autodesk/revit-ifc/issues/15
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
import ifcopenshell
|
||||
import ifcopenshell.util.selector
|
||||
|
||||
|
||||
class Patcher:
|
||||
def __init__(self, src, file, logger, args=None):
|
||||
self.src = src
|
||||
self.file = file
|
||||
self.logger = logger
|
||||
self.args = args
|
||||
|
||||
def patch(self):
|
||||
self.contained_ins = {}
|
||||
self.aggregates = {}
|
||||
self.new = ifcopenshell.file(schema=self.file.wrapped_data.schema)
|
||||
self.owner_history = None
|
||||
for owner_history in self.file.by_type("IfcOwnerHistory"):
|
||||
self.owner_history = self.new.add(owner_history)
|
||||
break
|
||||
selector = ifcopenshell.util.selector.Selector()
|
||||
for space in selector.parse(self.file, ".IfcSpace"):
|
||||
self.add_element(space)
|
||||
self.file = self.new
|
||||
|
||||
def add_element(self, element):
|
||||
self.new.add(element)
|
||||
for rel_aggregate in element.Decomposes:
|
||||
self.add_element(rel_aggregate.RelatingObject)
|
||||
self.new.add(rel_aggregate)
|
||||
Reference in New Issue
Block a user