From 17f29984e5df2e15fefc0f944070846295b2e9e8 Mon Sep 17 00:00:00 2001 From: make-ing Date: Tue, 16 Feb 2016 12:53:20 +0100 Subject: [PATCH 1/9] fixed image bug with missing {} --- src/octoprint/plugins/svgtogcode/static/js/matrix_oven.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/octoprint/plugins/svgtogcode/static/js/matrix_oven.js b/src/octoprint/plugins/svgtogcode/static/js/matrix_oven.js index dce7235a..478c638e 100644 --- a/src/octoprint/plugins/svgtogcode/static/js/matrix_oven.js +++ b/src/octoprint/plugins/svgtogcode/static/js/matrix_oven.js @@ -70,12 +70,14 @@ Snap.plugin(function (Snap, Element, Paper, global) { // Validity checks from http://www.w3.org/TR/SVG/shapes.html#RectElement: // If 'x' and 'y' are not specified, then set both to 0. // CorelDraw is creating that sometimes - if (!isFinite(x)) + if (!isFinite(x)) { console.log('No attribute "x" in image tag. Assuming 0.') x = 0; - if (!isFinite(y)) + } + if (!isFinite(y)) { console.log('No attribute "y" in image tag. Assuming 0.') y = 0; + } var transform = elem.transform(); var matrix = transform['totalMatrix']; var transformedX = matrix.x(x, y); From 94effaeda7b8db8c5256c65faf96f82fd074b2d1 Mon Sep 17 00:00:00 2001 From: make-ing Date: Tue, 16 Feb 2016 13:54:39 +0100 Subject: [PATCH 2/9] fixed wrong positioning if only x2 value was to out of bounds maybe also need to be tested for y direction --- src/octoprint/plugins/svgtogcode/static/js/working_area.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/octoprint/plugins/svgtogcode/static/js/working_area.js b/src/octoprint/plugins/svgtogcode/static/js/working_area.js index 24f4d498..108b3e4e 100644 --- a/src/octoprint/plugins/svgtogcode/static/js/working_area.js +++ b/src/octoprint/plugins/svgtogcode/static/js/working_area.js @@ -345,7 +345,7 @@ $(function(){ dx = -svgBB.x + 0.01; outside = true; } else if(svgBB.x2 > waBB.x2){ - dx = -svgBB.x2 + waBB.x2 - 0.01; + dx = -svgBB.x + 0.01; outside = true; } if(svgBB.y < waBB.y){ From 60fb13faa2364bbd818a5e26f9bd160a2a4781ec Mon Sep 17 00:00:00 2001 From: make-ing Date: Wed, 17 Feb 2016 16:17:45 +0100 Subject: [PATCH 3/9] fixed bug with embedded images in svg's --- src/octoprint/plugins/svgtogcode/static/js/working_area.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/octoprint/plugins/svgtogcode/static/js/working_area.js b/src/octoprint/plugins/svgtogcode/static/js/working_area.js index 108b3e4e..d0c44888 100644 --- a/src/octoprint/plugins/svgtogcode/static/js/working_area.js +++ b/src/octoprint/plugins/svgtogcode/static/js/working_area.js @@ -758,7 +758,7 @@ $(function(){ self._embedAllImages = function(svg, callback){ var allImages = svg.selectAll('image'); - var linkedImages = allImages.items.filter(function(i){ return !i.attr('href').startsWith('data:') }); + var linkedImages = allImages.items.filter(function(i){ return !i.attr('xlink:href').startsWith('data:') }); if(linkedImages.length > 0){ var callbackCounter = linkedImages.length; for (var i = 0; i < linkedImages.length; i++) { From 327ac869ced6321037516216831c8dcbe254ff9a Mon Sep 17 00:00:00 2001 From: make-ing Date: Mon, 22 Feb 2016 10:37:20 +0100 Subject: [PATCH 4/9] added support for embedded images in svg via "href" and "xlink:href" --- src/octoprint/plugins/svgtogcode/static/js/working_area.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/octoprint/plugins/svgtogcode/static/js/working_area.js b/src/octoprint/plugins/svgtogcode/static/js/working_area.js index 108b3e4e..035a6081 100644 --- a/src/octoprint/plugins/svgtogcode/static/js/working_area.js +++ b/src/octoprint/plugins/svgtogcode/static/js/working_area.js @@ -758,7 +758,12 @@ $(function(){ self._embedAllImages = function(svg, callback){ var allImages = svg.selectAll('image'); - var linkedImages = allImages.items.filter(function(i){ return !i.attr('href').startsWith('data:') }); + var linkedImages = allImages.items.filter(function(i){ + if(i.attr('xlink:href') != null) { + return !i.attr('xlink:href').startsWith('data:'); + } else if(i.attr('href') != null) { + return !i.attr('href').startsWith('data:'); + } if(linkedImages.length > 0){ var callbackCounter = linkedImages.length; for (var i = 0; i < linkedImages.length; i++) { From e54364a45cb6139ceec2ae819b63d8b093925640 Mon Sep 17 00:00:00 2001 From: make-ing Date: Mon, 22 Feb 2016 10:54:29 +0100 Subject: [PATCH 5/9] parenthesis bug fixed --- src/octoprint/plugins/svgtogcode/static/js/working_area.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/octoprint/plugins/svgtogcode/static/js/working_area.js b/src/octoprint/plugins/svgtogcode/static/js/working_area.js index 035a6081..4b35b252 100644 --- a/src/octoprint/plugins/svgtogcode/static/js/working_area.js +++ b/src/octoprint/plugins/svgtogcode/static/js/working_area.js @@ -763,7 +763,7 @@ $(function(){ return !i.attr('xlink:href').startsWith('data:'); } else if(i.attr('href') != null) { return !i.attr('href').startsWith('data:'); - } + }}); if(linkedImages.length > 0){ var callbackCounter = linkedImages.length; for (var i = 0; i < linkedImages.length; i++) { From 3db371fbb08d77175324f252f5753e1ab94c98b4 Mon Sep 17 00:00:00 2001 From: make-ing Date: Mon, 14 Mar 2016 15:15:13 +0100 Subject: [PATCH 6/9] added feedrate and intesity reset at beginning of each laser job. --- src/octoprint/util/comm_acc2.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/octoprint/util/comm_acc2.py b/src/octoprint/util/comm_acc2.py index 39a0318a..a014b542 100644 --- a/src/octoprint/util/comm_acc2.py +++ b/src/octoprint/util/comm_acc2.py @@ -824,6 +824,10 @@ class MachineCom(object): if self._currentFile is None: raise ValueError("No file selected for printing") + # reset feedrate and intesity factor in case they where changed in a previous run + self._feedrate_factor = 1 + self._intensity_factor = 1 + try: # ensure fan is on whatever gcode follows. self.sendCommand("M08") From bf4c9c21058f9705c4152dec7c86b47965d6933a Mon Sep 17 00:00:00 2001 From: make-ing Date: Tue, 15 Mar 2016 17:11:54 +0100 Subject: [PATCH 7/9] fixed bug within placeIMG where the picture was to high to fit into the workspace area. --- .../svgtogcode/static/js/working_area.js | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/octoprint/plugins/svgtogcode/static/js/working_area.js b/src/octoprint/plugins/svgtogcode/static/js/working_area.js index 4b35b252..6fc20b1c 100644 --- a/src/octoprint/plugins/svgtogcode/static/js/working_area.js +++ b/src/octoprint/plugins/svgtogcode/static/js/working_area.js @@ -390,7 +390,7 @@ $(function(){ }); }; - + self.placeIMG = function (file) { var url = self._getIMGserveUrl(file); var img = new Image(); @@ -426,10 +426,16 @@ $(function(){ }; self.getUsefulDimensions = function(wpx, hpx){ - var maxWidthMM = wpx * 0.25; // TODO parametrize - var aspectRatio = wpx / hpx; - var destWidthMM = Math.min(self.workingAreaWidthMM() - 2, maxWidthMM); - var destHeightMM = destWidthMM / aspectRatio; + var maxWidthMM = wpx * 0.25; // TODO parametrize + var maxHeightMM = hpx * 0.25; // TODO parametrize + var aspectRatio = wpx / hpx; + var destWidthMM = Math.min(self.workingAreaWidthMM() - 2, maxWidthMM); + var destHeightMM = Math.min(self.workingAreaHeightMM() - 2, maxHeightMM); + if ((destWidthMM / aspectRatio) > destHeightMM) { + destWidthMM = destHeightMM * aspectRatio; + } else { + destHeightMM = destWidthMM / aspectRatio; + } var destWidthPT = self.mm2svgUnits(destWidthMM); var destHeightPT = self.mm2svgUnits(destHeightMM); return [destWidthPT, destHeightPT]; @@ -632,13 +638,13 @@ $(function(){ var userContent = snap.select("#userContent").clone(); compSvg.append(userContent); - + self.renderInfill(compSvg, fillAreas, wMM, hMM, 10, function(svgWithRenderedInfill){ callback( self._wrapInSvgAndScale(svgWithRenderedInfill)); $('#compSvg').remove(); }); }; - + self._wrapInSvgAndScale = function(content){ var svgStr = content.innerSVG(); if(svgStr !== ''){ @@ -721,7 +727,7 @@ $(function(){ self.clear_gcode = function(){ snap.select('#gCodePreview').clear(); }; - + self.onStartup = function(){ self.state.workingArea = self; self.files.workingArea = self; @@ -754,9 +760,9 @@ $(function(){ } }); }; - + self._embedAllImages = function(svg, callback){ - + var allImages = svg.selectAll('image'); var linkedImages = allImages.items.filter(function(i){ if(i.attr('xlink:href') != null) { @@ -795,7 +801,7 @@ $(function(){ var fillings = userContent.removeUnfilled(fillAreas); for (var i = 0; i < fillings.length; i++) { var item = fillings[i]; - + if (item.type === 'image') { // remove filter effects on images for proper rendering var style = item.attr('style'); From d7b5fae61404e505f2e67070fd15a48b3d44168f Mon Sep 17 00:00:00 2001 From: make-ing Date: Wed, 16 Mar 2016 14:16:15 +0100 Subject: [PATCH 8/9] fixed wrong feedrate and intensity slider bug. On every new print start the sliders are set back to 100%. --- .../static/js/app/viewmodels/printerstate.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/octoprint/static/js/app/viewmodels/printerstate.js b/src/octoprint/static/js/app/viewmodels/printerstate.js index b6b8f6d5..d03312d2 100644 --- a/src/octoprint/static/js/app/viewmodels/printerstate.js +++ b/src/octoprint/static/js/app/viewmodels/printerstate.js @@ -216,6 +216,7 @@ $(function() { $("#confirmation_dialog .confirmation_dialog_acknowledge").click( function (e) { if (typeof callback === 'function') { + self.onEventPrintDone(); callback(e); $("#confirmation_dialog").modal("hide"); $("#confirmation_dialog .confirmation_dialog_message").html(''); @@ -285,14 +286,14 @@ $(function() { self.onEventRealTimeState = function(payload){ self.currentPos({x: payload.wx, y: payload.wy}); }; - + self.intensityOverride.subscribe(function(factor){ self._overrideCommand("/intensity "+factor); }); self.feedrateOverride.subscribe(function(factor){ self._overrideCommand("/feedrate "+factor); }); - + self._overrideCommand = function(command, callback) { $.ajax({ url: API_BASEURL + "printer/command", @@ -307,7 +308,7 @@ $(function() { } }); }; - + self._configureOverrideSliders = function() { self.intensityOverrideSlider = $("#intensity_override_slider").slider({ step: 1, @@ -318,7 +319,7 @@ $(function() { }).on("slideStop", function(ev){ self.intensityOverride(ev.value); }); - + self.feedrateOverrideSlider = $("#feedrate_override_slider").slider({ step: 1, min: 10, @@ -330,14 +331,14 @@ $(function() { }); }; - + self.onEventPrintDone = function(){ self.feedrateOverrideSlider.slider('setValue', 100); self.intensityOverrideSlider.slider('setValue', 100); self.intensityOverride(100); self.feedrateOverride(100); }; - + self.onStartup = function() { self._configureOverrideSliders(); }; From e5c600e9729bf14202625e8360421d70b4668537 Mon Sep 17 00:00:00 2001 From: make-ing Date: Thu, 17 Mar 2016 09:59:49 +0100 Subject: [PATCH 9/9] moved reset override slider functionality to separate method. --- .../static/js/app/viewmodels/printerstate.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/octoprint/static/js/app/viewmodels/printerstate.js b/src/octoprint/static/js/app/viewmodels/printerstate.js index d03312d2..e1be9a0a 100644 --- a/src/octoprint/static/js/app/viewmodels/printerstate.js +++ b/src/octoprint/static/js/app/viewmodels/printerstate.js @@ -216,7 +216,7 @@ $(function() { $("#confirmation_dialog .confirmation_dialog_acknowledge").click( function (e) { if (typeof callback === 'function') { - self.onEventPrintDone(); + self.resetOverrideSlider(); callback(e); $("#confirmation_dialog").modal("hide"); $("#confirmation_dialog .confirmation_dialog_message").html(''); @@ -333,15 +333,19 @@ $(function() { }; self.onEventPrintDone = function(){ - self.feedrateOverrideSlider.slider('setValue', 100); - self.intensityOverrideSlider.slider('setValue', 100); - self.intensityOverride(100); - self.feedrateOverride(100); + self.resetOverrideSlider(); }; self.onStartup = function() { self._configureOverrideSliders(); }; + + self.resetOverrideSlider = function() { + self.feedrateOverrideSlider.slider('setValue', 100); + self.intensityOverrideSlider.slider('setValue', 100); + self.intensityOverride(100); + self.feedrateOverride(100); + } } OCTOPRINT_VIEWMODELS.push([