diff --git a/src/octoprint/static/js/app/viewmodels/files.js b/src/octoprint/static/js/app/viewmodels/files.js
index ecc660b5..92d110aa 100644
--- a/src/octoprint/static/js/app/viewmodels/files.js
+++ b/src/octoprint/static/js/app/viewmodels/files.js
@@ -289,7 +289,8 @@ $(function() {
}
OctoPrint.files.select(file.origin, OctoPrint.files.pathForElement(file))
.done(function() {
- if (printAfterLoad) {
+ var withinPrintDimensions = self.evaluatePrintDimensions(file, true);
+ if (withinPrintDimensions && printAfterLoad) {
OctoPrint.job.start();
}
});
@@ -411,6 +412,17 @@ $(function() {
self.getAdditionalData = function(data) {
var output = "";
if (data["gcodeAnalysis"]) {
+ if (data["gcodeAnalysis"]["printingArea"]) {
+ var area = data["gcodeAnalysis"]["printingArea"];
+ var dimensions = {
+ width: area["maxX"] - area["minX"],
+ depth: area["maxY"] - area["minY"],
+ height: area["maxZ"] - area["minZ"]
+ };
+
+ output += gettext("Model Size") + ": " + _.sprintf("%(width).2fmm × %(depth).2fmm × %(height).2fmm", dimensions);
+ output += "
";
+ }
if (data["gcodeAnalysis"]["filament"] && typeof(data["gcodeAnalysis"]["filament"]) == "object") {
var filament = data["gcodeAnalysis"]["filament"];
if (_.keys(filament).length == 1) {
@@ -424,82 +436,6 @@ $(function() {
}
}
output += gettext("Estimated Print Time") + ": " + formatDuration(data["gcodeAnalysis"]["estimatedPrintTime"]) + "
";
- if (self.loginState.isUser())
- {
- var profileItems=self.printerProfiles.profiles.items();
- var count=0;
- while(count < profileItems.length && !profileItems[count].current)
- {
- count++;
- }
- if (count < profileItems.length)
- {
- var warn=false;
- var volumeInfo=profileItems[count].volume;
- var printingArea=data["gcodeAnalysis"]["printingArea"];
- if(volumeInfo.origin=="lowerleft")
- {
- if(printingArea["maxX"]>volumeInfo.width || printingArea["maxY"]>volumeInfo.depth ||
- printingArea["maxZ"]>volumeInfo.height)
- {
- warn=true;
- }
- }
- else //origin is centre
- {
- if( printingArea["maxX"]>(volumeInfo.width/2) || printingArea["maxY"]>(volumeInfo.depth/2) ||
- printingArea["maxZ"]>volumeInfo.height || Math.abs(printingArea["minX"])>(volumeInfo.width/2) ||
- Math.abs(printingArea["minY"])>(volumeInfo.depth/2))
- {
- warn=true;
- }
- }
- }
- if(warn)
- {
- var warning = "
" + _.sprintf(gettext("Revise file %s"), data["name"]) + "
"; - var info=""; - - // set print volume boundaries - var boundaries = { - minX : 0, - maxX : volumeInfo.width, - minY : 0, - maxY : volumeInfo.depth, - minZ : 0, - maxZ : volumeInfo.height - }; - if (volumeInfo.origin === "center") { - boundaries["maxX"] = volumeInfo.width / 2; - boundaries["minX"] = -1 * boundaries["maxX"]; - boundaries["maxY"] = volumeInfo.depth / 2; - boundaries["minY"] = -1 * boundaries["maxY"]; - } - - // find exceeded dimensions - if (printingArea["minX"] < boundaries["minX"] || printingArea["maxX"] > boundaries["maxX"]) { - info += _.sprintf(gettext("Profile's width: ( %s, %s) vs object's width: (%s, %s)\n"), boundaries["minX"], - boundaries["maxX"],printingArea["minX"], printingArea["maxX"]); - } - if (printingArea["minY"] < boundaries["minY"] || printingArea["maxY"] > boundaries["maxY"]) { - info += _.sprintf(gettext("Profile's depth: (%s, %s) vs object's depth: (%s, %s)\n"),boundaries["minY"], - boundaries["maxY"], printingArea["minY"], printingArea["maxY"]); - } - if (printingArea["minZ"] < boundaries["minZ"] || printingArea["maxZ"] > boundaries["maxZ"]) { - info += _.sprintf(gettext("Profile's height: (%s, %s) vs object's height: (%s, %s)\n"),boundaries["minZ"], - boundaries["maxZ"], printingArea["minZ"], printingArea["maxZ"]); - } - - //warn user - warning += pnotifyAdditionalInfo("" + info + ""); - new PNotify({ - title: "Object exceeds the printing area", - text: warning, - type: "warning", - hide: false - }); - } - } } if (data["prints"] && data["prints"]["last"]) { output += gettext("Last Printed") + ": " + formatTimeAgo(data["prints"]["last"]["date"]) + "
" + _.sprintf(gettext("Object in %(name)s exceeds the print volume of the currently selected printer profile, be careful when printing this."), data) + "
"; + var info = ""; + + var formatData = { + profile: boundaries, + object: printingArea + }; + + info += _.sprintf(gettext("Object's bounding box: (%(object.minX).2f, %(object.minY).2f, %(object.minZ).2f) × (%(object.maxX).2f, %(object.maxY).2f, %(object.maxZ).2f)"), formatData); + info += "