IfcPatch now uses the new facet selector syntax.

This commit is contained in:
Dion Moult
2023-08-23 17:09:51 +10:00
parent 899056f929
commit a3fd169bb6
2 changed files with 6 additions and 7 deletions
+2 -2
View File
@@ -47,7 +47,7 @@ In this example, we'll extract out all `IfcWall` elements.
:: ::
$ ifcpatch -i input.ifc -o output.ifc -r ExtractElements -a ".IfcWall" $ ifcpatch -i input.ifc -o output.ifc -r ExtractElements -a "IfcWall"
$ cat output.ifc $ cat output.ifc
Here is a minimal example of how to use IfcPatch as a library: Here is a minimal example of how to use IfcPatch as a library:
@@ -60,7 +60,7 @@ Here is a minimal example of how to use IfcPatch as a library:
"input": "input.ifc", "input": "input.ifc",
"file": ifcopenshell.open("input.ifc"), "file": ifcopenshell.open("input.ifc"),
"recipe": "ExtractElements", "recipe": "ExtractElements",
"arguments": [".IfcWall"], "arguments": ["IfcWall"],
}) })
ifcpatch.write(output, "output.ifc") ifcpatch.write(output, "output.ifc")
@@ -37,13 +37,13 @@ class Patcher:
.. code:: python .. code:: python
# Extract all walls # Extract all walls
ifcpatch.execute({"input": model, "recipe": "ExtractElements", "arguments": [".IfcWall"]}) ifcpatch.execute({"input": model, "recipe": "ExtractElements", "arguments": ["IfcWall"]})
# Extract all slabs # Extract all slabs
ifcpatch.execute({"input": model, "recipe": "ExtractElements", "arguments": [".IfcSlab"]}) ifcpatch.execute({"input": model, "recipe": "ExtractElements", "arguments": ["IfcSlab"]})
# Extract all walls and slabs # Extract all walls and slabs
ifcpatch.execute({"input": model, "recipe": "ExtractElements", "arguments": [".IfcWall|.IfcSlab"]}) ifcpatch.execute({"input": model, "recipe": "ExtractElements", "arguments": ["IfcWall, IfcSlab"]})
""" """
self.src = src self.src = src
self.file = file self.file = file
@@ -59,8 +59,7 @@ class Patcher:
self.owner_history = self.new.add(owner_history) self.owner_history = self.new.add(owner_history)
break break
self.add_element(self.file.by_type("IfcProject")[0]) self.add_element(self.file.by_type("IfcProject")[0])
selector = ifcopenshell.util.selector.Selector() for element in ifcopenshell.util.selector.filter_elements(self.file, self.query):
for element in selector.parse(self.file, self.query):
self.add_element(element) self.add_element(element)
self.create_spatial_tree() self.create_spatial_tree()
self.file = self.new self.file = self.new