فهرست منبع

- 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 سال پیش
والد
کامیت
ce4b6a5a85
2فایلهای تغییر یافته به همراه10 افزوده شده و 1 حذف شده
  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
 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
 - 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 Polygon, LineString, Point, LinearRing, MultiLineString, MultiPoint, MultiPolygon
 
 
 from shapely.geometry import box as shply_box
 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
 import shapely.affinity as affinity
 from shapely.wkt import loads as sloads
 from shapely.wkt import loads as sloads
 from shapely.wkt import dumps as sdumps
 from shapely.wkt import dumps as sdumps
@@ -1057,6 +1057,9 @@ class Geometry(object):
         if flip:
         if flip:
             geos = [translate(scale(g, 1.0, -1.0, origin=(0, 0)), yoff=h) for g in geos]
             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
         # Add to object
         if self.solid_geometry is None:
         if self.solid_geometry is None:
             self.solid_geometry = []
             self.solid_geometry = []
@@ -1098,6 +1101,8 @@ class Geometry(object):
         # Parse into list of shapely objects
         # Parse into list of shapely objects
         dxf = ezdxf.readfile(filename)
         dxf = ezdxf.readfile(filename)
         geos = getdxfgeo(dxf)
         geos = getdxfgeo(dxf)
+        # trying to optimize the resulting geometry by merging contiguous lines
+        geos = linemerge(geos)
 
 
         # Add to object
         # Add to object
         if self.solid_geometry is None:
         if self.solid_geometry is None: