- made faster the Gerber parser for the case of having a not valid geometry when loading a Gerber file without buffering
This commit is contained in:
parent
91cad9c57d
commit
462e3ac2ec
|
@ -13,6 +13,7 @@ CAD program, and create G-Code for Isolation routing.
|
||||||
|
|
||||||
- added the Gerber code as source for the panelized object in Panelize Tool
|
- added the Gerber code as source for the panelized object in Panelize Tool
|
||||||
- whenever a Gerber file is deleted, the mark_shapes objects are deleted also
|
- whenever a Gerber file is deleted, the mark_shapes objects are deleted also
|
||||||
|
- made faster the Gerber parser for the case of having a not valid geometry when loading a Gerber file without buffering
|
||||||
|
|
||||||
10.09.2019
|
10.09.2019
|
||||||
|
|
||||||
|
|
36
camlib.py
36
camlib.py
|
@ -3396,15 +3396,35 @@ class Gerber (Geometry):
|
||||||
|
|
||||||
if current_polarity == 'D':
|
if current_polarity == 'D':
|
||||||
self.app.inform.emit('%s' % _("Gerber processing. Applying Gerber polarity."))
|
self.app.inform.emit('%s' % _("Gerber processing. Applying Gerber polarity."))
|
||||||
try:
|
if new_poly.is_valid:
|
||||||
self.solid_geometry = self.solid_geometry.union(new_poly)
|
self.solid_geometry = self.solid_geometry.union(new_poly)
|
||||||
except Exception as e:
|
else:
|
||||||
# in case in the new_poly are some self intersections try to avoid making union with them
|
# I do this so whenever the parsed geometry of the file is not valid (intersections) it is still
|
||||||
for poly in new_poly:
|
# loaded. Instead of applying a union I add to a list of polygons.
|
||||||
try:
|
final_poly = []
|
||||||
self.solid_geometry = self.solid_geometry.union(poly)
|
try:
|
||||||
except:
|
for poly in new_poly:
|
||||||
pass
|
final_poly.append(poly)
|
||||||
|
except TypeError:
|
||||||
|
final_poly.append(new_poly)
|
||||||
|
|
||||||
|
try:
|
||||||
|
for poly in self.solid_geometry:
|
||||||
|
final_poly.append(poly)
|
||||||
|
except TypeError:
|
||||||
|
final_poly.append(self.solid_geometry)
|
||||||
|
|
||||||
|
self.solid_geometry = final_poly
|
||||||
|
|
||||||
|
# try:
|
||||||
|
# self.solid_geometry = self.solid_geometry.union(new_poly)
|
||||||
|
# except Exception as e:
|
||||||
|
# # in case in the new_poly are some self intersections try to avoid making union with them
|
||||||
|
# for poly in new_poly:
|
||||||
|
# try:
|
||||||
|
# self.solid_geometry = self.solid_geometry.union(poly)
|
||||||
|
# except:
|
||||||
|
# pass
|
||||||
else:
|
else:
|
||||||
self.solid_geometry = self.solid_geometry.difference(new_poly)
|
self.solid_geometry = self.solid_geometry.difference(new_poly)
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
|
|
Loading…
Reference in New Issue