diff --git a/src/octoprint/plugins/svgtogcode/static/js/convert.js b/src/octoprint/plugins/svgtogcode/static/js/convert.js index 76dacbaa..645858eb 100644 --- a/src/octoprint/plugins/svgtogcode/static/js/convert.js +++ b/src/octoprint/plugins/svgtogcode/static/js/convert.js @@ -42,19 +42,25 @@ $(function(){ // shows conversion dialog and extracts svg first self.show_conversion_dialog = function() { - var intensity = self.settings.settings.plugins.svgtogcode.defaultIntensity(); - var speed = self.settings.settings.plugins.svgtogcode.defaultFeedrate(); - self.laserIntensity(intensity); - self.laserSpeed(speed); - self.svg = self.workingArea.getCompositionSVG(); self.gcodeFilesToAppend = self.workingArea.getPlacedGcodes(); - - // TODO: js svg conversion - self.title(gettext("Converting")); var gcodeFile = self.create_gcode_filename(self.workingArea.placedDesigns()); self.gcodeFilename(gcodeFile); - $("#dialog_vector_graphics_conversion").modal("show"); // calls self.convert afterwards + + if(self.svg !== undefined){ + var intensity = self.settings.settings.plugins.svgtogcode.defaultIntensity(); + var speed = self.settings.settings.plugins.svgtogcode.defaultFeedrate(); + self.laserIntensity(intensity); + self.laserSpeed(speed); + + + // TODO: js svg conversion + self.title(gettext("Converting")); + $("#dialog_vector_graphics_conversion").modal("show"); // calls self.convert() afterwards + } else { + // just gcodes were placed. Start lasering right away. + self.convert(); + } }; self.create_gcode_filename = function(placedDesigns){ @@ -136,7 +142,7 @@ $(function(){ }); }); - if (selectedSlicer != undefined) { + if (selectedSlicer !== undefined) { self.slicer(selectedSlicer); } @@ -144,10 +150,10 @@ $(function(){ }; self.profilesForSlicer = function(key) { - if (key == undefined) { + if (key === undefined) { key = self.slicer(); } - if (key == undefined || !self.data.hasOwnProperty(key)) { + if (key === undefined || !self.data.hasOwnProperty(key)) { return; } var slicer = self.data[key]; @@ -156,7 +162,7 @@ $(function(){ self.profiles.removeAll(); _.each(_.values(slicer.profiles), function(profile) { var name = profile.displayName; - if (name == undefined) { + if (name === undefined) { name = profile.key; } @@ -167,10 +173,10 @@ $(function(){ self.profiles.push({ key: profile.key, name: name - }) + }); }); - if (selectedProfile != undefined) { + if (selectedProfile !== undefined) { self.profile(selectedProfile); } @@ -195,6 +201,8 @@ $(function(){ if(self.svg !== undefined){ data.svg = self.svg; + } else { + data.svg = ''; } if(self.gcodeFilesToAppend !== undefined){ data.gcodeFilesToAppend = self.gcodeFilesToAppend; @@ -211,6 +219,7 @@ $(function(){ $("#dialog_vector_graphics_conversion").modal("hide"); self.gcodeFilename(undefined); + self.svg = undefined; //self.slicer(self.defaultSlicer); //self.profile(self.defaultProfile); }; diff --git a/src/octoprint/plugins/svgtogcode/static/js/working_area.js b/src/octoprint/plugins/svgtogcode/static/js/working_area.js index 78cefe48..e138a34d 100644 --- a/src/octoprint/plugins/svgtogcode/static/js/working_area.js +++ b/src/octoprint/plugins/svgtogcode/static/js/working_area.js @@ -100,6 +100,7 @@ $(function(){ self.clear = function(){ snap.selectAll('#userContent>*').remove(); + snap.selectAll('#placedGcodes>*').remove(); self.placedDesigns([]); }; @@ -339,16 +340,19 @@ $(function(){ }; self.getCompositionSVG = function(){ - var dpiFactor = self.svgDPI()/25.4; // convert mm to pix 90dpi for inkscape, 72 for illustrator - var w = dpiFactor * self.workingAreaWidthMM(); - var h = dpiFactor * self.workingAreaHeightMM(); -// var w = dpiFactor * self.settings.printerProfiles.currentProfileData().volume.width; -// var h = dpiFactor * self.settings.printerProfiles.currentProfileData().volume.depth; -// var yTranslation = "translate(0, "+h+")"; - var tmpsvg = snap.select("#userContent").innerSVG(); // get working area - var svg = ''+ tmpsvg +''; - return svg; + if(tmpsvg !== ''){ + var dpiFactor = self.svgDPI()/25.4; // convert mm to pix 90dpi for inkscape, 72 for illustrator + var w = dpiFactor * self.workingAreaWidthMM(); + var h = dpiFactor * self.workingAreaHeightMM(); + // var w = dpiFactor * self.settings.printerProfiles.currentProfileData().volume.width; + // var h = dpiFactor * self.settings.printerProfiles.currentProfileData().volume.depth; + + var svg = ''+ tmpsvg +''; + return svg; + } else { + return; + } }; self.getPlacedGcodes = ko.computed(function() { diff --git a/src/octoprint/server/api/files.py b/src/octoprint/server/api/files.py index 58a4ab3d..bc071860 100644 --- a/src/octoprint/server/api/files.py +++ b/src/octoprint/server/api/files.py @@ -473,6 +473,11 @@ def gcodeConvertCommand(): import os name, _ = os.path.splitext(filename) gcode_name = name + ".gco" + + i = 1; + while(fileManager.file_exists(target, gcode_name)): + name, ext = os.path.splitext(filename) + gcode_name = name+'.'+str(i)+'.'+ext # prohibit overwriting the file that is currently being printed currentOrigin, currentFilename = _getCurrentFile() diff --git a/src/octoprint/static/gcodeviewer/js/renderer.js b/src/octoprint/static/gcodeviewer/js/renderer.js index 484bf9f8..31a895fd 100644 --- a/src/octoprint/static/gcodeviewer/js/renderer.js +++ b/src/octoprint/static/gcodeviewer/js/renderer.js @@ -416,7 +416,7 @@ var drawLayer = function(layerNum, fromProgress, toProgress, isNotCurrentLayer){ prevX = x ; prevY = y ; } - GCODE.workingArea.draw_gcode(points, lastLaser); + GCODE.workingArea.draw_gcode(points, lastLaser, '#gCodePreview'); } };