Commit 9e8a234e authored by Lars Kruse's avatar Lars Kruse

added chain function for combining filters of a toolpath

parent fcad5299
......@@ -31,7 +31,6 @@ DEFAULT_HEADER = ("G40 (disable tool radius compensation)",
"G54 (select coordinate system 1)",
"G90 (disable incremental moves)")
PATH_MODES = {"exact_path": 0, "exact_stop": 1, "continuous": 2}
MAX_DIGITS = 12
......
......@@ -2,7 +2,7 @@
"""
$Id$
Copyright 2011 Lars Kruse <devel@sumpfralle.de>
Copyright 2011-2012 Lars Kruse <devel@sumpfralle.de>
This file is part of PyCAM.
......@@ -22,7 +22,9 @@ along with PyCAM. If not, see <http://www.gnu.org/licenses/>.
import pycam.Plugins
import pycam.Gui.ControlsGTK
import pycam.Toolpath.Filters as Filters
from pycam.Toolpath import CORNER_STYLE_EXACT_PATH, CORNER_STYLE_EXACT_STOP, \
CORNER_STYLE_OPTIMIZE_SPEED, CORNER_STYLE_OPTIMIZE_TOLERANCE
class GCodeSafetyHeight(pycam.Plugins.PluginBase):
......@@ -39,12 +41,20 @@ class GCodeSafetyHeight(pycam.Plugins.PluginBase):
self.control)
self.core.register_ui("gcode_general_parameters", "Safety Height",
self.control.get_widget(), weight=20)
self.core.register_chain("toolpath_filters", self.apply_filter)
return True
def teardown(self):
self.core.unregister_chain("toolpath_filters", self.apply_filter)
self.core.unregister_ui("gcode_general_parameters",
self.control.get_widget())
self.core.get("unregister_parameter")("toolpath_processor", "safety_height")
self.core.get("unregister_parameter")("toolpath_processor",
"safety_height")
def apply_filter(self, settings_dict, filters_list):
if "safety_height" in settings_dict:
filters_list.append(Filters.SafetyHeightFilter(
settings_dict["safety_height"]))
#TODO: move to settings for ToolpathOutputDialects
......@@ -68,6 +78,10 @@ class GCodeFilenameExtension(pycam.Plugins.PluginBase):
self.core.get("unregister_parameter")("toolpath_processor",
"filename_extension")
def apply_filter(self, settings_dict, filters_list):
# TODO: implement this after moving to Dialects
pass
class GCodeStepWidth(pycam.Plugins.PluginBase):
......@@ -89,9 +103,11 @@ class GCodeStepWidth(pycam.Plugins.PluginBase):
self.core.get("register_parameter")("toolpath_processor",
"step_width_%s" % key, control)
self.controls.append((key, control))
self.core.register_chain("toolpath_filters", self.apply_filter)
return True
def teardown(self):
self.core.unregister_chain("toolpath_filters", self.apply_filter)
for key, control in self.controls:
self.core.unregister_ui("gcode_step_width", control)
self.core.get("unregister_parameter")("toolpath_processor",
......@@ -99,6 +115,14 @@ class GCodeStepWidth(pycam.Plugins.PluginBase):
self.core.unregister_ui("gcode_general_parameters",
self._table.get_widget())
def apply_filter(self, settings_dict, filters_list):
result = {}
if any([("step_width_%s" % key) in settings_dict
for key in "xyz"]):
full_key = "step_width_%s" % key
result[full_key] = settings_dict.get(full_key, 0.0)
filters_list.append(Filters.StepWidth(**result))
class GCodeSpindle(pycam.Plugins.PluginBase):
......@@ -123,10 +147,12 @@ class GCodeSpindle(pycam.Plugins.PluginBase):
self.spindle_enable.get_widget(), weight=10)
self.core.get("register_parameter")("toolpath_processor",
"spindle_enable", self.spindle_enable)
self.core.register_chain("toolpath_filters", self.apply_filter)
self.update_widgets()
return True
def teardown(self):
self.core.unregister_chain("toolpath_filters", self.apply_filter)
self.core.unregister_ui("gcode_spindle",
self.spindle_delay.get_widget())
self.core.unregister_ui("gcode_spindle",
......@@ -142,6 +168,12 @@ class GCodeSpindle(pycam.Plugins.PluginBase):
widget = self.spindle_delay.get_widget()
widget.set_sensitive(self.spindle_enable.get_value())
def apply_filter(self, settings_dict, filters_list):
if not settings_dict.get("spindle_enable", False):
return
filters_list.append(Filters.TriggerSpindle(
settings_dict.get("spindle_delay", 0)))
class GCodeCornerStyle(pycam.Plugins.PluginBase):
......@@ -165,19 +197,23 @@ class GCodeCornerStyle(pycam.Plugins.PluginBase):
self.core.get("register_parameter")("toolpath_processor",
"naive_tolerance", self.naive_tolerance)
self.path_mode = pycam.Gui.ControlsGTK.InputChoice((
("Exact path mode (G61)", "exact_path"),
("Exact stop mode (G61.1)", "exact_stop"),
("Continuous with maximum speed (G64)", "optimize_speed"),
("Continuous with tolerance (G64 P/Q)", "optimize_tolerance")))
("Exact path mode (G61)", CORNER_STYLE_EXACT_PATH),
("Exact stop mode (G61.1)", CORNER_STYLE_EXACT_STOP),
("Continuous with maximum speed (G64)",
CORNER_STYLE_OPTIMIZE_SPEED),
("Continuous with tolerance (G64 P/Q)",
CORNER_STYLE_OPTIMIZE_TOLERANCE)))
self.path_mode.get_widget().connect("changed", self.update_widgets)
self.core.register_ui("gcode_corner_style", "Path mode",
self.path_mode.get_widget(), weight=10)
self.core.get("register_parameter")("toolpath_processor", "path_mode",
self.path_mode)
self.core.register_chain("toolpath_filters", self.apply_filter)
self.update_widgets()
return True
def teardown(self):
self.core.unregister_chain("toolpath_filters", self.apply_filter)
self.core.unregister_ui("gcode_corner_style",
self.motion_tolerance.get_widget())
self.core.unregister_ui("gcode_corner_style",
......@@ -195,3 +231,10 @@ class GCodeCornerStyle(pycam.Plugins.PluginBase):
for control in controls:
control.get_widget().set_sensitive(enable_tolerances)
def apply_filter(self, settings_dict, filters_list):
param_dict = {}
for name in ("path_mode", "motion_tolerance", "naive_tolerance"):
if name in settings_dict:
param_dict[name] = settings_dict[name]
filers_list.insert(Filters.MachineSetting("corner_style", param_dict))
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment