- 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

This commit is contained in:
Marius Stanciu 2020-07-02 05:53:59 +03:00
parent 2fb786f498
commit ce4b6a5a85
2 changed files with 10 additions and 1 deletions

View File

@ -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

View File

@ -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: