From b64c11885a4876d78429d1ca37c1f9d0ebf268fa Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Mon, 31 Jan 2022 18:40:22 +0200 Subject: [PATCH] - yet another fix for Shapely 2.0 deprecation warnings --- CHANGELOG.md | 1 + appObjects/FlatCAMGerber.py | 33 +++++++++++++++++++-------------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1693b215..d1fc1e00 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ CHANGELOG for FlatCAM beta - added a new script example - improved the quit application process; now the `quit_flatcam` Tcl command works properly - another fix for Shapely 2.0 deprecation warning +- yet another fix for Shapely 2.0 deprecation warnings 30.01.2022 diff --git a/appObjects/FlatCAMGerber.py b/appObjects/FlatCAMGerber.py index 81bf8a23..0a540bbb 100644 --- a/appObjects/FlatCAMGerber.py +++ b/appObjects/FlatCAMGerber.py @@ -625,18 +625,19 @@ class GerberObject(FlatCAMObj, Gerber): not isinstance(geo_obj.solid_geometry, MultiPolygon): geo_obj.solid_geometry = [geo_obj.solid_geometry] - for g in geo_obj.solid_geometry: + w_geo = geo_obj.solid_geometry.geoms \ + if isinstance(geo_obj.solid_geometry, (MultiPolygon, MultiLineString)) else geo_obj.solid_geometry + for g in w_geo: if g: break else: empty_cnt += 1 - if empty_cnt == len(geo_obj.solid_geometry): + if empty_cnt == len(w_geo): raise ValidationError("Empty Geometry", None) - else: - if plot: - app_obj.inform.emit('[success] %s: %s' % - (_("Isolation geometry created"), geo_obj.options["name"])) + elif plot: + msg = '[success] %s: %s' % (_("Isolation geometry created"), geo_obj.options["name"]) + app_obj.inform.emit(msg) # even if combine is checked, one pass is still single-geo geo_obj.multigeo = True if passes > 1 else False @@ -712,21 +713,24 @@ class GerberObject(FlatCAMObj, Gerber): # proceed with object creation, if there are empty and the number of them is the length # of the list then we have an empty solid_geometry which should raise a Custom Exception empty_cnt = 0 - if not isinstance(geo_obj.solid_geometry, list): + if not isinstance(geo_obj.solid_geometry, list) and \ + not isinstance(geo_obj.solid_geometry, (MultiPolygon, MultiLineString)): geo_obj.solid_geometry = [geo_obj.solid_geometry] - for g in geo_obj.solid_geometry: + w_geo = geo_obj.solid_geometry.geoms \ + if isinstance(geo_obj.solid_geometry, + (MultiPolygon, MultiLineString)) else geo_obj.solid_geometry + for g in w_geo: if g: break else: empty_cnt += 1 - if empty_cnt == len(geo_obj.solid_geometry): + if empty_cnt == len(w_geo): raise ValidationError("Empty Geometry", None) - else: - if plot: - app_obj.inform.emit('[success] %s: %s' % - (_("Isolation geometry created"), geo_obj.options["name"])) + elif plot: + msg = '[success] %s: %s' % (_("Isolation geometry created"), geo_obj.options["name"]) + app_obj.inform.emit(msg) geo_obj.multigeo = False # ############################################################ @@ -755,7 +759,8 @@ class GerberObject(FlatCAMObj, Gerber): if invert: try: pl = [] - for p in geom: + w_geo = geom.geoms if isinstance(geom, (MultiPolygon, MultiLineString)) else geom + for p in w_geo: if p is not None: if isinstance(p, Polygon): pl.append(Polygon(p.exterior.coords[::-1], p.interiors))