- fixed Panelize Tool to do panelization for multiple passes type of geometry that comes out of the isolation done with multiple passes

This commit is contained in:
Marius Stanciu 2019-07-29 02:36:29 +03:00
parent c6e3176ac3
commit 8e80ec156c
4 changed files with 55 additions and 9 deletions

View File

@ -784,6 +784,8 @@ class App(QtCore.QObject):
# Geometry Options
"geometry_cutz": -0.002,
"geometry_vtipdia": 0.1,
"geometry_vtipangle": 30,
"geometry_multidepth": False,
"geometry_depthperpass": 0.002,
"geometry_travelz": 0.1,
@ -1129,6 +1131,8 @@ class App(QtCore.QObject):
"geometry_segx": 0.0,
"geometry_segy": 0.0,
"geometry_cutz": -0.002,
"geometry_vtipdia": 0.1,
"geometry_vtipangle": 30,
"geometry_travelz": 0.1,
"geometry_feedrate": 3.0,
"geometry_feedrate_z": 3.0,

View File

@ -890,7 +890,6 @@ class FlatCAMGerber(FlatCAMObj, Gerber):
return geom
if combine:
if self.iso_type == 0:
iso_name = self.options["name"] + "_ext_iso"
elif self.iso_type == 1:
@ -914,6 +913,46 @@ class FlatCAMGerber(FlatCAMObj, Gerber):
geom = generate_envelope(iso_offset, 0, envelope_iso_type=self.iso_type, follow=follow)
geo_obj.solid_geometry.append(geom)
# store here the default data for Geometry Data
default_data = {}
default_data.update({
"name": iso_name,
"plot": self.app.defaults['geometry_plot'],
"cutz": self.app.defaults['geometry_cutz'],
"vtipdia": self.app.defaults['geometry_vtipdia'],
"vtipangle": self.app.defaults['geometry_vtipangle'],
"travelz": self.app.defaults['geometry_travelz'],
"feedrate": self.app.defaults['geometry_feedrate'],
"feedrate_z": self.app.defaults['geometry_feedrate_z'],
"feedrate_rapid": self.app.defaults['geometry_feedrate_rapid'],
"dwell": self.app.defaults['geometry_dwell'],
"dwelltime": self.app.defaults['geometry_dwelltime'],
"multidepth": self.app.defaults['geometry_multidepth'],
"ppname_g": self.app.defaults['geometry_ppname_g'],
"depthperpass": self.app.defaults['geometry_depthperpass'],
"extracut": self.app.defaults['geometry_extracut'],
"toolchange": self.app.defaults['geometry_toolchange'],
"toolchangez": self.app.defaults['geometry_toolchangez'],
"endz": self.app.defaults['geometry_endz'],
"spindlespeed": self.app.defaults['geometry_spindlespeed'],
"toolchangexy": self.app.defaults['geometry_toolchangexy'],
"startz": self.app.defaults['geometry_startz']
})
geo_obj.tools = dict()
geo_obj.tools['1'] = dict()
geo_obj.tools.update({
'1': {
'tooldia': float(self.options["isotooldia"]),
'offset': 'Path',
'offset_value': 0.0,
'type': _('Rough'),
'tool_type': 'C1',
'data': default_data,
'solid_geometry': geo_obj.solid_geometry
}
})
# detect if solid_geometry is empty and this require list flattening which is "heavy"
# or just looking in the lists (they are one level depth) and if any is not empty
# proceed with object creation, if there are empty and the number of them is the length
@ -933,7 +972,7 @@ class FlatCAMGerber(FlatCAMObj, Gerber):
if empty_cnt == len(geo_obj.solid_geometry):
raise ValidationError("Empty Geometry", None)
geo_obj.multigeo = False
geo_obj.multigeo = True
# TODO: Do something if this is None. Offer changing name?
self.app.new_object("geometry", iso_name, iso_init)

View File

@ -15,6 +15,7 @@ CAD program, and create G-Code for Isolation routing.
- after unit conversion from Preferences, the default values are automatically saved by the app
- in Basic mode, the tool type column is no longer hidden as it may create issues when using an painted geometry
- some PEP8 clean-up in FlatCAMGui.py
- fixed Panelize Tool to do panelization for multiple passes type of geometry that comes out of the isolation done with multiple passes
20.07.2019

View File

@ -348,7 +348,8 @@ class Panelize(FlatCAMTool):
# Get source object.
try:
obj = self.app.collection.get_by_name(str(name))
except:
except Exception as e:
log.debug("Panelize.on_panelize() --> %s" % str(e))
self.app.inform.emit(_("[ERROR_NOTCL] Could not retrieve object: %s") % name)
return "Could not retrieve object: %s" % name
@ -362,7 +363,8 @@ class Panelize(FlatCAMTool):
try:
box = self.app.collection.get_by_name(boxname)
except:
except Exception as e:
log.debug("Panelize.on_panelize() --> %s" % str(e))
self.app.inform.emit(_("[ERROR_NOTCL] Could not retrieve object: %s") % boxname)
return "Could not retrieve object: %s" % boxname
@ -491,8 +493,8 @@ class Panelize(FlatCAMTool):
if option is not 'name':
try:
obj_fin.options[option] = panel_obj.options[option]
except:
log.warning("Failed to copy option.", option)
except KeyError:
log.warning("Failed to copy option. %s" % str(option))
for row in range(rows):
currentx = 0.0
@ -534,7 +536,7 @@ class Panelize(FlatCAMTool):
for local_geom in geom:
res_geo = translate_recursion(local_geom)
try:
geoms += (res_geo)
geoms += res_geo
except TypeError:
geoms.append(res_geo)
return geoms
@ -638,9 +640,9 @@ class Panelize(FlatCAMTool):
try:
panelize_2()
self.app.inform.emit(_("[success] Panel created successfully."))
except Exception as e:
except Exception as ee:
proc.done()
log.debug(str(e))
log.debug(str(ee))
return
proc.done()