Resolve issue 144

Added a test for the new mechanism
Added a gerber test file
This commit is contained in:
phdussud
2015-06-26 13:42:55 -07:00
parent 2a411cef14
commit 0bf21458c6
4 changed files with 6417 additions and 3 deletions

View File

@@ -1159,7 +1159,8 @@ class Gerber (Geometry):
"""
defaults = {
"steps_per_circle": 40
"steps_per_circle": 40,
"use_buffer_for_union": True
}
def __init__(self, steps_per_circle=None):
@@ -1277,6 +1278,8 @@ class Gerber (Geometry):
# How to discretize a circle.
self.steps_per_circ = steps_per_circle or Gerber.defaults['steps_per_circle']
self.use_buffer_for_union = self.defaults["use_buffer_for_union"]
def scale(self, factor):
"""
Scales the objects' geometry on the XY plane by a given factor.
@@ -1964,8 +1967,15 @@ class Gerber (Geometry):
# --- Apply buffer ---
log.warn("Joining %d polygons." % len(poly_buffer))
new_poly = cascaded_union(poly_buffer)
new_poly = new_poly.buffer(0)
if (self.use_buffer_for_union):
new_poly = MultiPolygon(poly_buffer)
new_poly = new_poly.buffer(0.00000001)
new_poly = new_poly.buffer(-0.00000001)
log.warn("Union(buffer) done.")
else:
new_poly = cascaded_union(poly_buffer)
new_poly = new_poly = new_poly.buffer(0)
log.warn("Union done.")
if current_polarity == 'D':
self.solid_geometry = self.solid_geometry.union(new_poly)
else: