- 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:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user