diff --git a/speckle/converter/geometry/mesh.py b/speckle/converter/geometry/mesh.py index bd28ea90..896515aa 100644 --- a/speckle/converter/geometry/mesh.py +++ b/speckle/converter/geometry/mesh.py @@ -123,7 +123,7 @@ def fill_mesh_parts(w: shapefile.Writer, mesh: Mesh, geom_id: str, dataStorage): def deconstructSpeckleMesh(mesh: Mesh, dataStorage): - print("deconstructSpeckleMesh") + #print("deconstructSpeckleMesh") try: scale = get_scale_factor(mesh.units, dataStorage) parts_list = [] diff --git a/speckle/converter/geometry/polygon.py b/speckle/converter/geometry/polygon.py index 5cb3fa70..8f732f44 100644 --- a/speckle/converter/geometry/polygon.py +++ b/speckle/converter/geometry/polygon.py @@ -56,7 +56,7 @@ def polygonToSpeckleMesh(geom: QgsGeometry, feature: QgsFeature, layer: QgsVecto [polyBorder[2].x, polyBorder[2].y, polyBorder[2].z] ] for pt in pts: z_val = pt.z - print(str(z_val)) + #print(str(z_val)) # project the pts on the plane point = [pt.x, pt.y, 0] z_val = projectToPolygon( point , plane_pts) @@ -155,7 +155,7 @@ def polygonToSpeckle(geom: QgsGeometry, feature: QgsFeature, layer: QgsVectorLay for v in voidsNative: pts_fixed = [] v_speckle = unknownLineToSpeckle(v, True, feature, layer, dataStorage) - pts = speckleBoundaryToSpecklePts(v_speckle) + pts = speckleBoundaryToSpecklePts(v_speckle, dataStorage) plane_pts = [ [polyBorder[0].x, polyBorder[0].y, polyBorder[0].z], [polyBorder[1].x, polyBorder[1].y, polyBorder[1].z], diff --git a/speckle/converter/geometry/polyline.py b/speckle/converter/geometry/polyline.py index f3e50199..c5093c20 100644 --- a/speckle/converter/geometry/polyline.py +++ b/speckle/converter/geometry/polyline.py @@ -27,7 +27,7 @@ def polylineFromVerticesToSpeckle(vertices: Union[List[Point], QgsVertexIterator], closed: bool, feature: QgsFeature, layer: QgsVectorLayer, dataStorage): """Returns a Speckle Polyline given a list of QgsPoint instances and a boolean indicating if it's closed or not.""" try: - print(dataStorage) + #print(dataStorage) if isinstance(vertices, list): if len(vertices) > 0 and isinstance(vertices[0], Point): specklePts = vertices diff --git a/speckle/converter/geometry/utils.py b/speckle/converter/geometry/utils.py index b57b4963..519d1f97 100644 --- a/speckle/converter/geometry/utils.py +++ b/speckle/converter/geometry/utils.py @@ -73,10 +73,10 @@ def triangulatePolygon(geom): else: dict_shape= {'vertices': vertices, 'segments': segments } try: - print(type(vertices[0][0])) - print(vertices) - print(segments) - print(holes) + #print(type(vertices[0][0])) + #print(vertices) + #print(segments) + #print(holes) t = tr.triangulate(dict_shape, 'p') #t = {'vertices': vertices, 'triangles': [[0,1,2]]} #print(t) diff --git a/speckle/converter/layers/__init__.py b/speckle/converter/layers/__init__.py index 5152bc58..319ad818 100644 --- a/speckle/converter/layers/__init__.py +++ b/speckle/converter/layers/__init__.py @@ -143,6 +143,14 @@ def convertSelectedLayers(layers: List[Union[QgsVectorLayer, QgsRasterLayer]], s for i, layer in enumerate(layers): logToUser(f"Converting layer '{layer.name()}'...", level = 0, plugin = plugin.dockwidget) + try: + for item in plugin.dataStorage.savedTransforms: + layer_name = item.split(" -> ")[0].split(" (\'")[0] + transform_name = item.split(" -> ")[1] + if layer_name == layer.name(): + logToUser(f"Applying transformation to layer '{layer_name}': '{transform_name}'", level = 0, plugin = plugin.dockwidget) + except Exception as e: print(e) + if plugin.dataStorage.savedTransforms is not None: for item in plugin.dataStorage.savedTransforms: layer_name = item.split(" -> ")[0].split(" (\'")[0] @@ -166,7 +174,12 @@ def convertSelectedLayers(layers: List[Union[QgsVectorLayer, QgsRasterLayer]], s logToUser("Raster layer transformation cannot be applied when the project CRS is set to Geographic type", level = 2, plugin = plugin.dockwidget) return None - result.append(layerToSpeckle(layer, projectCRS, plugin)) + converted = layerToSpeckle(layer, projectCRS, plugin) + print(converted) + if converted is not None: + result.append(converted) + else: + logToUser(f"Layer '{layer.name()}' conversion failed", level = 2, plugin = plugin.dockwidget) return result except Exception as e: @@ -268,6 +281,9 @@ def layerToSpeckle(selectedLayer: Union[QgsVectorLayer, QgsRasterLayer], project if isinstance(selectedLayer, QgsRasterLayer): # write feature attributes b = rasterFeatureToSpeckle(selectedLayer, projectCRS, project, plugin) + #print(b) + if b is None: + return None layerObjs.append(b) # Convert layer to speckle layerBase = RasterLayer(units = units_proj, name=layerName, crs=speckleReprojectedCrs, rasterCrs=layerCRS, elements=layerObjs) @@ -277,7 +293,7 @@ def layerToSpeckle(selectedLayer: Union[QgsVectorLayer, QgsRasterLayer], project return layerBase except Exception as e: logToUser(e, level = 2, func = inspect.stack()[0][3], plugin = plugin.dockwidget) - return + return None def layerToNative(layer: Union[Layer, VectorLayer, RasterLayer], streamBranch: str, plugin) -> Union[QgsVectorLayer, QgsRasterLayer, None]: diff --git a/speckle/converter/layers/feature.py b/speckle/converter/layers/feature.py index da02d7ab..68f99bf4 100644 --- a/speckle/converter/layers/feature.py +++ b/speckle/converter/layers/feature.py @@ -195,6 +195,9 @@ def rasterFeatureToSpeckle(selectedLayer: QgsRasterLayer, projectCRS:QgsCoordina # logToUser("Large layer: ", level = 1, func = inspect.stack()[0][3]) ds = gdal.Open(selectedLayer.source(), gdal.GA_ReadOnly) + if ds is None: + return None + originX = ds.GetGeoTransform()[0] originY = ds.GetGeoTransform()[3] rasterOriginPoint = QgsPointXY(originX, originY) @@ -644,10 +647,12 @@ def rasterFeatureToSpeckle(selectedLayer: QgsRasterLayer, projectCRS:QgsCoordina else: logToUser("Something went wrong. Mesh cannot be created, only raster data will be sent. ", level = 2, plugin = plugin.dockwidget) + return b + except Exception as e: logToUser(e, level = 2, func = inspect.stack()[0][3]) + return None - return b def featureToNative(feature: Base, fields: QgsFields, dataStorage): diff --git a/speckle_qgis.py b/speckle_qgis.py index 9d91653a..f9743d1f 100644 --- a/speckle_qgis.py +++ b/speckle_qgis.py @@ -399,7 +399,8 @@ def onSend(self, message: str): base_obj = Collection(units = units, collectionType = "QGIS commit", name = "QGIS commit") base_obj.elements = convertSelectedLayers(layers, [],[], projectCRS, self) - if base_obj.elements is None: + if base_obj.elements is None or (isinstance(base_obj.elements, List) and len(base_obj.elements) == 0): + logToUser(f"No data to send", level = 2, plugin = self.dockwidget) return logToUser(f"Sending data to the server...", level = 0, plugin = self.dockwidget) @@ -548,6 +549,8 @@ def onReceive(self): transport = validateTransport(client, streamId) if transport == None: return + + logToUser("Receiving data...", level = 0, plugin=self.dockwidget) commitObj = operations.receive(objId, transport, None) projectCRS = self.qgis_project.crs()