- Gerber Export: made sure that if some of the coordinates in a Gerber object geometry are repeating then the resulting Gerber code include only one copy
- added a new parameter/feature: now the spindle can work in clockwise mode (CW) or counter clockwise mode (CCW)
This commit is contained in:
parent
b2cb0f9ffb
commit
d172a3ca49
|
@ -396,6 +396,7 @@ class App(QtCore.QObject):
|
||||||
"excellon_travelz": self.ui.excellon_defaults_form.excellon_opt_group.travelz_entry,
|
"excellon_travelz": self.ui.excellon_defaults_form.excellon_opt_group.travelz_entry,
|
||||||
"excellon_feedrate": self.ui.excellon_defaults_form.excellon_opt_group.feedrate_entry,
|
"excellon_feedrate": self.ui.excellon_defaults_form.excellon_opt_group.feedrate_entry,
|
||||||
"excellon_spindlespeed": self.ui.excellon_defaults_form.excellon_opt_group.spindlespeed_entry,
|
"excellon_spindlespeed": self.ui.excellon_defaults_form.excellon_opt_group.spindlespeed_entry,
|
||||||
|
"excellon_spindledir": self.ui.excellon_defaults_form.excellon_opt_group.spindledir_radio,
|
||||||
"excellon_dwell": self.ui.excellon_defaults_form.excellon_opt_group.dwell_cb,
|
"excellon_dwell": self.ui.excellon_defaults_form.excellon_opt_group.dwell_cb,
|
||||||
"excellon_dwelltime": self.ui.excellon_defaults_form.excellon_opt_group.dwelltime_entry,
|
"excellon_dwelltime": self.ui.excellon_defaults_form.excellon_opt_group.dwelltime_entry,
|
||||||
"excellon_toolchange": self.ui.excellon_defaults_form.excellon_opt_group.toolchange_cb,
|
"excellon_toolchange": self.ui.excellon_defaults_form.excellon_opt_group.toolchange_cb,
|
||||||
|
@ -434,6 +435,7 @@ class App(QtCore.QObject):
|
||||||
"geometry_feedrate": self.ui.geometry_defaults_form.geometry_opt_group.cncfeedrate_entry,
|
"geometry_feedrate": self.ui.geometry_defaults_form.geometry_opt_group.cncfeedrate_entry,
|
||||||
"geometry_feedrate_z": self.ui.geometry_defaults_form.geometry_opt_group.cncplunge_entry,
|
"geometry_feedrate_z": self.ui.geometry_defaults_form.geometry_opt_group.cncplunge_entry,
|
||||||
"geometry_spindlespeed": self.ui.geometry_defaults_form.geometry_opt_group.cncspindlespeed_entry,
|
"geometry_spindlespeed": self.ui.geometry_defaults_form.geometry_opt_group.cncspindlespeed_entry,
|
||||||
|
"geometry_spindledir": self.ui.geometry_defaults_form.geometry_opt_group.spindledir_radio,
|
||||||
"geometry_dwell": self.ui.geometry_defaults_form.geometry_opt_group.dwell_cb,
|
"geometry_dwell": self.ui.geometry_defaults_form.geometry_opt_group.dwell_cb,
|
||||||
"geometry_dwelltime": self.ui.geometry_defaults_form.geometry_opt_group.dwelltime_entry,
|
"geometry_dwelltime": self.ui.geometry_defaults_form.geometry_opt_group.dwelltime_entry,
|
||||||
"geometry_ppname_g": self.ui.geometry_defaults_form.geometry_opt_group.pp_geometry_name_cb,
|
"geometry_ppname_g": self.ui.geometry_defaults_form.geometry_opt_group.pp_geometry_name_cb,
|
||||||
|
@ -711,6 +713,7 @@ class App(QtCore.QObject):
|
||||||
"excellon_travelz": 0.1,
|
"excellon_travelz": 0.1,
|
||||||
"excellon_feedrate": 3.0,
|
"excellon_feedrate": 3.0,
|
||||||
"excellon_spindlespeed": None,
|
"excellon_spindlespeed": None,
|
||||||
|
"excellon_spindledir": 'CW',
|
||||||
"excellon_dwell": False,
|
"excellon_dwell": False,
|
||||||
"excellon_dwelltime": 1,
|
"excellon_dwelltime": 1,
|
||||||
"excellon_toolchange": False,
|
"excellon_toolchange": False,
|
||||||
|
@ -753,6 +756,7 @@ class App(QtCore.QObject):
|
||||||
"geometry_feedrate": 3.0,
|
"geometry_feedrate": 3.0,
|
||||||
"geometry_feedrate_z": 3.0,
|
"geometry_feedrate_z": 3.0,
|
||||||
"geometry_spindlespeed": None,
|
"geometry_spindlespeed": None,
|
||||||
|
"geometry_spindledir": 'CW',
|
||||||
"geometry_dwell": False,
|
"geometry_dwell": False,
|
||||||
"geometry_dwelltime": 1,
|
"geometry_dwelltime": 1,
|
||||||
"geometry_ppname_g": 'default',
|
"geometry_ppname_g": 'default',
|
||||||
|
@ -942,6 +946,7 @@ class App(QtCore.QObject):
|
||||||
"excellon_travelz": self.ui.excellon_options_form.excellon_opt_group.travelz_entry,
|
"excellon_travelz": self.ui.excellon_options_form.excellon_opt_group.travelz_entry,
|
||||||
"excellon_feedrate": self.ui.excellon_options_form.excellon_opt_group.feedrate_entry,
|
"excellon_feedrate": self.ui.excellon_options_form.excellon_opt_group.feedrate_entry,
|
||||||
"excellon_spindlespeed": self.ui.excellon_options_form.excellon_opt_group.spindlespeed_entry,
|
"excellon_spindlespeed": self.ui.excellon_options_form.excellon_opt_group.spindlespeed_entry,
|
||||||
|
"excellon_spindledir": self.ui.excellon_options_form.excellon_opt_group.spindledir_radio,
|
||||||
"excellon_dwell": self.ui.excellon_options_form.excellon_opt_group.dwell_cb,
|
"excellon_dwell": self.ui.excellon_options_form.excellon_opt_group.dwell_cb,
|
||||||
"excellon_dwelltime": self.ui.excellon_options_form.excellon_opt_group.dwelltime_entry,
|
"excellon_dwelltime": self.ui.excellon_options_form.excellon_opt_group.dwelltime_entry,
|
||||||
"excellon_toolchange": self.ui.excellon_options_form.excellon_opt_group.toolchange_cb,
|
"excellon_toolchange": self.ui.excellon_options_form.excellon_opt_group.toolchange_cb,
|
||||||
|
@ -963,6 +968,7 @@ class App(QtCore.QObject):
|
||||||
"geometry_feedrate": self.ui.geometry_options_form.geometry_opt_group.cncfeedrate_entry,
|
"geometry_feedrate": self.ui.geometry_options_form.geometry_opt_group.cncfeedrate_entry,
|
||||||
"geometry_feedrate_z": self.ui.geometry_options_form.geometry_opt_group.cncplunge_entry,
|
"geometry_feedrate_z": self.ui.geometry_options_form.geometry_opt_group.cncplunge_entry,
|
||||||
"geometry_spindlespeed": self.ui.geometry_options_form.geometry_opt_group.cncspindlespeed_entry,
|
"geometry_spindlespeed": self.ui.geometry_options_form.geometry_opt_group.cncspindlespeed_entry,
|
||||||
|
"geometry_spindledir": self.ui.geometry_options_form.geometry_opt_group.spindledir_radio,
|
||||||
"geometry_dwell": self.ui.geometry_options_form.geometry_opt_group.dwell_cb,
|
"geometry_dwell": self.ui.geometry_options_form.geometry_opt_group.dwell_cb,
|
||||||
"geometry_dwelltime": self.ui.geometry_options_form.geometry_opt_group.dwelltime_entry,
|
"geometry_dwelltime": self.ui.geometry_options_form.geometry_opt_group.dwelltime_entry,
|
||||||
"geometry_ppname_g": self.ui.geometry_options_form.geometry_opt_group.pp_geometry_name_cb,
|
"geometry_ppname_g": self.ui.geometry_options_form.geometry_opt_group.pp_geometry_name_cb,
|
||||||
|
@ -1065,6 +1071,7 @@ class App(QtCore.QObject):
|
||||||
"excellon_feedrate": 3.0,
|
"excellon_feedrate": 3.0,
|
||||||
"excellon_feedrate_rapid": 3.0,
|
"excellon_feedrate_rapid": 3.0,
|
||||||
"excellon_spindlespeed": None,
|
"excellon_spindlespeed": None,
|
||||||
|
"excellon_spindledir": 'CW',
|
||||||
"excellon_dwell": True,
|
"excellon_dwell": True,
|
||||||
"excellon_dwelltime": 1000,
|
"excellon_dwelltime": 1000,
|
||||||
"excellon_toolchange": False,
|
"excellon_toolchange": False,
|
||||||
|
@ -1085,6 +1092,7 @@ class App(QtCore.QObject):
|
||||||
"geometry_feedrate_z": 3.0,
|
"geometry_feedrate_z": 3.0,
|
||||||
"geometry_feedrate_rapid": 3.0,
|
"geometry_feedrate_rapid": 3.0,
|
||||||
"geometry_spindlespeed": None,
|
"geometry_spindlespeed": None,
|
||||||
|
"geometry_spindledir": 'CW',
|
||||||
"geometry_dwell": True,
|
"geometry_dwell": True,
|
||||||
"geometry_dwelltime": 1000,
|
"geometry_dwelltime": 1000,
|
||||||
"geometry_cnctooldia": 0.016,
|
"geometry_cnctooldia": 0.016,
|
||||||
|
|
|
@ -1350,15 +1350,20 @@ class FlatCAMGerber(FlatCAMObj, Gerber):
|
||||||
geo_coords[0][0], geo_coords[0][1], factor)
|
geo_coords[0][0], geo_coords[0][1], factor)
|
||||||
gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted,
|
gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted,
|
||||||
yform=y_formatted)
|
yform=y_formatted)
|
||||||
|
|
||||||
|
prev_coord = geo_coords[0]
|
||||||
for coord in geo_coords[1:]:
|
for coord in geo_coords[1:]:
|
||||||
if g_zeros == 'T':
|
if coord != prev_coord:
|
||||||
x_formatted, y_formatted = tz_format(coord[0], coord[1], factor)
|
if g_zeros == 'T':
|
||||||
gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted,
|
x_formatted, y_formatted = tz_format(coord[0], coord[1], factor)
|
||||||
yform=y_formatted)
|
gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted,
|
||||||
else:
|
yform=y_formatted)
|
||||||
x_formatted, y_formatted = lz_format(coord[0], coord[1], factor)
|
else:
|
||||||
gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted,
|
x_formatted, y_formatted = lz_format(coord[0], coord[1], factor)
|
||||||
yform=y_formatted)
|
gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted,
|
||||||
|
yform=y_formatted)
|
||||||
|
prev_coord = coord
|
||||||
|
|
||||||
gerber_code += 'D02*\n'
|
gerber_code += 'D02*\n'
|
||||||
gerber_code += 'G37*\n'
|
gerber_code += 'G37*\n'
|
||||||
gerber_code += '%LPD*%\n'
|
gerber_code += '%LPD*%\n'
|
||||||
|
@ -1377,15 +1382,20 @@ class FlatCAMGerber(FlatCAMObj, Gerber):
|
||||||
x_formatted, y_formatted = lz_format(geo_coords[0][0], geo_coords[0][1], factor)
|
x_formatted, y_formatted = lz_format(geo_coords[0][0], geo_coords[0][1], factor)
|
||||||
gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted,
|
gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted,
|
||||||
yform=y_formatted)
|
yform=y_formatted)
|
||||||
|
|
||||||
|
prev_coord = geo_coords[0]
|
||||||
for coord in geo_coords[1:]:
|
for coord in geo_coords[1:]:
|
||||||
if g_zeros == 'T':
|
if coord != prev_coord:
|
||||||
x_formatted, y_formatted = tz_format(coord[0], coord[1], factor)
|
if g_zeros == 'T':
|
||||||
gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted,
|
x_formatted, y_formatted = tz_format(coord[0], coord[1], factor)
|
||||||
yform=y_formatted)
|
gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted,
|
||||||
else:
|
yform=y_formatted)
|
||||||
x_formatted, y_formatted = lz_format(coord[0], coord[1], factor)
|
else:
|
||||||
gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted,
|
x_formatted, y_formatted = lz_format(coord[0], coord[1], factor)
|
||||||
yform=y_formatted)
|
gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted,
|
||||||
|
yform=y_formatted)
|
||||||
|
prev_coord = coord
|
||||||
|
|
||||||
gerber_code += 'D02*\n'
|
gerber_code += 'D02*\n'
|
||||||
gerber_code += 'G37*\n'
|
gerber_code += 'G37*\n'
|
||||||
gerber_code += '%LPD*%\n'
|
gerber_code += '%LPD*%\n'
|
||||||
|
@ -1422,15 +1432,20 @@ class FlatCAMGerber(FlatCAMObj, Gerber):
|
||||||
geo_coords[0][0], geo_coords[0][1], factor)
|
geo_coords[0][0], geo_coords[0][1], factor)
|
||||||
gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted,
|
gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted,
|
||||||
yform=y_formatted)
|
yform=y_formatted)
|
||||||
|
|
||||||
|
prev_coord = geo_coords[0]
|
||||||
for coord in geo_coords[1:]:
|
for coord in geo_coords[1:]:
|
||||||
if g_zeros == 'T':
|
if coord != prev_coord:
|
||||||
x_formatted, y_formatted = tz_format(coord[0], coord[1], factor)
|
if g_zeros == 'T':
|
||||||
gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted,
|
x_formatted, y_formatted = tz_format(coord[0], coord[1], factor)
|
||||||
yform=y_formatted)
|
gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted,
|
||||||
else:
|
yform=y_formatted)
|
||||||
x_formatted, y_formatted = lz_format(coord[0], coord[1], factor)
|
else:
|
||||||
gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted,
|
x_formatted, y_formatted = lz_format(coord[0], coord[1], factor)
|
||||||
yform=y_formatted)
|
gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted,
|
||||||
|
yform=y_formatted)
|
||||||
|
prev_coord = coord
|
||||||
|
|
||||||
# gerber_code += "D02*\n"
|
# gerber_code += "D02*\n"
|
||||||
|
|
||||||
if 'clear' in geo_elem:
|
if 'clear' in geo_elem:
|
||||||
|
@ -1460,15 +1475,20 @@ class FlatCAMGerber(FlatCAMObj, Gerber):
|
||||||
geo_coords[0][0], geo_coords[0][1], factor)
|
geo_coords[0][0], geo_coords[0][1], factor)
|
||||||
gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted,
|
gerber_code += "X{xform}Y{yform}D02*\n".format(xform=x_formatted,
|
||||||
yform=y_formatted)
|
yform=y_formatted)
|
||||||
|
|
||||||
|
prev_coord = geo_coords[0]
|
||||||
for coord in geo_coords[1:]:
|
for coord in geo_coords[1:]:
|
||||||
if g_zeros == 'T':
|
if coord != prev_coord:
|
||||||
x_formatted, y_formatted = tz_format(coord[0], coord[1], factor)
|
if g_zeros == 'T':
|
||||||
gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted,
|
x_formatted, y_formatted = tz_format(coord[0], coord[1], factor)
|
||||||
yform=y_formatted)
|
gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted,
|
||||||
else:
|
yform=y_formatted)
|
||||||
x_formatted, y_formatted = lz_format(coord[0], coord[1], factor)
|
else:
|
||||||
gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted,
|
x_formatted, y_formatted = lz_format(coord[0], coord[1], factor)
|
||||||
yform=y_formatted)
|
gerber_code += "X{xform}Y{yform}D01*\n".format(xform=x_formatted,
|
||||||
|
yform=y_formatted)
|
||||||
|
|
||||||
|
prev_coord = coord
|
||||||
# gerber_code += "D02*\n"
|
# gerber_code += "D02*\n"
|
||||||
gerber_code += '%LPD*%\n'
|
gerber_code += '%LPD*%\n'
|
||||||
|
|
||||||
|
@ -2551,8 +2571,10 @@ class FlatCAMExcellon(FlatCAMObj, Excellon):
|
||||||
job_obj.feedrate_rapid = float(self.options["feedrate_rapid"])
|
job_obj.feedrate_rapid = float(self.options["feedrate_rapid"])
|
||||||
|
|
||||||
job_obj.spindlespeed = float(self.options["spindlespeed"]) if self.options["spindlespeed"] else None
|
job_obj.spindlespeed = float(self.options["spindlespeed"]) if self.options["spindlespeed"] else None
|
||||||
|
job_obj.spindledir = self.app.defaults['excellon_spindledir']
|
||||||
job_obj.dwell = self.options["dwell"]
|
job_obj.dwell = self.options["dwell"]
|
||||||
job_obj.dwelltime = float(self.options["dwelltime"])
|
job_obj.dwelltime = float(self.options["dwelltime"])
|
||||||
|
|
||||||
job_obj.pp_excellon_name = pp_excellon_name
|
job_obj.pp_excellon_name = pp_excellon_name
|
||||||
|
|
||||||
job_obj.toolchange_xy_type = "excellon"
|
job_obj.toolchange_xy_type = "excellon"
|
||||||
|
@ -4406,6 +4428,8 @@ class FlatCAMGeometry(FlatCAMObj, Geometry):
|
||||||
'offset_value': tool_offset
|
'offset_value': tool_offset
|
||||||
})
|
})
|
||||||
|
|
||||||
|
spindledir = self.app.defaults['geometry_spindledir']
|
||||||
|
|
||||||
job_obj.coords_decimals = self.app.defaults["cncjob_coords_decimals"]
|
job_obj.coords_decimals = self.app.defaults["cncjob_coords_decimals"]
|
||||||
job_obj.fr_decimals = self.app.defaults["cncjob_fr_decimals"]
|
job_obj.fr_decimals = self.app.defaults["cncjob_fr_decimals"]
|
||||||
|
|
||||||
|
@ -4425,7 +4449,7 @@ class FlatCAMGeometry(FlatCAMObj, Geometry):
|
||||||
self, tooldia=tooldia_val, offset=tool_offset, tolerance=0.0005,
|
self, tooldia=tooldia_val, offset=tool_offset, tolerance=0.0005,
|
||||||
z_cut=z_cut, z_move=z_move,
|
z_cut=z_cut, z_move=z_move,
|
||||||
feedrate=feedrate, feedrate_z=feedrate_z, feedrate_rapid=feedrate_rapid,
|
feedrate=feedrate, feedrate_z=feedrate_z, feedrate_rapid=feedrate_rapid,
|
||||||
spindlespeed=spindlespeed, dwell=dwell, dwelltime=dwelltime,
|
spindlespeed=spindlespeed, spindledir=spindledir, dwell=dwell, dwelltime=dwelltime,
|
||||||
multidepth=multidepth, depthpercut=depthpercut,
|
multidepth=multidepth, depthpercut=depthpercut,
|
||||||
extracut=extracut, startz=startz, endz=endz,
|
extracut=extracut, startz=startz, endz=endz,
|
||||||
toolchange=toolchange, toolchangez=toolchangez, toolchangexy=toolchangexy,
|
toolchange=toolchange, toolchangez=toolchangez, toolchangexy=toolchangexy,
|
||||||
|
@ -4649,12 +4673,14 @@ class FlatCAMGeometry(FlatCAMObj, Geometry):
|
||||||
|
|
||||||
app_obj.progress.emit(40)
|
app_obj.progress.emit(40)
|
||||||
|
|
||||||
|
spindledir = self.app.defaults['geometry_spindledir']
|
||||||
|
|
||||||
tool_solid_geometry = self.tools[current_uid]['solid_geometry']
|
tool_solid_geometry = self.tools[current_uid]['solid_geometry']
|
||||||
res = job_obj.generate_from_multitool_geometry(
|
res = job_obj.generate_from_multitool_geometry(
|
||||||
tool_solid_geometry, tooldia=tooldia_val, offset=tool_offset,
|
tool_solid_geometry, tooldia=tooldia_val, offset=tool_offset,
|
||||||
tolerance=0.0005, z_cut=z_cut, z_move=z_move,
|
tolerance=0.0005, z_cut=z_cut, z_move=z_move,
|
||||||
feedrate=feedrate, feedrate_z=feedrate_z, feedrate_rapid=feedrate_rapid,
|
feedrate=feedrate, feedrate_z=feedrate_z, feedrate_rapid=feedrate_rapid,
|
||||||
spindlespeed=spindlespeed, dwell=dwell, dwelltime=dwelltime,
|
spindlespeed=spindlespeed, spindledir=spindledir, dwell=dwell, dwelltime=dwelltime,
|
||||||
multidepth=multidepth, depthpercut=depthpercut,
|
multidepth=multidepth, depthpercut=depthpercut,
|
||||||
extracut=extracut, startz=startz, endz=endz,
|
extracut=extracut, startz=startz, endz=endz,
|
||||||
toolchange=toolchange, toolchangez=toolchangez, toolchangexy=toolchangexy,
|
toolchange=toolchange, toolchangez=toolchangez, toolchangexy=toolchangexy,
|
||||||
|
|
|
@ -9,6 +9,11 @@ CAD program, and create G-Code for Isolation routing.
|
||||||
|
|
||||||
=================================================
|
=================================================
|
||||||
|
|
||||||
|
16.05.2019
|
||||||
|
|
||||||
|
- Gerber Export: made sure that if some of the coordinates in a Gerber object geometry are repeating then the resulting Gerber code include only one copy
|
||||||
|
- added a new parameter/feature: now the spindle can work in clockwise mode (CW) or counter clockwise mode (CCW)
|
||||||
|
|
||||||
15.05.2019
|
15.05.2019
|
||||||
|
|
||||||
- rewrited the Gerber Parser in camlib - success
|
- rewrited the Gerber Parser in camlib - success
|
||||||
|
|
18
camlib.py
18
camlib.py
|
@ -4932,7 +4932,7 @@ class CNCjob(Geometry):
|
||||||
feedrate=3.0, feedrate_z=3.0, feedrate_rapid=3.0, feedrate_probe=3.0,
|
feedrate=3.0, feedrate_z=3.0, feedrate_rapid=3.0, feedrate_probe=3.0,
|
||||||
pp_geometry_name='default', pp_excellon_name='default',
|
pp_geometry_name='default', pp_excellon_name='default',
|
||||||
depthpercut=0.1,z_pdepth=-0.02,
|
depthpercut=0.1,z_pdepth=-0.02,
|
||||||
spindlespeed=None, dwell=True, dwelltime=1000,
|
spindlespeed=None, spindledir='CW', dwell=True, dwelltime=1000,
|
||||||
toolchangez=0.787402, toolchange_xy=[0.0, 0.0],
|
toolchangez=0.787402, toolchange_xy=[0.0, 0.0],
|
||||||
endz=2.0,
|
endz=2.0,
|
||||||
segx=None,
|
segx=None,
|
||||||
|
@ -5000,6 +5000,7 @@ class CNCjob(Geometry):
|
||||||
self.feedrate_probe = feedrate_probe if feedrate_probe else None
|
self.feedrate_probe = feedrate_probe if feedrate_probe else None
|
||||||
|
|
||||||
self.spindlespeed = spindlespeed
|
self.spindlespeed = spindlespeed
|
||||||
|
self.spindledir = spindledir
|
||||||
self.dwell = dwell
|
self.dwell = dwell
|
||||||
self.dwelltime = dwelltime
|
self.dwelltime = dwelltime
|
||||||
|
|
||||||
|
@ -5553,7 +5554,7 @@ class CNCjob(Geometry):
|
||||||
def generate_from_multitool_geometry(self, geometry, append=True,
|
def generate_from_multitool_geometry(self, geometry, append=True,
|
||||||
tooldia=None, offset=0.0, tolerance=0, z_cut=1.0, z_move=2.0,
|
tooldia=None, offset=0.0, tolerance=0, z_cut=1.0, z_move=2.0,
|
||||||
feedrate=2.0, feedrate_z=2.0, feedrate_rapid=30,
|
feedrate=2.0, feedrate_z=2.0, feedrate_rapid=30,
|
||||||
spindlespeed=None, dwell=False, dwelltime=1.0,
|
spindlespeed=None, spindledir='CW', dwell=False, dwelltime=1.0,
|
||||||
multidepth=False, depthpercut=None,
|
multidepth=False, depthpercut=None,
|
||||||
toolchange=False, toolchangez=1.0, toolchangexy="0.0, 0.0", extracut=False,
|
toolchange=False, toolchangez=1.0, toolchangexy="0.0, 0.0", extracut=False,
|
||||||
startz=None, endz=2.0, pp_geometry_name=None, tool_no=1):
|
startz=None, endz=2.0, pp_geometry_name=None, tool_no=1):
|
||||||
|
@ -5603,6 +5604,7 @@ class CNCjob(Geometry):
|
||||||
self.feedrate_rapid = float(feedrate_rapid) if feedrate_rapid else None
|
self.feedrate_rapid = float(feedrate_rapid) if feedrate_rapid else None
|
||||||
|
|
||||||
self.spindlespeed = int(spindlespeed) if spindlespeed else None
|
self.spindlespeed = int(spindlespeed) if spindlespeed else None
|
||||||
|
self.spindledir = spindledir
|
||||||
self.dwell = dwell
|
self.dwell = dwell
|
||||||
self.dwelltime = float(dwelltime) if dwelltime else None
|
self.dwelltime = float(dwelltime) if dwelltime else None
|
||||||
|
|
||||||
|
@ -5767,7 +5769,7 @@ class CNCjob(Geometry):
|
||||||
tooldia=None, offset=0.0, tolerance=0,
|
tooldia=None, offset=0.0, tolerance=0,
|
||||||
z_cut=1.0, z_move=2.0,
|
z_cut=1.0, z_move=2.0,
|
||||||
feedrate=2.0, feedrate_z=2.0, feedrate_rapid=30,
|
feedrate=2.0, feedrate_z=2.0, feedrate_rapid=30,
|
||||||
spindlespeed=None, dwell=False, dwelltime=1.0,
|
spindlespeed=None, spindledir='CW', dwell=False, dwelltime=1.0,
|
||||||
multidepth=False, depthpercut=None,
|
multidepth=False, depthpercut=None,
|
||||||
toolchange=False, toolchangez=1.0, toolchangexy="0.0, 0.0",
|
toolchange=False, toolchangez=1.0, toolchangexy="0.0, 0.0",
|
||||||
extracut=False, startz=None, endz=2.0,
|
extracut=False, startz=None, endz=2.0,
|
||||||
|
@ -5863,29 +5865,21 @@ class CNCjob(Geometry):
|
||||||
self.tooldia = float(tooldia) if tooldia else None
|
self.tooldia = float(tooldia) if tooldia else None
|
||||||
|
|
||||||
self.z_cut = float(z_cut) if z_cut else None
|
self.z_cut = float(z_cut) if z_cut else None
|
||||||
|
|
||||||
self.z_move = float(z_move) if z_move else None
|
self.z_move = float(z_move) if z_move else None
|
||||||
|
|
||||||
self.feedrate = float(feedrate) if feedrate else None
|
self.feedrate = float(feedrate) if feedrate else None
|
||||||
|
|
||||||
self.z_feedrate = float(feedrate_z) if feedrate_z else None
|
self.z_feedrate = float(feedrate_z) if feedrate_z else None
|
||||||
|
|
||||||
self.feedrate_rapid = float(feedrate_rapid) if feedrate_rapid else None
|
self.feedrate_rapid = float(feedrate_rapid) if feedrate_rapid else None
|
||||||
|
|
||||||
self.spindlespeed = int(spindlespeed) if spindlespeed else None
|
self.spindlespeed = int(spindlespeed) if spindlespeed else None
|
||||||
|
self.spindledir = spindledir
|
||||||
self.dwell = dwell
|
self.dwell = dwell
|
||||||
|
|
||||||
self.dwelltime = float(dwelltime) if dwelltime else None
|
self.dwelltime = float(dwelltime) if dwelltime else None
|
||||||
|
|
||||||
self.startz = float(startz) if startz else None
|
self.startz = float(startz) if startz else None
|
||||||
|
|
||||||
self.z_end = float(endz) if endz else None
|
self.z_end = float(endz) if endz else None
|
||||||
|
|
||||||
self.z_depthpercut = float(depthpercut) if depthpercut else None
|
self.z_depthpercut = float(depthpercut) if depthpercut else None
|
||||||
|
|
||||||
self.multidepth = multidepth
|
self.multidepth = multidepth
|
||||||
|
|
||||||
self.z_toolchange = float(toolchangez) if toolchangez else None
|
self.z_toolchange = float(toolchangez) if toolchangez else None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -4628,6 +4628,20 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI):
|
||||||
self.spindlespeed_entry = IntEntry(allow_empty=True)
|
self.spindlespeed_entry = IntEntry(allow_empty=True)
|
||||||
grid2.addWidget(self.spindlespeed_entry, 5, 1)
|
grid2.addWidget(self.spindlespeed_entry, 5, 1)
|
||||||
|
|
||||||
|
# Spindle direction
|
||||||
|
spindle_dir_label = QtWidgets.QLabel(_('Spindle dir.:'))
|
||||||
|
spindle_dir_label.setToolTip(
|
||||||
|
_("This sets the direction that the spindle is rotating.\n"
|
||||||
|
"It can be either:\n"
|
||||||
|
"- CW = clockwise or\n"
|
||||||
|
"- CCW = counter clockwise")
|
||||||
|
)
|
||||||
|
|
||||||
|
self.spindledir_radio = RadioSet([{'label': 'CW', 'value': 'CW'},
|
||||||
|
{'label': 'CCW', 'value': 'CCW'}])
|
||||||
|
grid2.addWidget(spindle_dir_label, 6, 0)
|
||||||
|
grid2.addWidget(self.spindledir_radio, 6, 1)
|
||||||
|
|
||||||
# Dwell
|
# Dwell
|
||||||
dwelllabel = QtWidgets.QLabel(_('Dwell:'))
|
dwelllabel = QtWidgets.QLabel(_('Dwell:'))
|
||||||
dwelllabel.setToolTip(
|
dwelllabel.setToolTip(
|
||||||
|
@ -4640,10 +4654,10 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI):
|
||||||
)
|
)
|
||||||
self.dwell_cb = FCCheckBox()
|
self.dwell_cb = FCCheckBox()
|
||||||
self.dwelltime_entry = FCEntry()
|
self.dwelltime_entry = FCEntry()
|
||||||
grid2.addWidget(dwelllabel, 6, 0)
|
grid2.addWidget(dwelllabel, 7, 0)
|
||||||
grid2.addWidget(self.dwell_cb, 6, 1)
|
grid2.addWidget(self.dwell_cb, 7, 1)
|
||||||
grid2.addWidget(dwelltime, 7, 0)
|
grid2.addWidget(dwelltime, 8, 0)
|
||||||
grid2.addWidget(self.dwelltime_entry, 7, 1)
|
grid2.addWidget(self.dwelltime_entry, 8, 1)
|
||||||
|
|
||||||
self.ois_dwell_exc = OptionalInputSection(self.dwell_cb, [self.dwelltime_entry])
|
self.ois_dwell_exc = OptionalInputSection(self.dwell_cb, [self.dwelltime_entry])
|
||||||
|
|
||||||
|
@ -4653,10 +4667,10 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI):
|
||||||
_("The postprocessor file that dictates\n"
|
_("The postprocessor file that dictates\n"
|
||||||
"gcode output.")
|
"gcode output.")
|
||||||
)
|
)
|
||||||
grid2.addWidget(pp_excellon_label, 8, 0)
|
grid2.addWidget(pp_excellon_label, 9, 0)
|
||||||
self.pp_excellon_name_cb = FCComboBox()
|
self.pp_excellon_name_cb = FCComboBox()
|
||||||
self.pp_excellon_name_cb.setFocusPolicy(Qt.StrongFocus)
|
self.pp_excellon_name_cb.setFocusPolicy(Qt.StrongFocus)
|
||||||
grid2.addWidget(self.pp_excellon_name_cb, 8, 1)
|
grid2.addWidget(self.pp_excellon_name_cb, 9, 1)
|
||||||
|
|
||||||
|
|
||||||
#### Choose what to use for Gcode creation: Drills, Slots or Both
|
#### Choose what to use for Gcode creation: Drills, Slots or Both
|
||||||
|
@ -4670,8 +4684,8 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI):
|
||||||
self.excellon_gcode_type_radio = RadioSet([{'label': 'Drills', 'value': 'drills'},
|
self.excellon_gcode_type_radio = RadioSet([{'label': 'Drills', 'value': 'drills'},
|
||||||
{'label': 'Slots', 'value': 'slots'},
|
{'label': 'Slots', 'value': 'slots'},
|
||||||
{'label': 'Both', 'value': 'both'}])
|
{'label': 'Both', 'value': 'both'}])
|
||||||
grid2.addWidget(excellon_gcode_type_label, 9, 0)
|
grid2.addWidget(excellon_gcode_type_label, 10, 0)
|
||||||
grid2.addWidget(self.excellon_gcode_type_radio, 9, 1)
|
grid2.addWidget(self.excellon_gcode_type_radio, 10, 1)
|
||||||
|
|
||||||
# until I decide to implement this feature those remain disabled
|
# until I decide to implement this feature those remain disabled
|
||||||
excellon_gcode_type_label.hide()
|
excellon_gcode_type_label.hide()
|
||||||
|
@ -5121,6 +5135,20 @@ class GeometryOptPrefGroupUI(OptionsGroupUI):
|
||||||
self.cncspindlespeed_entry = IntEntry(allow_empty=True)
|
self.cncspindlespeed_entry = IntEntry(allow_empty=True)
|
||||||
grid1.addWidget(self.cncspindlespeed_entry, 8, 1)
|
grid1.addWidget(self.cncspindlespeed_entry, 8, 1)
|
||||||
|
|
||||||
|
# Spindle direction
|
||||||
|
spindle_dir_label = QtWidgets.QLabel(_('Spindle dir.:'))
|
||||||
|
spindle_dir_label.setToolTip(
|
||||||
|
_("This sets the direction that the spindle is rotating.\n"
|
||||||
|
"It can be either:\n"
|
||||||
|
"- CW = clockwise or\n"
|
||||||
|
"- CCW = counter clockwise")
|
||||||
|
)
|
||||||
|
|
||||||
|
self.spindledir_radio = RadioSet([{'label': 'CW', 'value': 'CW'},
|
||||||
|
{'label': 'CCW', 'value': 'CCW'}])
|
||||||
|
grid1.addWidget(spindle_dir_label, 9, 0)
|
||||||
|
grid1.addWidget(self.spindledir_radio, 9, 1)
|
||||||
|
|
||||||
# Dwell
|
# Dwell
|
||||||
self.dwell_cb = FCCheckBox(label=_('Dwell:'))
|
self.dwell_cb = FCCheckBox(label=_('Dwell:'))
|
||||||
self.dwell_cb.setToolTip(
|
self.dwell_cb.setToolTip(
|
||||||
|
@ -5132,9 +5160,9 @@ class GeometryOptPrefGroupUI(OptionsGroupUI):
|
||||||
_("Number of milliseconds for spindle to dwell.")
|
_("Number of milliseconds for spindle to dwell.")
|
||||||
)
|
)
|
||||||
self.dwelltime_entry = FCEntry()
|
self.dwelltime_entry = FCEntry()
|
||||||
grid1.addWidget(self.dwell_cb, 9, 0)
|
grid1.addWidget(self.dwell_cb, 10, 0)
|
||||||
grid1.addWidget(dwelltime, 10, 0)
|
grid1.addWidget(dwelltime, 11, 0)
|
||||||
grid1.addWidget(self.dwelltime_entry, 10, 1)
|
grid1.addWidget(self.dwelltime_entry, 11, 1)
|
||||||
|
|
||||||
self.ois_dwell = OptionalInputSection(self.dwell_cb, [self.dwelltime_entry])
|
self.ois_dwell = OptionalInputSection(self.dwell_cb, [self.dwelltime_entry])
|
||||||
|
|
||||||
|
@ -5144,10 +5172,10 @@ class GeometryOptPrefGroupUI(OptionsGroupUI):
|
||||||
_("The postprocessor file that dictates\n"
|
_("The postprocessor file that dictates\n"
|
||||||
"Machine Code output.")
|
"Machine Code output.")
|
||||||
)
|
)
|
||||||
grid1.addWidget(pp_label, 11, 0)
|
grid1.addWidget(pp_label, 12, 0)
|
||||||
self.pp_geometry_name_cb = FCComboBox()
|
self.pp_geometry_name_cb = FCComboBox()
|
||||||
self.pp_geometry_name_cb.setFocusPolicy(Qt.StrongFocus)
|
self.pp_geometry_name_cb.setFocusPolicy(Qt.StrongFocus)
|
||||||
grid1.addWidget(self.pp_geometry_name_cb, 11, 1)
|
grid1.addWidget(self.pp_geometry_name_cb, 12, 1)
|
||||||
|
|
||||||
self.layout.addStretch()
|
self.layout.addStretch()
|
||||||
|
|
||||||
|
|
|
@ -157,10 +157,11 @@ M6
|
||||||
return 'G01 F' + str(self.feedrate_format %(p.fr_decimals, p.z_feedrate))
|
return 'G01 F' + str(self.feedrate_format %(p.fr_decimals, p.z_feedrate))
|
||||||
|
|
||||||
def spindle_code(self, p):
|
def spindle_code(self, p):
|
||||||
|
sdir = {'CW': 'M03', 'CCW': 'M04'}[p.spindledir]
|
||||||
if p.spindlespeed:
|
if p.spindlespeed:
|
||||||
return 'M03 S' + str(p.spindlespeed)
|
return '%s S%s' % (sdir, str(p.spindlespeed))
|
||||||
else:
|
else:
|
||||||
return 'M03'
|
return sdir
|
||||||
|
|
||||||
def dwell_code(self, p):
|
def dwell_code(self, p):
|
||||||
if p.dwelltime:
|
if p.dwelltime:
|
||||||
|
|
|
@ -260,10 +260,11 @@ M0
|
||||||
return 'G01 F' + str(self.feedrate_format %(p.fr_decimals, p.z_feedrate))
|
return 'G01 F' + str(self.feedrate_format %(p.fr_decimals, p.z_feedrate))
|
||||||
|
|
||||||
def spindle_code(self, p):
|
def spindle_code(self, p):
|
||||||
|
sdir = {'CW': 'M03', 'CCW': 'M04'}[p.spindledir]
|
||||||
if p.spindlespeed:
|
if p.spindlespeed:
|
||||||
return 'M03 S' + str(p.spindlespeed)
|
return '%s S%s' % (sdir, str(p.spindlespeed))
|
||||||
else:
|
else:
|
||||||
return 'M03'
|
return sdir
|
||||||
|
|
||||||
def dwell_code(self, p):
|
def dwell_code(self, p):
|
||||||
if p.dwelltime:
|
if p.dwelltime:
|
||||||
|
|
|
@ -220,11 +220,12 @@ M0
|
||||||
def z_feedrate_code(self, p):
|
def z_feedrate_code(self, p):
|
||||||
return 'G01 F' + str(self.feedrate_format %(p.fr_decimals, p.z_feedrate))
|
return 'G01 F' + str(self.feedrate_format %(p.fr_decimals, p.z_feedrate))
|
||||||
|
|
||||||
def spindle_code(self,p):
|
def spindle_code(self, p):
|
||||||
|
sdir = {'CW': 'M03', 'CCW': 'M04'}[p.spindledir]
|
||||||
if p.spindlespeed:
|
if p.spindlespeed:
|
||||||
return 'M03 S' + str(p.spindlespeed)
|
return '%s S%s' % (sdir, str(p.spindlespeed))
|
||||||
else:
|
else:
|
||||||
return 'M03'
|
return sdir
|
||||||
|
|
||||||
def dwell_code(self, p):
|
def dwell_code(self, p):
|
||||||
if p.dwelltime:
|
if p.dwelltime:
|
||||||
|
|
|
@ -192,10 +192,11 @@ M0""".format(z_toolchange=self.coordinate_format%(p.coords_decimals, z_toolchang
|
||||||
return 'G01 F' + str(self.feedrate_format %(p.fr_decimals, p.z_feedrate))
|
return 'G01 F' + str(self.feedrate_format %(p.fr_decimals, p.z_feedrate))
|
||||||
|
|
||||||
def spindle_code(self, p):
|
def spindle_code(self, p):
|
||||||
|
sdir = {'CW': 'M03', 'CCW': 'M04'}[p.spindledir]
|
||||||
if p.spindlespeed:
|
if p.spindlespeed:
|
||||||
return 'M03 S' + str(p.spindlespeed)
|
return '%s S%s' % (sdir, str(p.spindlespeed))
|
||||||
else:
|
else:
|
||||||
return 'M03'
|
return sdir
|
||||||
|
|
||||||
def dwell_code(self, p):
|
def dwell_code(self, p):
|
||||||
if p.dwelltime:
|
if p.dwelltime:
|
||||||
|
|
|
@ -191,11 +191,12 @@ M0""".format(z_toolchange=self.coordinate_format%(p.coords_decimals, z_toolchang
|
||||||
def z_feedrate_code(self, p):
|
def z_feedrate_code(self, p):
|
||||||
return 'G01 F' + str(self.feedrate_format %(p.fr_decimals, p.z_feedrate))
|
return 'G01 F' + str(self.feedrate_format %(p.fr_decimals, p.z_feedrate))
|
||||||
|
|
||||||
def spindle_code(self,p):
|
def spindle_code(self, p):
|
||||||
|
sdir = {'CW': 'M03', 'CCW': 'M04'}[p.spindledir]
|
||||||
if p.spindlespeed:
|
if p.spindlespeed:
|
||||||
return 'M03 S%d' % p.spindlespeed
|
return '%s S%s' % (sdir, str(p.spindlespeed))
|
||||||
else:
|
else:
|
||||||
return 'M03'
|
return sdir
|
||||||
|
|
||||||
def dwell_code(self, p):
|
def dwell_code(self, p):
|
||||||
if p.dwelltime:
|
if p.dwelltime:
|
||||||
|
|
|
@ -90,7 +90,11 @@ class grbl_laser(FlatCAMPostProc):
|
||||||
return 'G01 F' + str(self.feedrate_format %(p.fr_decimals, p.z_feedrate))
|
return 'G01 F' + str(self.feedrate_format %(p.fr_decimals, p.z_feedrate))
|
||||||
|
|
||||||
def spindle_code(self, p):
|
def spindle_code(self, p):
|
||||||
return ''
|
sdir = {'CW': 'M03', 'CCW': 'M04'}[p.spindledir]
|
||||||
|
if p.spindlespeed:
|
||||||
|
return '%s S%s' % (sdir, str(p.spindlespeed))
|
||||||
|
else:
|
||||||
|
return sdir
|
||||||
|
|
||||||
def dwell_code(self, p):
|
def dwell_code(self, p):
|
||||||
return ''
|
return ''
|
||||||
|
|
|
@ -193,10 +193,11 @@ M0""".format(x_toolchange=self.coordinate_format%(p.coords_decimals, x_toolchang
|
||||||
return 'G01 F' + str(self.feedrate_format %(p.fr_decimals, p.z_feedrate))
|
return 'G01 F' + str(self.feedrate_format %(p.fr_decimals, p.z_feedrate))
|
||||||
|
|
||||||
def spindle_code(self, p):
|
def spindle_code(self, p):
|
||||||
|
sdir = {'CW': 'M03', 'CCW': 'M04'}[p.spindledir]
|
||||||
if p.spindlespeed:
|
if p.spindlespeed:
|
||||||
return 'M03 S' + str(p.spindlespeed)
|
return '%s S%s' % (sdir, str(p.spindlespeed))
|
||||||
else:
|
else:
|
||||||
return 'M03'
|
return sdir
|
||||||
|
|
||||||
def dwell_code(self, p):
|
def dwell_code(self, p):
|
||||||
if p.dwelltime:
|
if p.dwelltime:
|
||||||
|
|
|
@ -198,11 +198,12 @@ M0""".format(z_toolchange=self.coordinate_format%(p.coords_decimals, z_toolchang
|
||||||
def feedrate_rapid_code(self, p):
|
def feedrate_rapid_code(self, p):
|
||||||
return 'F' + self.feedrate_rapid_format % (p.fr_decimals, p.feedrate_rapid)
|
return 'F' + self.feedrate_rapid_format % (p.fr_decimals, p.feedrate_rapid)
|
||||||
|
|
||||||
def spindle_code(self,p):
|
def spindle_code(self, p):
|
||||||
|
sdir = {'CW': 'M3', 'CCW': 'M4'}[p.spindledir]
|
||||||
if p.spindlespeed:
|
if p.spindlespeed:
|
||||||
return 'M3 S%d' % p.spindlespeed
|
return '%s S%s' % (sdir, str(p.spindlespeed))
|
||||||
else:
|
else:
|
||||||
return 'M3'
|
return sdir
|
||||||
|
|
||||||
def dwell_code(self, p):
|
def dwell_code(self, p):
|
||||||
if p.dwelltime:
|
if p.dwelltime:
|
||||||
|
|
Loading…
Reference in New Issue