From 97f1d7f888e94e6d9c73962d8e351140cb282011 Mon Sep 17 00:00:00 2001
From: Amanda Ghassaei <amandaghassaei@gmail.com>
Date: Fri, 27 Mar 2015 04:02:14 -0400
Subject: [PATCH] auto calculate rapid height and stock position form lattice
 bbox

---
 js/cam/Machine.js    |  8 ++++++--
 js/models/Lattice.js | 21 +++++++++++++++++++++
 2 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/js/cam/Machine.js b/js/cam/Machine.js
index 0a64aee4..c4018411 100644
--- a/js/cam/Machine.js
+++ b/js/cam/Machine.js
@@ -27,6 +27,8 @@ Machine.prototype._setDefaults = function(){
     dmaGlobals.assembler.set("camProcess", "gcode");
     dmaGlobals.assembler.set("stockFixed", false);
     dmaGlobals.assembler.set("originPosition", {x:0,y:0,z:0});
+    var boundingBox = dmaGlobals.lattice.calculateBoundingBox();
+    dmaGlobals.assembler.set("rapidHeight", boundingBox.max.z + 2*dmaGlobals.lattice.zScale());
     dmaGlobals.assembler.set("stockPosition", {x:0,y:0,z:0});
     dmaGlobals.assembler.set("stockSeparation", dmaGlobals.lattice.xScale());
 };
@@ -264,7 +266,8 @@ Shopbot.prototype = Object.create(Machine.prototype);
 Shopbot.prototype._setDefaults = function(){
     Machine.prototype._setDefaults.call(this);
     dmaGlobals.assembler.set("camProcess", "shopbot");
-    dmaGlobals.assembler.set("stockPosition", {x:0,y:100,z:0});//todo calculate this
+    var boundingBox = dmaGlobals.lattice.calculateBoundingBox();
+    dmaGlobals.assembler.set("stockPosition", {x:0,y:boundingBox.max.y + 3*dmaGlobals.lattice.yScale(),z:0});
 };
 
 Shopbot.prototype._buildMeshes = function(callback){
@@ -302,7 +305,8 @@ God.prototype = Object.create(Machine.prototype);
 
 God.prototype._setDefaults = function(){
     Machine.prototype._setDefaults.call(this);
-    dmaGlobals.assembler.set("stockPosition", {x:0,y:0,z:150});//todo calculate this
+    var boundingBox = dmaGlobals.lattice.calculateBoundingBox();
+    dmaGlobals.assembler.set("stockPosition", {x:0,y:0,z:boundingBox.max.z + 5*dmaGlobals.lattice.zScale()});
 };
 
 God.prototype._buildMeshes = function(callback){
diff --git a/js/models/Lattice.js b/js/models/Lattice.js
index a05b3f3a..952f179f 100644
--- a/js/models/Lattice.js
+++ b/js/models/Lattice.js
@@ -141,6 +141,27 @@ Lattice = Backbone.Model.extend({
         dmaGlobals.three.render();
     },
 
+    calculateBoundingBox: function(){
+        var scale = this._allAxesScales();
+        var min = _.clone(this.get("cellsMin"));
+        var max = _.clone(this.get("cellsMax"));
+        console.log(min);
+        console.log(max);
+        _.each(_.keys(scale), function(key){
+            min[key] *= scale[key];
+            max[key] *= scale[key];
+        });
+        return {min:min, max:max};
+    },
+
+    _allAxesScales: function(){
+        var scale = this.get("scale");
+        var xScale = this.xScale(scale);
+        var yScale = this.yScale(scale);
+        var zScale = this.zScale(scale);
+        return {x:xScale, y:yScale, z:zScale};
+    },
+
     ////////////////////////////////////////////////////////////////////////////////////
     ///////////////////////////////FILL GEOMETRY////////////////////////////////////////
     ////////////////////////////////////////////////////////////////////////////////////
-- 
GitLab