From 4bfcd9e6b70329d1875919c333ed65d00f87bbfb Mon Sep 17 00:00:00 2001 From: KatKatKateryna Date: Wed, 6 Nov 2024 19:16:04 +0000 Subject: [PATCH] treat 3d Polygons as Meshes --- .../provider/speckle_utils/converter_utils.py | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/pygeoapi/provider/speckle_utils/converter_utils.py b/pygeoapi/provider/speckle_utils/converter_utils.py index 979adb9..913cacf 100644 --- a/pygeoapi/provider/speckle_utils/converter_utils.py +++ b/pygeoapi/provider/speckle_utils/converter_utils.py @@ -296,8 +296,24 @@ def assign_geometry(self: "SpeckleProvider", feature: Dict, f_base) -> Tuple[ Li geometry["type"] = "MultiPolygon" coord_counts.append(None) - for geom in f_base["geometry"]: - convert_polygon(geom, coords, coord_counts) + polygon_3d = False + + for mesh in f_base["displayValue"]: + for i, coord in enumerate(mesh.vertices): + if i>60: + break + if i%3 !=0: + continue + elif coord != 0: + polygon_3d = True + break + + if polygon_3d is False: + for geom in f_base["geometry"]: + convert_polygon(geom, coords, coord_counts) + else: + for geom in f_base["displayValue"]: + convert_mesh_or_brep(geom, coords, coord_counts) elif self.requested_data_type == "points":