diff --git a/js/cam/Machine.js b/js/cam/Machine.js
index 0a64aee4a20253f07ff6c4b33b190324ca5206b1..c40184119affe97c699d1452500d97a850d31126 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 a05b3f3a81a5e687a079b9ad28cf35b0bd837d6f..952f179ffcff2303882b9175e4d985123704e4c6 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////////////////////////////////////////
     ////////////////////////////////////////////////////////////////////////////////////