diff --git a/js/cam/assemblers/Assembler.js b/js/cam/assemblers/Assembler.js index b08fdab417658bbd6a052f20b15aca302d68ced4..e53d04048a7bb8ff72bc17d3c3486f76270b67a2 100644 --- a/js/cam/assemblers/Assembler.js +++ b/js/cam/assemblers/Assembler.js @@ -48,6 +48,12 @@ define(['underscore', 'appState', 'lattice', 'three', 'threeModel', 'cam', 'comp Assembler.prototype._setTranslucent = function(){ assemblerMaterial.transparent = (appState.get("currentTab") == "cam"); }; + + Assembler.prototype.moveMachine = function(){//origin selection + var origin = cam.get("originPosition"); + this.object3D.position.set(origin.x, origin.y, origin.z); + three.render(); + }; @@ -138,12 +144,6 @@ define(['underscore', 'appState', 'lattice', 'three', 'threeModel', 'cam', 'comp Assembler.prototype.pause = function(){ }; - Assembler.prototype.moveMachine = function(){ - var origin = cam.get("originPosition"); - this.object3D.position.set(origin.x, origin.y, origin.z); - three.render(); - }; - Assembler.prototype.moveTo = function(x, y, z, speed, wcs, callback){ x = this._makeAbsPosition(x, wcs.x); y = this._makeAbsPosition(y, wcs.y); diff --git a/js/cam/assemblers/Crab.js b/js/cam/assemblers/Crab.js index ee3b92b8f37699afe57d9f59da726624fc5a02b9..bfd0fe51dfe065e030d29f129f565aae15ba4662 100644 --- a/js/cam/assemblers/Crab.js +++ b/js/cam/assemblers/Crab.js @@ -3,7 +3,7 @@ */ -define(['stlLoader', 'bin!crabSTL', 'threeModel'], function(THREE, geometry, three){ +define(['stlLoader', 'bin!assets/stls/crab/crab.stl', 'threeModel', 'assembler'], function(THREE, geometry, three, Assembler){ var loader = new THREE.STLLoader(); @@ -16,8 +16,26 @@ define(['stlLoader', 'bin!crabSTL', 'threeModel'], function(THREE, geometry, thr return geo; } - var mesh = new THREE.Mesh(unitGeo, new THREE.MeshLambertMaterial({color:0x777777, shading:THREE.FlatShading})); - three.sceneAdd(mesh); - three.render(); + function CrabAssembler(){ + this.stockAttachedToEndEffector = true;//no need for "stock position" + Assembler.call(this); + } + CrabAssembler.prototype = Object.create(Assembler.prototype); + + CrabAssembler.prototype._buildStock = function(){ + return null; +// return new StockClass({}); + }; + + CrabAssembler.prototype._configureAssemblerMovementDependencies = function(){ + this.object3D.add(this.frame.getObject3D()); + }; + + CrabAssembler.prototype._getSTLs = function(){ + return { + frame: unitGeo + } + }; + return CrabAssembler; }); \ No newline at end of file diff --git a/js/cam/assemblers/StaplerAssembler.js b/js/cam/assemblers/StaplerAssembler.js index e340f95283a6144ac439d8db5ce9f7004568799c..6c58aa8780053539e3598aeaa5d1da54edf0c2b8 100644 --- a/js/cam/assemblers/StaplerAssembler.js +++ b/js/cam/assemblers/StaplerAssembler.js @@ -62,28 +62,6 @@ define(['underscore', 'assembler', 'stlLoader', 'gikSuperCell', } }; - StaplerAssembler.prototype._moveXAxis = function(startingPos, target, axis, speed, callback){ - if (target == null || target === undefined) { - callback(); - return; - } - this._animateObjects([this.xAxis], axis, speed, startingPos, target, callback); - }; - StaplerAssembler.prototype._moveYAxis = function(startingPos, target, axis, speed, callback){ - if (target == null || target === undefined) { - callback(); - return; - } - this._animateObjects([this.yAxis], axis, speed, startingPos, target, callback); - }; - StaplerAssembler.prototype._moveZAxis = function(startingPos, target, axis, speed, callback){ - if (target == null || target === undefined) { - callback(); - return; - } - this._animateObjects([this.zAxis], axis, speed, startingPos, target, callback); - }; - return StaplerAssembler; }); \ No newline at end of file diff --git a/js/lattice/LatticeBase.js b/js/lattice/LatticeBase.js index 6cdbccc7a627d3297e939d895f4833d295328ad8..ef6c404a9b38e02bfe4e221a3ff6fec404b7d553 100644 --- a/js/lattice/LatticeBase.js +++ b/js/lattice/LatticeBase.js @@ -231,7 +231,7 @@ define(['underscore', 'backbone', 'appState', 'globals', 'plist', 'three', 'thre if (!cells) { console.warn("no cells specified in matrix expansion"); - return; + cells = this.sparseCells; } if (!this.get("cellsMax") || !this.get("cellsMin")){ diff --git a/js/main.js b/js/main.js index b464bbbbd6160c82e0397ef8292145869b87258c..bb162098b00b464db3aa4de1b8e1fa74a9f51297 100644 --- a/js/main.js +++ b/js/main.js @@ -167,7 +167,6 @@ require.config({ kennyTeqPartSTL: 'assets/stls/parts/KennyTeqPart.stl', kennyTeqPartHighResSTL: 'assets/stls/parts/KennyTeqPartHighRes.stl', samTeqPartSTL: 'assets/stls/parts/SamTeqPart.stl', - crabSTL: 'assets/stls/crab/crab.stl' }, diff --git a/js/menus/AssemblerMenuView.js b/js/menus/AssemblerMenuView.js index 4de97b64d5d6223680ab1a8810585443a110c7aa..dcac5a1f139e517c441413557399cd586cc1c42d 100644 --- a/js/menus/AssemblerMenuView.js +++ b/js/menus/AssemblerMenuView.js @@ -15,6 +15,11 @@ define(['jquery', 'underscore', 'menuParent', 'plist', 'cam', 'lattice', 'text!a this.listenTo(cam, "change", this.render);//todo handle this in wrapper $(document).bind('keyup', {}, this._onKeyup); }, + + getPropertyOwner: function($target){ + if ($target.hasClass("assembler")) return cam; + return null; + }, _onKeyup: function(e){ if (this.model.get("currentTab") != "assembler") return; diff --git a/js/menus/CamMenuView.js b/js/menus/CamMenuView.js index 851ea2ec7917f8b2842824329b9775c7a839bec6..a8e77198b8b1eb6662f6ecd25b4741602ca153ff 100644 --- a/js/menus/CamMenuView.js +++ b/js/menus/CamMenuView.js @@ -19,6 +19,11 @@ define(['jquery', 'underscore', 'menuParent', 'plist', 'cam', 'lattice', 'text!c this.listenTo(lattice, "change", this.render); }, + getPropertyOwner: function($target){ + if ($target.hasClass("assembler")) return cam; + return null; + }, + _selectOrigin: function(e){ e.preventDefault(); this.model.set("manualSelectOrigin", !this.model.get("manualSelectOrigin")); diff --git a/js/menus/MenuWrapperView.js b/js/menus/MenuWrapperView.js index 5b509a8c0e7206f530190f5285d7c66cdfc1f9ae..17f8b42d2e68d4ae3d0ccba64b55d3686a4665d5 100644 --- a/js/menus/MenuWrapperView.js +++ b/js/menus/MenuWrapperView.js @@ -161,7 +161,6 @@ define(['jquery', 'underscore', 'plist', 'backbone', 'lattice', 'appState', 'tex _getPropertyOwner: function($target){ if ($target.hasClass("lattice")) return lattice; - if ($target.hasClass("assembler")) return globals.cam; if ($target.hasClass("appState")) return this.model; if (this.menu) { var owner = this.menu.getPropertyOwner($target); @@ -186,9 +185,10 @@ define(['jquery', 'underscore', 'plist', 'backbone', 'lattice', 'appState', 'tex return; } if (key){ + console.log(this._getOwnerProperty(owner, property)); var propObject = this._getOwnerProperty(owner, property).clone(); propObject[key] = newVal; - this._setOwnerProperty(owner, property, newVal); + this._setOwnerProperty(owner, property, propObject); } else { this._setOwnerProperty(owner, property, newVal); } diff --git a/js/plists/PList.js b/js/plists/PList.js index 969fc919d75b75cdcd777a5bdc850d2c57ca56c0..c01abc06f10c1b813ceb834561ff12a988a27c7d 100644 --- a/js/plists/PList.js +++ b/js/plists/PList.js @@ -209,10 +209,11 @@ define(['three'], function(THREE){ octa:{ face: {handOfGod: "Hand of God"}, edgeRot: { + crab: "Crab", shopbot: "Shopbot", - oneBitBot: "One Bit Bot", - oneBitBotLegs: "One Bit Bot with Legs", - handOfGod: "Hand of God" + oneBitBot: "One Bit Bot", + oneBitBotLegs: "One Bit Bot with Legs", + handOfGod: "Hand of God" }, vertex: {handOfGod: "Hand of God"} }, @@ -247,7 +248,8 @@ define(['three'], function(THREE){ tinyG: "TinyG" }, stapler: {gcode: "G-Code"}, - staplerDual: {gcode: "G-Code"} + staplerDual: {gcode: "G-Code"}, + crab: {gcode: "G-Code"} }, allMachineDefaults: { @@ -264,7 +266,8 @@ define(['three'], function(THREE){ originPosition: new THREE.Vector3(0,0,0), rapidSpeeds:{xy: 3, z: 2}, feedRate:{xy: 0.1, z: 0.1} - } + }, + crab: null }, allScripts: { @@ -273,7 +276,7 @@ define(['three'], function(THREE){ allUnitTypes: { inches: "Inches", - mm: "mm" + mm: "mm" //um: "micron" } diff --git a/js/three/FillGeometry.js b/js/three/FillGeometry.js index de91c17c4ac2cdf4315841040eb973af963575f1..6cab1f0a3fe529e91b54e19b31dd0c2e5d317c46 100644 --- a/js/three/FillGeometry.js +++ b/js/three/FillGeometry.js @@ -35,6 +35,7 @@ define(['three', 'underscore', 'backbone', 'lattice', 'threeModel'], opacity:0.4, side:THREE.DoubleSide })); + mesh.position.set(0,0,-0.5); this.set({mesh: mesh}); three.sceneAdd(mesh); three.render(); @@ -44,13 +45,14 @@ define(['three', 'underscore', 'backbone', 'lattice', 'threeModel'], var boundingBox = this.get("mesh").geometry.boundingBox; var scale = this.get("scale"); - var scaledMin = boundingBox.min.clone().multiplyScalar(scale); + var offset = this.get("mesh").position.clone(); + console.log(offset); + var scaledMin = boundingBox.min.clone().multiplyScalar(scale);//.add(offset) var scaledMax = boundingBox.max.clone().multiplyScalar(scale); - console.log(scaledMin); - console.log(scaledMax); var minIndex = lattice.getIndexForPosition(scaledMin); var maxIndex = lattice.getIndexForPosition(scaledMax); + minIndex.z -= 1; console.log(minIndex); console.log(maxIndex); lattice.checkForMatrixExpansion(null, maxIndex, minIndex);//expand cells matrix before @@ -73,15 +75,16 @@ define(['three', 'underscore', 'backbone', 'lattice', 'threeModel'], for (var z=minIndex.z;z<=maxIndex.z;z++){ var index = new THREE.Vector3(x, y, z); var position = lattice.getPositionForIndex(index); + index.z -= 1; if (!inside){ if (position.z<nextIntersection) continue; else { inside = true; - lattice.getUItarget().addCellAtIndex(index, true, true); + lattice.addCellAtIndex(index, true, true); } } else { if (position.z<nextIntersection) { - lattice.getUItarget().addCellAtIndex(index, true, true); + lattice.addCellAtIndex(index, true, true); continue; } else inside = false;