Przeglądaj źródła

- trying to optimize the resulting geometry in DXF import (and in SVG import) by merging contiguous lines; reduced the lines to about one third of the original

Marius Stanciu 5 lat temu
rodzic
commit
ce4b6a5a85
2 zmienionych plików z 10 dodań i 1 usunięć
  1. 4 0
      CHANGELOG.md
  2. 6 1
      camlib.py

+ 4 - 0
CHANGELOG.md

@@ -7,6 +7,10 @@ CHANGELOG for FlatCAM beta
 
 =================================================
 
+2.07.2020
+
+- trying to optimize the resulting geometry in DXF import (and in SVG import) by merging contiguous lines; reduced the lines to about one third of the original
+
 30.06.2020
 
 - fixed the SVG parser so the SVG files with no information regarding the 'height' can be opened in FlatCAM; fixed issue #433

+ 6 - 1
camlib.py

@@ -25,7 +25,7 @@ from lxml import etree as ET
 from shapely.geometry import Polygon, LineString, Point, LinearRing, MultiLineString, MultiPoint, MultiPolygon
 
 from shapely.geometry import box as shply_box
-from shapely.ops import cascaded_union, unary_union, substring
+from shapely.ops import cascaded_union, unary_union, substring, linemerge
 import shapely.affinity as affinity
 from shapely.wkt import loads as sloads
 from shapely.wkt import dumps as sdumps
@@ -1057,6 +1057,9 @@ class Geometry(object):
         if flip:
             geos = [translate(scale(g, 1.0, -1.0, origin=(0, 0)), yoff=h) for g in geos]
 
+        # trying to optimize the resulting geometry by merging contiguous lines
+        geos = linemerge(geos)
+
         # Add to object
         if self.solid_geometry is None:
             self.solid_geometry = []
@@ -1098,6 +1101,8 @@ class Geometry(object):
         # Parse into list of shapely objects
         dxf = ezdxf.readfile(filename)
         geos = getdxfgeo(dxf)
+        # trying to optimize the resulting geometry by merging contiguous lines
+        geos = linemerge(geos)
 
         # Add to object
         if self.solid_geometry is None: