Fix failing ifcpatch tests

This commit is contained in:
Dion Moult
2025-02-05 14:10:36 +11:00
parent e86624873b
commit 55b9c7d6bf
3 changed files with 19 additions and 7 deletions
+1 -3
View File
@@ -16,11 +16,9 @@
# You should have received a copy of the GNU Lesser General Public License
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
import pytest
import tempfile
import test.bootstrap
import ifcopenshell
import ifcpatch
import ifcopenshell
from pathlib import Path
TEST_FILE = Path(__file__).parent / "files" / "basic.ifc"
+15 -2
View File
@@ -91,15 +91,28 @@ class Patcher:
model_rotation = (model_rotation * -1) - 360
if not np.allclose(existing_origin, other_origin) or not np.isclose(existing_angle, other_angle):
if self.file.schema != "IFC2X3" and (crs := self.file.by_type("IfcProjectedCRS")):
name = crs[0].Name
elif (
self.file.schema == "IFC2X3"
and (project := self.file.by_type("IfcProject")[0])
and (pset := ifcopenshell.util.element.get_pset(project, "ePSet_ProjectedCRS"))
):
name = pset.get("Name", "Unknown") or "Unknown"
else:
# I'm not entirely sure about this. If existing_origin !=
# other_origin there are two possibilities: either there is a
# projected CRS, or there is a WCS. If I had to choose between
# using a WCS and an "unnamed" CRS, I'd choose the latter.
name = "Unknown"
x, y, z = ifcopenshell.util.geolocation.auto_enh2xyz(
other, *existing_origin, is_specified_in_map_units=False
)
e, n, h = existing_origin
SetFalseOrigin(
"",
other,
self.logger,
name="",
name=name,
x=x,
y=y,
z=z,
+3 -2
View File
@@ -16,6 +16,7 @@
# You should have received a copy of the GNU Lesser General Public License
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
import tempfile
import ifcpatch
import ifcopenshell
import ifcopenshell.api.context
@@ -27,15 +28,15 @@ import ifcopenshell.util.placement
import ifcopenshell.util.representation
import ifcopenshell.util.shape
import ifcopenshell.util.shape_builder
import test.bootstrap
from pathlib import Path
class TestIfc2Sql:
def test_run(self):
TEST_FILE = Path(__file__).parent / "files" / "basic.ifc"
tmp = tempfile.NamedTemporaryFile(delete=False, suffix=".ifcsqlite")
sqlite_path = ifcpatch.execute(
{"file": ifcopenshell.open(TEST_FILE), "recipe": "Ifc2Sql", "arguments": ["sqlite"]}
{"file": ifcopenshell.open(TEST_FILE), "recipe": "Ifc2Sql", "arguments": ["sqlite", None, None, None, tmp.name]}
)
assert isinstance(sqlite_path, str)
assert sqlite_path.endswith(".ifcsqlite")