diff --git a/css/main.css b/css/main.css index e5269214064f15619b11f1d4c7ca3e05c5dd51fb..3bc5a9482538f42004719ebba19a9449550fad6c 100644 --- a/css/main.css +++ b/css/main.css @@ -468,12 +468,12 @@ label { left: 245px; } -.assemblerTree>label{ +.alternatingColorList>label{ padding-right: 10px; width: 100%; } -.assemblerTree{ +.alternatingColorList{ display: inline-block; width: 100%; height: 35px; @@ -481,6 +481,10 @@ label { border: 1px solid #ddd; } +.alternatingColorList.evenListItem{ + background-color:#ddd; +} + .dropdown-menu>li>a{ padding: 6px 9px; } diff --git a/js/cam/assemblers/Assembler.js b/js/cam/assemblers/Assembler.js index 6efbb243dcb29533403e7369925fd6393bd545b4..948c0a5959cc0a018d1bf5ccc9c569b494fbac8d 100644 --- a/js/cam/assemblers/Assembler.js +++ b/js/cam/assemblers/Assembler.js @@ -18,6 +18,7 @@ define(['underscore', 'appState', 'lattice', 'stlLoader', 'threeModel', 'cam', ' this.relative = json.relative; this.camProcesses = json.camProcesses; this.numMaterials = json.numMaterials; + this.name = json.name; this.object3D = new THREE.Object3D(); @@ -292,9 +293,23 @@ define(['underscore', 'appState', 'lattice', 'stlLoader', 'threeModel', 'cam', ' }; Assembler.prototype.saveJSON = function(){ - return { - - } + var json = this.toJSON(); + json.lattice = { + scale: lattice.get("scale"), + units: lattice.get("units") + }; + json.defaults = { + camStrategy: cam.get("camStrategy"), + placementOrder: cam.get("placementOrder"), + camProcess: cam.get("camProcess"), + rapidHeight: cam.get("rapidHeight"), + rapidHeightRelative: cam.get("rapidHeightRelative"), + safeHeight: cam.get("safeHeight"), + originPosition: cam.get("originPosition"), + rapidSpeeds: cam.get("rapidSpeeds"), + feedRate: cam.get("feedRate") + }; + return json; }; Assembler.prototype.toJSON = function(){ @@ -307,6 +322,7 @@ define(['underscore', 'appState', 'lattice', 'stlLoader', 'threeModel', 'cam', ' stockJSON[id] = thisStock.toJSON(); }); return { + name: this.name, components: componentsJSON, stock: stockJSON, translation: this.translation, diff --git a/js/cam/assemblers/Component.js b/js/cam/assemblers/Component.js index 919b346d3029cf2b93ffbb0cde9ced0e00005e16..1afebd5bb1e19c98f81061a1ba4e3581851446e7 100644 --- a/js/cam/assemblers/Component.js +++ b/js/cam/assemblers/Component.js @@ -20,6 +20,7 @@ define(['underscore', 'cam', 'three'], function(_, cam, THREE){ this.motionVector = new THREE.Vector3(); if (json.centerOfRotation) this.centerOfRotation = new THREE.Vector3(json.centerOfRotation.x, json.centerOfRotation.y, json.centerOfRotation.z); if (json.motionVector) this.motionVector.set(json.motionVector.x, json.motionVector.y, json.motionVector.z); + this.stlJSON = json.stl; this.postReset(); @@ -300,7 +301,8 @@ define(['underscore', 'cam', 'three'], function(_, cam, THREE){ isStatic: this.isStatic, rotary: this.rotary, motionVector: this.motionVector, - centerOfRotation: this.centerOfRotation + centerOfRotation: this.centerOfRotation, + stl:this.stlJSON } }; diff --git a/js/cam/assemblers/StockComponent.js b/js/cam/assemblers/StockComponent.js index b258bc18b50ce57b8e08f5fac43d78ac313538fe..31c911ef655967a44dbfb2edc4e083ba8203ac6f 100644 --- a/js/cam/assemblers/StockComponent.js +++ b/js/cam/assemblers/StockComponent.js @@ -14,7 +14,7 @@ define(['underscore', 'cam', 'three', 'component', 'lattice', 'threeModel'], var self = this; this._makeCell(json.description, function(cell){ self.cell = cell; - self._setPosition(cell, json.position, json.rotation); + self._setPosition(cell, json.translation, json.rotation); self.object3D.add(cell.getObject3D()); }); } @@ -81,7 +81,10 @@ define(['underscore', 'cam', 'three', 'component', 'lattice', 'threeModel'], StockComponent.prototype.toJSON = function(){ var json = Component.prototype.toJSON.call(this); - json.material = this.cell.materialName + json.description = { + materialName: this.cell.materialName, + length: this.cell.getLength() + }; return json; }; diff --git a/js/menus/AssemblerSetupMenuView.js b/js/menus/AssemblerSetupMenuView.js index f9b0b5ad82d14f82260496e1fbe954a4cc7daa09..e1d0c4038f9bcadc876fb3fe9cc79f579f1ea916 100644 --- a/js/menus/AssemblerSetupMenuView.js +++ b/js/menus/AssemblerSetupMenuView.js @@ -11,7 +11,8 @@ define(['jquery', 'underscore', 'menuParent', 'camPlist', 'cam', 'text!assembler events: { "click .editMachineComponent": "_editMachineComponent", "click .editMachineCode": "_editMachineCode", - "click #newMachineComponent": "_newComponent" + "click #newMachineComponent": "_newComponent", + "click #saveMachineConfig": "_save" }, _initialize: function(){ @@ -52,6 +53,13 @@ define(['jquery', 'underscore', 'menuParent', 'camPlist', 'cam', 'text!assembler this.model.set("currentNav", "navMachineComponent"); }, + _save: function(e){ + e.preventDefault(); + require(['fileSaver'], function(fileSaver){ + fileSaver.saveMachineConfig(cam.get("assembler").saveJSON()); + }); + }, + _makeTemplateJSON: function(){ return _.extend(this.model.toJSON(), cam.toJSON(), cam.get("assembler").toJSON()); }, diff --git a/js/menus/templates/AssemblerSetupMenuView.html b/js/menus/templates/AssemblerSetupMenuView.html index 3e0fdecc0be713cb8b92c74bc00005692d972d37..49077ade79c99a420698541b946c4bdec64f9981 100644 --- a/js/menus/templates/AssemblerSetupMenuView.html +++ b/js/menus/templates/AssemblerSetupMenuView.html @@ -3,8 +3,10 @@ Parent/Child Tree:<br/><br/> <% _.each(tree, function(level, id){ %> <% var component = components[id] || stock[id]; %> <% treeLevel++; %> - <div class="assemblerTree" <% if (treeLevel%2 == 0){ %> style="background-color:#ddd"<% } %> ><label style="padding-left:<%= level*10 + 20 %>px"><%= component.name %> - <a data-id="<%= id %>" class="editMachineComponent pull-right" href="#">Edit</a></label></div><br/> + <div class="alternatingColorList<% if (treeLevel%2 == 0){ %> evenListItem <% } %>"> + <label style="padding-left:<%= level*10 + 20 %>px"><%= component.name %> + <a data-id="<%= id %>" class="editMachineComponent pull-right" href="#">Edit</a></label> + </div><br/> <% }); %><br/> <a href="#" id="newMachineComponent" class=" btn halfWidth btn-lg btn-default">+ Component</a> <a href="#" id="addStock" class=" btn halfWidth btn-lg btn-default pull-right">+ Stock</a><br/><br/> @@ -16,6 +18,7 @@ Rotation (xyz): <input data-property="rotation" data-key="x" value="<%= rotation.x %>" placeholder="X" class="form-control floatInput assembler" type="text"> <input data-property="rotation" data-key="y" value="<%= rotation.y %>" placeholder="Y" class="form-control floatInput assembler" type="text"> <input data-property="rotation" data-key="z" value="<%= rotation.z %>" placeholder="Z" class="form-control floatInput assembler" type="text"><br/><br/> + Scale: <input data-property="scale" value="<%= scale %>" placeholder="Scale" class="form-control floatInput assembler" type="text"><br/><br/> Edit Code:<br/><br/> Context Variables <a class="editMachineCode" data-name="customFunctionsContext" href="#">Edit</a><br/> @@ -27,4 +30,4 @@ Move XY <a class="editMachineCode" data-name="customMoveXY" href="#">Edit</a><br Change Z <a class="editMachineCode" data-name="customChangeZLayer" href="#">Edit</a><br/> Place part <a class="editMachineCode" data-name="customPlacePart" href="#">Edit</a><br/> Footer <a class="editMachineCode" data-name="customFooter" href="#">Edit</a><br/><br/> -<a href="#" id="saveMachineToFiles" class=" btn btn-block btn-lg btn-success">Save Machine Files</a><br/> +<a href="#" id="saveMachineConfig" class=" btn btn-block btn-lg btn-success">Save Machine Files</a><br/> diff --git a/js/menus/templates/EditComponentMenuView.html b/js/menus/templates/EditComponentMenuView.html index 5d6c8ac538b7b67e12d18d8b5cd238f1168e2f13..56f5e3ea7ab3034fd1601182bcdcba0e93502f41 100644 --- a/js/menus/templates/EditComponentMenuView.html +++ b/js/menus/templates/EditComponentMenuView.html @@ -62,7 +62,7 @@ Parent: <% } else { %> Material: <div class="btn-group"> - <button data-toggle="dropdown" class="btn dropdown-toggle" type="button"><%= materials[thisComponent.material].name %><span class="caret"></span></button> + <button data-toggle="dropdown" class="btn dropdown-toggle" type="button"><%= materials[thisComponent.description.materialName].name %><span class="caret"></span></button> <ul role="menu" class="dropdown-menu"> <% _.each(allMaterials[materialClass], function(material, key){ %> <li><a class="stockMaterial dropdownSelector" data-id="<%= key %>" href="#"> diff --git a/js/models/FileSaver.js b/js/models/FileSaver.js index 3ae25dfeca8f0d07b6d5599d30399cecd8190a14..899c113a73c49a5e63ee641e4c3ed69e98aaca05 100644 --- a/js/models/FileSaver.js +++ b/js/models/FileSaver.js @@ -6,25 +6,25 @@ define(['underscore', 'fileSaverLib', 'lattice', 'materials', 'ribbon', 'menuWrapper'], function(_, saveAs, lattice, materials, ribbon, menuWrapper){ function _saveFile(data, name, extension){ - var blob = new Blob([data], {type: "text/plain;charset=utf-8"}); + var blob = new Blob([JSON.stringify(data, null, '\t')], {type: "text/plain;charset=utf-8"}); saveAs(blob, name + extension); } // function save(name){ // if (!name || name == "" || name == undefined) name = "file"; -// var data = JSON.stringify({ +// var data = { // lattice:_getLatticeDataToSave(), //// assembler:_getAssemblerDataToSave() -// }); +// }; // _saveFile(data, name, ".json"); // } function save(name){ if (!name || name == "" || name == undefined) name = "DM Assembly"; - var data = JSON.stringify({ + var data = { assembly:_getLatticeDataToSave(), materials:_getMaterialsDataToSave() - }); + }; _saveFile(data, name, ".json"); } @@ -36,17 +36,21 @@ define(['underscore', 'fileSaverLib', 'lattice', 'materials', 'ribbon', 'menuWra if (!name || name == "" || name == undefined) name = "user"; var latticeData = _.omit(_getLatticeDataToSave(), ["cells", "cellsMin", "cellsMax", "numCells"]); var assemblerData = _.omit(_getAssemblerDataToSave(), ["dataOut", "needsPostProcessing", "editsMadeToProgram"]); - var data = JSON.stringify({ + var data = { lattice:latticeData, assembler:assemblerData - }); + }; _saveFile(data, name, ".user"); } function saveMaterial(id, material){ var data = {materials:{}}; data.materials[id] = material || _getMaterialDataToSave(id); - _saveFile(JSON.stringify(data), data.materials[id].name, ".json"); + _saveFile(data, data.materials[id].name, ".json"); + } + + function saveMachineConfig(data){ + _saveFile(data, "Machine Config", ".json"); } function _getAssemblerDataToSave(){ @@ -110,6 +114,7 @@ define(['underscore', 'fileSaverLib', 'lattice', 'materials', 'ribbon', 'menuWra // save: save, save: save, saveMaterial: saveMaterial, + saveMachineConfig: saveMachineConfig, // saveAssembler: saveAssembler, // saveUser: saveUser, loadFile: loadFile diff --git a/js/plists/CamPList.js b/js/plists/CamPList.js index d2b8aeeda1139f32ffd71074684750390b06d251..8f251ae61647ece016e2bfce67a7b75d265280f5 100644 --- a/js/plists/CamPList.js +++ b/js/plists/CamPList.js @@ -106,7 +106,7 @@ define(['three'], function(THREE){ }, name: "Stock 1", parent: "zAxis", - position: {x:0,y:0,z:0} + translation: {x:0,y:0,z:0} }, stock2: { description:{ @@ -115,7 +115,7 @@ define(['three'], function(THREE){ }, name: "Stock 2", parent: "zAxis", - position: {x:26,y:0.236,z:0} + translation: {x:26,y:0.236,z:0} } }, lattice:{