- Gerber Editor - working in conversion to the new data format
This commit is contained in:
parent
01c0f901ff
commit
820f75e20c
44
camlib.py
44
camlib.py
@ -2691,7 +2691,7 @@ class Gerber (Geometry):
|
|||||||
else:
|
else:
|
||||||
width = self.apertures[last_path_aperture]["size"]
|
width = self.apertures[last_path_aperture]["size"]
|
||||||
|
|
||||||
if self.apertures[last_path_aperture]["type"] is not 'R':
|
if self.apertures[last_path_aperture]["type"] != 'R':
|
||||||
geo_f = LineString(path)
|
geo_f = LineString(path)
|
||||||
follow_buffer.append(geo_f)
|
follow_buffer.append(geo_f)
|
||||||
|
|
||||||
@ -3027,48 +3027,6 @@ class Gerber (Geometry):
|
|||||||
self.apertures[last_path_aperture]['geometry'] = []
|
self.apertures[last_path_aperture]['geometry'] = []
|
||||||
self.apertures[last_path_aperture]['geometry'].append(geo_dict)
|
self.apertures[last_path_aperture]['geometry'].append(geo_dict)
|
||||||
|
|
||||||
# TODO: make sure to keep track of units changes because right now it seems to happen in a weird way
|
|
||||||
# find out the conversion factor used to convert inside the self.apertures keys: size, width, height
|
|
||||||
|
|
||||||
file_units = gerber_units if gerber_units else 'IN'
|
|
||||||
app_units = self.app.defaults['units']
|
|
||||||
conversion_factor = 25.4 if file_units == 'IN' else (1/25.4) if file_units != app_units else 1
|
|
||||||
|
|
||||||
# --- the following section is useful for Gerber editor only --- #
|
|
||||||
log.warning("Applying clear geometry in the apertures dict.")
|
|
||||||
# list of clear geos that are to be applied to the entire file
|
|
||||||
global_clear_geo = []
|
|
||||||
|
|
||||||
for apid in self.apertures:
|
|
||||||
if 'geometry' in self.apertures[apid]:
|
|
||||||
for elem in self.apertures[apid]['geometry']:
|
|
||||||
if 'clear' in elem:
|
|
||||||
global_clear_geo.append(elem['clear'])
|
|
||||||
log.warning("Found %d clear polygons." % len(global_clear_geo))
|
|
||||||
|
|
||||||
for apid in self.apertures:
|
|
||||||
if 'geometry' in self.apertures[apid]:
|
|
||||||
for elem in self.apertures[apid]['geometry']:
|
|
||||||
if 'solid' in elem:
|
|
||||||
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(elem['solid']):
|
|
||||||
elem['solid'] = elem['solid'].difference(clear_geo)
|
|
||||||
|
|
||||||
log.warning("Polygon difference done for %d apertures." % len(self.apertures))
|
|
||||||
|
|
||||||
# for apid in self.apertures:
|
|
||||||
# # scale de aperture geometries according to the used units
|
|
||||||
# for k, v in self.apertures[apid].items():
|
|
||||||
# if k == 'size' or k == 'width' or k == 'height':
|
|
||||||
# self.apertures[apid][k] = v * conversion_factor
|
|
||||||
# -------------------------------------------------------------
|
|
||||||
|
|
||||||
# for t in self.apertures:
|
|
||||||
# print(t, self.apertures[t]['size'])
|
|
||||||
|
|
||||||
# --- Apply buffer ---
|
# --- Apply buffer ---
|
||||||
# this treats the case when we are storing geometry as paths
|
# this treats the case when we are storing geometry as paths
|
||||||
self.follow_geometry = follow_buffer
|
self.follow_geometry = follow_buffer
|
||||||
|
@ -3245,6 +3245,44 @@ class FlatCAMGrbEditor(QtCore.QObject):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
log.debug("FlatCAMGrbEditor.edit_fcgerber() --> %s" % str(e))
|
log.debug("FlatCAMGrbEditor.edit_fcgerber() --> %s" % str(e))
|
||||||
|
|
||||||
|
|
||||||
|
# # --- the following section is useful for Gerber editor only --- #
|
||||||
|
# log.warning("Applying clear geometry in the apertures dict.")
|
||||||
|
# # list of clear geos that are to be applied to the entire file
|
||||||
|
# global_clear_geo = []
|
||||||
|
#
|
||||||
|
# for apid in self.apertures:
|
||||||
|
# if 'geometry' in self.apertures[apid]:
|
||||||
|
# for elem in self.apertures[apid]['geometry']:
|
||||||
|
# if 'clear' in elem:
|
||||||
|
# global_clear_geo.append(elem['clear'])
|
||||||
|
# log.warning("Found %d clear polygons." % len(global_clear_geo))
|
||||||
|
#
|
||||||
|
# for apid in self.apertures:
|
||||||
|
# geo_list = []
|
||||||
|
# if 'geometry' in self.apertures[apid]:
|
||||||
|
# for elem in self.apertures[apid]['geometry']:
|
||||||
|
# if 'solid' in elem:
|
||||||
|
# for clear_geo in global_clear_geo:
|
||||||
|
# new_elem = dict()
|
||||||
|
# # 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(elem['solid']):
|
||||||
|
# new_elem['solid'] = elem['solid'].difference(clear_geo)
|
||||||
|
# else:
|
||||||
|
# new_elem['solid'] = elem['solid']
|
||||||
|
# if 'follow' in elem:
|
||||||
|
# new_elem['follow'] = elem['follow']
|
||||||
|
# if 'clear' in elem:
|
||||||
|
# new_elem['clear'] = elem['clear']
|
||||||
|
# geo_list.append(deepcopy(new_elem))
|
||||||
|
# self.apertures[apid]['geometry'] = deepcopy(geo_list)
|
||||||
|
# geo_list[:] = []
|
||||||
|
#
|
||||||
|
# log.warning("Polygon difference done for %d apertures." % len(self.apertures))
|
||||||
|
|
||||||
|
|
||||||
# and then add it to the storage elements (each storage elements is a member of a list
|
# and then add it to the storage elements (each storage elements is a member of a list
|
||||||
|
|
||||||
def job_thread(self, apid):
|
def job_thread(self, apid):
|
||||||
@ -3276,11 +3314,12 @@ class FlatCAMGrbEditor(QtCore.QObject):
|
|||||||
self.grb_plot_promises.append(apid)
|
self.grb_plot_promises.append(apid)
|
||||||
self.app.worker_task.emit({'fcn': job_thread, 'params': [self, apid]})
|
self.app.worker_task.emit({'fcn': job_thread, 'params': [self, apid]})
|
||||||
|
|
||||||
|
self.set_ui()
|
||||||
|
|
||||||
# do the delayed plot only if there is something to plot (the gerber is not empty)
|
# do the delayed plot only if there is something to plot (the gerber is not empty)
|
||||||
if bool(self.gerber_obj.apertures):
|
if bool(self.gerber_obj.apertures):
|
||||||
self.start_delayed_plot(check_period=1000)
|
self.start_delayed_plot(check_period=1000)
|
||||||
else:
|
else:
|
||||||
self.set_ui()
|
|
||||||
# now that we have data (empty data actually), create the GUI interface and add it to the Tool Tab
|
# now that we have data (empty data actually), create the GUI interface and add it to the Tool Tab
|
||||||
self.build_ui(first_run=True)
|
self.build_ui(first_run=True)
|
||||||
# and add the first aperture to have something to play with
|
# and add the first aperture to have something to play with
|
||||||
@ -3940,7 +3979,6 @@ class FlatCAMGrbEditor(QtCore.QObject):
|
|||||||
def setup_ui_after_delayed_plot(self):
|
def setup_ui_after_delayed_plot(self):
|
||||||
self.plot_finished.disconnect()
|
self.plot_finished.disconnect()
|
||||||
|
|
||||||
self.set_ui()
|
|
||||||
# now that we have data, create the GUI interface and add it to the Tool Tab
|
# now that we have data, create the GUI interface and add it to the Tool Tab
|
||||||
self.build_ui(first_run=True)
|
self.build_ui(first_run=True)
|
||||||
self.plot_all()
|
self.plot_all()
|
||||||
|
Loading…
Reference in New Issue
Block a user