- now, Excellon and Gerber edited objects will have the source_code updated and ready to be saved

- the edited Gerber (or Excellon) object now is kept in the app after editing and the edited object is a new object
- added a message to the splash screen
This commit is contained in:
Marius Stanciu
2019-09-12 22:21:19 +03:00
committed by Marius
parent 295cba8539
commit 1a8784f5ab
5 changed files with 92 additions and 58 deletions

View File

@@ -3713,7 +3713,36 @@ class FlatCAMGrbEditor(QtCore.QObject):
for apid in self.gerber_obj.apertures:
temp_elem = []
if 'geometry' in self.gerber_obj.apertures[apid]:
# for elem in self.gerber_obj.apertures[apid]['geometry']:
# if 'solid' in elem:
# solid_geo = elem['solid']
# for clear_geo in global_clear_geo:
# # Make sure that the clear_geo is within the solid_geo otherwise we loose
# # the solid_geometry. We want for clear_geometry just to cut into solid_geometry not to
# # delete it
# if clear_geo.within(solid_geo):
# solid_geo = solid_geo.difference(clear_geo)
# try:
# for poly in solid_geo:
# new_elem = dict()
#
# new_elem['solid'] = poly
# if 'clear' in elem:
# new_elem['clear'] = poly
# if 'follow' in elem:
# new_elem['follow'] = poly
# temp_elem.append(deepcopy(new_elem))
# except TypeError:
# new_elem = dict()
# new_elem['solid'] = solid_geo
# if 'clear' in elem:
# new_elem['clear'] = solid_geo
# if 'follow' in elem:
# new_elem['follow'] = solid_geo
# temp_elem.append(deepcopy(new_elem))
for elem in self.gerber_obj.apertures[apid]['geometry']:
new_elem = dict()
if 'solid' in elem:
solid_geo = elem['solid']
for clear_geo in global_clear_geo:
@@ -3722,24 +3751,14 @@ class FlatCAMGrbEditor(QtCore.QObject):
# delete it
if clear_geo.within(solid_geo):
solid_geo = solid_geo.difference(clear_geo)
try:
for poly in solid_geo:
new_elem = dict()
new_elem['solid'] = poly
if 'clear' in elem:
new_elem['clear'] = poly
if 'follow' in elem:
new_elem['follow'] = poly
temp_elem.append(deepcopy(new_elem))
except TypeError:
new_elem = dict()
new_elem['solid'] = solid_geo
if 'clear' in elem:
new_elem['clear'] = solid_geo
if 'follow' in elem:
new_elem['follow'] = solid_geo
temp_elem.append(deepcopy(new_elem))
new_elem['solid'] = solid_geo
if 'clear' in elem:
new_elem['clear'] = elem['clear']
if 'follow' in elem:
new_elem['follow'] = elem['follow']
temp_elem.append(deepcopy(new_elem))
self.gerber_obj.apertures[apid]['geometry'] = deepcopy(temp_elem)
log.warning("Polygon difference done for %d apertures." % len(self.gerber_obj.apertures))
@@ -3876,19 +3895,19 @@ class FlatCAMGrbEditor(QtCore.QObject):
grb_obj.apertures[storage_apid][k] = []
for geo_el in val:
geometric_data = geo_el.geo
new_geo_el = dict()
if 'solid' in geometric_data:
new_geo_el['solid'] = geometric_data['solid']
poly_buffer.append(deepcopy(new_geo_el['solid']))
if 'follow' in geometric_data:
if isinstance(geometric_data['follow'], Polygon):
buff_val = -(int(storage_apid) / 2)
geo_f = (geometric_data['follow'].buffer(buff_val)).exterior
new_geo_el['follow'] = geo_f
else:
new_geo_el['follow'] = geometric_data['follow']
# if isinstance(geometric_data['follow'], Polygon):
# buff_val = -(int(storage_val['size']) / 2)
# geo_f = (geometric_data['follow'].buffer(buff_val)).exterior
# new_geo_el['follow'] = geo_f
# else:
# new_geo_el['follow'] = geometric_data['follow']
new_geo_el['follow'] = geometric_data['follow']
follow_buffer.append(deepcopy(new_geo_el['follow']))
else:
if 'solid' in geometric_data:
@@ -3910,6 +3929,9 @@ class FlatCAMGrbEditor(QtCore.QObject):
new_poly = new_poly.buffer(0.00000001)
new_poly = new_poly.buffer(-0.00000001)
# for ad in grb_obj.apertures:
# print(ad, grb_obj.apertures[ad])
try:
__ = iter(new_poly)
except TypeError:
@@ -3924,7 +3946,6 @@ class FlatCAMGrbEditor(QtCore.QObject):
else:
grb_obj.options[k] = deepcopy(v)
grb_obj.source_file = []
grb_obj.multigeo = False
grb_obj.follow = False
grb_obj.gerber_units = app_obj.defaults['units']
@@ -3940,6 +3961,8 @@ class FlatCAMGrbEditor(QtCore.QObject):
msg += traceback.format_exc()
app_obj.inform.emit(msg)
raise
grb_obj.source_file = self.app.export_gerber(obj_name=out_name, filename=None,
local_use=grb_obj, use_thread=False)
with self.app.proc_container.new(_("Creating Gerber.")):
try: