/** * Created by aghassaei on 3/10/15. */ function ShopbotExporter() { } ShopbotExporter.prototype.makeHeader = function(){ var data = ""; data += this.addLine("FG", [], "single step mode"); data += this.addLine("SA", [], "absolute distances"); data += this.addLine("SM", [], "move/cut mode"); var rapidSpeeds = dmaGlobals.assembler.get("rapidSpeeds"); data += this.addLine("JS", [rapidSpeeds.xy, rapidSpeeds.z], "jog speed xy, z"); var feedRate = dmaGlobals.assembler.get("feedRate"); data += this.addLine("MS", [feedRate.xy, feedRate.z], "move speed xy, z"); data += this.goHome(); return data; }; ShopbotExporter.prototype.addLine = function(command, params, comment){ var data = ""; data += command + " "; var self = this; _.each(params, function(param){ if (isNaN(parseFloat(param))) { data += param + ", "; return; } if (dmaGlobals.lattice.get("units") == "mm") param = self.convertToInches(param);//all shopbot stuff must be in inches data += param.toFixed(3) + ", "; }); if (comment) data += "'" +comment; data += "\n"; return data; }; ShopbotExporter.prototype.addComment = function(comment){ return "'" + comment + "\n"; }; ShopbotExporter.prototype.rapidXYZ = function(x, y, z){ return this.addLine("J3", [x,y,z]); }; ShopbotExporter.prototype.rapidXY = function(x, y){ return this.addLine("J2", [x,y]); }; ShopbotExporter.prototype.moveXYZ = function(x, y, z){ return this.addLine("M3", [x,y,z]); }; ShopbotExporter.prototype.moveXY = function(x, y){ return this.addLine("M2", [x,y]); }; ShopbotExporter.prototype.moveZ = function(z){ return this.moveXYZ("", "", z); }; ShopbotExporter.prototype.goHome = function(){ var data = this.moveZ(dmaGlobals.assembler.get("rapidHeight")); data += this.moveXY(0,0); return data; }; ShopbotExporter.prototype.makeFooter = function(){ var data = this.moveZ(dmaGlobals.assembler.get("rapidHeight")); data += this.rapidXY(0,0); return data; }; ShopbotExporter.prototype.save = function(data){ var blob = new Blob([data], {type: "text/plain;charset=utf-8"}); saveAs(blob, "ShopbotExport" + ".sbp"); }; ShopbotExporter.prototype.convertToInches = function(mm){ return mm*0.0393701; }