- fixed App.convert_any2gerber to work with the new Gerber apertures data structure

- fixed Tool Sub to work with the new Gerber apertures data structure
This commit is contained in:
Marius Stanciu
2019-05-18 18:22:02 +03:00
parent 8ccd73b919
commit f779c74d0e
5 changed files with 125 additions and 49 deletions

View File

@@ -4798,13 +4798,17 @@ class App(QtCore.QObject):
def convert_any2gerber(self):
self.report_usage("convert_any2gerber()")
def initialize(obj_init, app):
def initialize_geometry(obj_init, app):
apertures = {}
apid = 0
apertures[str(apid)] = {}
apertures[str(apid)]['solid_geometry'] = []
apertures[str(apid)]['solid_geometry'] = deepcopy(obj.solid_geometry)
apertures[str(apid)]['geometry'] = []
for obj_orig in obj.solid_geometry:
new_elem = dict()
new_elem['solid'] = obj_orig
new_elem['follow'] = obj_orig.exterior
apertures[str(apid)]['geometry'].append(deepcopy(new_elem))
apertures[str(apid)]['size'] = 0.0
apertures[str(apid)]['type'] = 'C'
@@ -4817,9 +4821,12 @@ class App(QtCore.QObject):
apid = 10
for tool in obj.tools:
apertures[str(apid)] = {}
apertures[str(apid)]['solid_geometry'] = []
apertures[str(apid)]['geometry'] = []
for geo in obj.tools[tool]['solid_geometry']:
apertures[str(apid)]['solid_geometry'].append(geo)
new_el = dict()
new_el['solid'] = geo
new_el['follow'] = geo.exterior
apertures[str(apid)]['geometry'].append(deepcopy(new_el))
apertures[str(apid)]['size'] = float(obj.tools[tool]['C'])
apertures[str(apid)]['type'] = 'C'
@@ -4828,8 +4835,8 @@ class App(QtCore.QObject):
# create solid_geometry
solid_geometry = []
for apid in apertures:
for geo in apertures[apid]['solid_geometry']:
solid_geometry.append(geo)
for geo_el in apertures[apid]['geometry']:
solid_geometry.append(geo_el['solid'])
solid_geometry = MultiPolygon(solid_geometry)
solid_geometry = solid_geometry.buffer(0.0000001)
@@ -4851,8 +4858,10 @@ class App(QtCore.QObject):
try:
if isinstance(obj, FlatCAMExcellon):
self.new_object("gerber", str(obj_name) + "_conv", initialize_excellon)
elif isinstance(obj, FlatCAMGeometry):
self.new_object("gerber", str(obj_name) + "_conv", initialize_geometry)
else:
self.new_object("gerber", str(obj_name) + "_conv", initialize)
log.warning("App.convert_any2gerber --> This is no vaild object for conversion.")
except Exception as e:
return "Operation failed: %s" % str(e)