From c097815a154f518b8b761efdbf2eff7ae3a03572 Mon Sep 17 00:00:00 2001 From: Teja Date: Thu, 8 Jan 2015 20:16:36 +0100 Subject: [PATCH] slicing works again. slider for jog distance. footer links open in new tab --- src/octoprint/plugins/svgtogcode/__init__.py | 19 +++++--- .../plugins/svgtogcode/static/js/convert.js | 44 +++++++++++++++++-- .../svgtogcode/static/js/svg2gcodeVM.js | 12 ----- .../templates/override_index.jinja2 | 16 +++---- .../svgtogcode/templates/svgtogcode.jinja2 | 7 ++- .../svgtogcode_settings_dialog.jinja2 | 2 +- src/octoprint/printer.py | 2 +- src/octoprint/static/js/app/main.js | 5 ++- .../static/js/app/viewmodels/control.js | 29 +++++++++++- 9 files changed, 98 insertions(+), 38 deletions(-) delete mode 100644 src/octoprint/plugins/svgtogcode/static/js/svg2gcodeVM.js diff --git a/src/octoprint/plugins/svgtogcode/__init__.py b/src/octoprint/plugins/svgtogcode/__init__.py index cb886114..e407bdae 100644 --- a/src/octoprint/plugins/svgtogcode/__init__.py +++ b/src/octoprint/plugins/svgtogcode/__init__.py @@ -9,6 +9,8 @@ import logging import logging.handlers import os import flask +import socket + import octoprint.plugin import octoprint.util @@ -247,17 +249,24 @@ class SvgToGcodePlugin(octoprint.plugin.SlicerPlugin, engine_settings = self._convert_to_engine(profile_path) + from os.path import expanduser + homedir = expanduser("~") + executable = homedir + "/mrbeam-inkscape-ext/mrbeam.py" + log_path = homedir + "/.octoprint/logs/svgtogcode.log" + + # debugging stuff. TODO remove + hostname = socket.gethostname() + if("Bucanero" in hostname): + executable = homedir + "/workspace/mrbeam-inkscape-ext/mrbeam.py" + # executable = s.get(["svgtogcode_engine"]) - # executable = "/Users/philipp/Documents/dev/MrBeam/mrbeam-inkscape-ext/standalone.py" - executable = "/home/pi/mrbeam-inkscape-ext/standalone.py" - log_path = "/home/pi/svgtogcode.log" - # log_path = "/Users/philipp/svgtogcode.log" + if not executable: return False, "Path to SVG converter is not configured " dest_dir, dest_file = os.path.split(machinecode_path) working_dir, _ = os.path.split(executable) - args = ['"%s"' % executable, '-f "%s"' % dest_file, '-d "%s"' % dest_dir] + args = ['python "%s"' % executable, '-f "%s"' % dest_file, '-d "%s"' % dest_dir] for k, v in engine_settings.items(): args += ['"%s=%s"' % (k, str(v))] args += ['--create-log=false', '"--log-filename=%s"' % log_path,'"%s"' % model_path] diff --git a/src/octoprint/plugins/svgtogcode/static/js/convert.js b/src/octoprint/plugins/svgtogcode/static/js/convert.js index 12e440cb..29092523 100644 --- a/src/octoprint/plugins/svgtogcode/static/js/convert.js +++ b/src/octoprint/plugins/svgtogcode/static/js/convert.js @@ -1,4 +1,4 @@ -function VectorConversionViewModel(loginStateViewModel) { +function VectorConversionViewModel(loginStateViewModel, settingsViewModel) { var self = this; self.loginState = loginStateViewModel; @@ -11,10 +11,10 @@ function VectorConversionViewModel(loginStateViewModel) { self.defaultProfile = undefined; self.gcodeFilename = ko.observable(); - self.laserIntensity = ko.observable(); - self.laserSpeed = ko.observable(); + self.laserIntensity = ko.observable("800"); // TODO fetch from settings + self.laserSpeed = ko.observable("300"); - self.title = ko.observable(); + self.title = ko.observable(undefined); self.slicer = ko.observable(); self.slicers = ko.observableArray(); self.profile = ko.observable(); @@ -55,6 +55,7 @@ function VectorConversionViewModel(loginStateViewModel) { }; self.fromResponse = function(data) { + console.log("convert.js", data); self.data = data; var selectedSlicer = undefined; @@ -154,4 +155,39 @@ function VectorConversionViewModel(loginStateViewModel) { self.onStartup = function() { self.requestData(); }; + + self._configureIntensitySlider = function() { + self.layerSlider = $("#svgtogcode_intensity").slider({ + id: "svgtogcode_intensity_slider", + reversed: false, + selection: "after", + orientation: "horizontal", + min: 1, + max: 1000, + step: 1, + value: 500, + enabled: true, + formatter: function(value) { return "" + (value/10) +"%"; } + }).on("slideStop", self.changeIntensity); + }; + + self._configureFeedrateSlider = function() { + self.layerSlider = $("#svgtogcode_feedrate").slider({ + id: "svgtogcode_feedrate_slider", + reversed: false, + selection: "after", + orientation: "horizontal", + min: 20, + max: 3000, + step: 10, + value: 300, + enabled: true, + formatter: function(value) { return "" + (value) +"mm/min"; } + }).on("slideStop", self.changeFeedrate); + }; + + self.init = function(){ + self._configureIntensitySlider(); + self._configureFeedrateSlider(); + }; } \ No newline at end of file diff --git a/src/octoprint/plugins/svgtogcode/static/js/svg2gcodeVM.js b/src/octoprint/plugins/svgtogcode/static/js/svg2gcodeVM.js deleted file mode 100644 index c7fbe8d3..00000000 --- a/src/octoprint/plugins/svgtogcode/static/js/svg2gcodeVM.js +++ /dev/null @@ -1,12 +0,0 @@ -function Svg2GcodeViewModel(settingsViewModel) { - var self = this; - - self.settings = settingsViewModel; - - self.log = []; - - self.command = ko.observable(undefined); - -} - - diff --git a/src/octoprint/plugins/svgtogcode/templates/override_index.jinja2 b/src/octoprint/plugins/svgtogcode/templates/override_index.jinja2 index 9f468b7f..a8e9d681 100644 --- a/src/octoprint/plugins/svgtogcode/templates/override_index.jinja2 +++ b/src/octoprint/plugins/svgtogcode/templates/override_index.jinja2 @@ -177,15 +177,15 @@ var UI_API_KEY = "{{ uiApiKey }}"; {% endif %}
- Jog distance + Jog distance: 10mm
- -
+ +
@@ -425,10 +425,10 @@ var UI_API_KEY = "{{ uiApiKey }}";
  • {{ _('Version') }}: {{ display_version }}
  • diff --git a/src/octoprint/plugins/svgtogcode/templates/svgtogcode.jinja2 b/src/octoprint/plugins/svgtogcode/templates/svgtogcode.jinja2 index f999fd32..3d3fc123 100644 --- a/src/octoprint/plugins/svgtogcode/templates/svgtogcode.jinja2 +++ b/src/octoprint/plugins/svgtogcode/templates/svgtogcode.jinja2 @@ -4,14 +4,13 @@

    diff --git a/src/octoprint/plugins/svgtogcode/templates/svgtogcode_settings_dialog.jinja2 b/src/octoprint/plugins/svgtogcode/templates/svgtogcode_settings_dialog.jinja2 index 4b6762af..669690eb 100644 --- a/src/octoprint/plugins/svgtogcode/templates/svgtogcode_settings_dialog.jinja2 +++ b/src/octoprint/plugins/svgtogcode/templates/svgtogcode_settings_dialog.jinja2 @@ -17,7 +17,7 @@
    diff --git a/src/octoprint/printer.py b/src/octoprint/printer.py index 9f5de6af..46ddd745 100644 --- a/src/octoprint/printer.py +++ b/src/octoprint/printer.py @@ -280,7 +280,7 @@ class Printer(): if self._selectedFile is None: return - self._addPositionData(None) + self._addPositionData(None, None) self._setCurrentZ(None) self._comm.startPrint() diff --git a/src/octoprint/static/js/app/main.js b/src/octoprint/static/js/app/main.js index 22820d23..50556c17 100644 --- a/src/octoprint/static/js/app/main.js +++ b/src/octoprint/static/js/app/main.js @@ -68,7 +68,7 @@ $(function() { var controlViewModel = new ControlViewModel(loginStateViewModel, settingsViewModel, printerStateViewModel); var terminalViewModel = new TerminalViewModel(loginStateViewModel, settingsViewModel); var slicingViewModel = new SlicingViewModel(loginStateViewModel); - var vectorConversionViewModel = new VectorConversionViewModel(loginStateViewModel); + var vectorConversionViewModel = new VectorConversionViewModel(loginStateViewModel, settingsViewModel); var gcodeFilesViewModel = new GcodeFilesViewModel(printerStateViewModel, loginStateViewModel, slicingViewModel, vectorConversionViewModel); var gcodeViewModel = new GcodeViewModel(loginStateViewModel, settingsViewModel); var navigationViewModel = new NavigationViewModel(loginStateViewModel, appearanceViewModel, settingsViewModel, usersViewModel); @@ -415,7 +415,8 @@ $(function() { // } // // ko.applyBindings(slicingViewModel, document.getElementById("slicing_configuration_dialog")); -// ko.applyBindings(vectorConversionViewModel, document.getElementById("dialog_vector_graphics_conversion")); + vectorConversionViewModel.init(); + ko.applyBindings(vectorConversionViewModel, document.getElementById("dialog_vector_graphics_conversion")); ko.applyBindings(workingAreaViewModel, document.getElementById("area_preview")); // apply bindings and signal startup diff --git a/src/octoprint/static/js/app/viewmodels/control.js b/src/octoprint/static/js/app/viewmodels/control.js index 31cebda4..75bcdb5e 100644 --- a/src/octoprint/static/js/app/viewmodels/control.js +++ b/src/octoprint/static/js/app/viewmodels/control.js @@ -21,6 +21,7 @@ function ControlViewModel(loginStateViewModel, settingsViewModel, printerStateVi self.isLoading = ko.observable(undefined); self.extrusionAmount = ko.observable(undefined); + self.jogDistanceInMM = ko.observable(undefined) self.controls = ko.observableArray([]); self.tools = ko.observableArray([]); @@ -119,7 +120,8 @@ function ControlViewModel(loginStateViewModel, settingsViewModel, printerStateVi self.sendJogCommand = function(axis, multiplier, distance) { if (typeof distance === "undefined") - distance = $('#jog_distance button.active').data('distance'); +// distance = $('#jog_distance button.active').data('distance'); + distance = self.jogDistanceInMM(); if (self.settings.getPrinterInvertAxis(axis)) { multiplier *= -1; } @@ -268,5 +270,30 @@ function ControlViewModel(loginStateViewModel, settingsViewModel, printerStateVi self.onStartup = function() { self.requestData(); + self._configureJogDistanceSlider(); }; + + self._jogDistanceMapping = [0.1, 1, 5, 10, 50, 100]; + self._configureJogDistanceSlider = function() { + self.layerSlider = $("#jogDistance").slider({ + id: "jogDistanceSlider", + reversed: false, + selection: "after", + orientation: "horizontal", + min: 0, + max: self._jogDistanceMapping.length-1, + step: 1, + value: 3, + enabled: true, + formatter: function(value) { return self._jogDistanceMapping[value] +"mm"; } + }).on("slideStop", self.updateJogDistance); + self.updateJogDistance(); + + }; + + self.updateJogDistance = function(){ + var val = self._jogDistanceMapping[$("#jogDistance").slider('getValue')]; + self.jogDistanceInMM(val); + }; + }