Merge branch 'stable-1.2.2' into v2_proto
This commit is contained in:
commit
b105047cad
4 changed files with 85 additions and 39 deletions
|
|
@ -70,12 +70,14 @@ Snap.plugin(function (Snap, Element, Paper, global) {
|
|||
|
||||
// Validity checks from http://www.w3.org/TR/SVG/shapes.html#RectElement:
|
||||
// If 'x' and 'y' are not specified, then set both to 0. // CorelDraw is creating that sometimes
|
||||
if (!isFinite(x))
|
||||
if (!isFinite(x)) {
|
||||
console.log('No attribute "x" in image tag. Assuming 0.')
|
||||
x = 0;
|
||||
if (!isFinite(y))
|
||||
}
|
||||
if (!isFinite(y)) {
|
||||
console.log('No attribute "y" in image tag. Assuming 0.')
|
||||
y = 0;
|
||||
}
|
||||
var transform = elem.transform();
|
||||
var matrix = transform['totalMatrix'];
|
||||
var transformedX = matrix.x(x, y);
|
||||
|
|
|
|||
|
|
@ -345,7 +345,7 @@ $(function(){
|
|||
dx = -svgBB.x + 0.01;
|
||||
outside = true;
|
||||
} else if(svgBB.x2 > waBB.x2){
|
||||
dx = -svgBB.x2 + waBB.x2 - 0.01;
|
||||
dx = -svgBB.x + 0.01;
|
||||
outside = true;
|
||||
}
|
||||
if(svgBB.y < waBB.y){
|
||||
|
|
@ -390,7 +390,7 @@ $(function(){
|
|||
});
|
||||
|
||||
};
|
||||
|
||||
|
||||
self.placeIMG = function (file) {
|
||||
var url = self._getIMGserveUrl(file);
|
||||
var img = new Image();
|
||||
|
|
@ -426,10 +426,16 @@ $(function(){
|
|||
};
|
||||
|
||||
self.getUsefulDimensions = function(wpx, hpx){
|
||||
var maxWidthMM = wpx * 0.25; // TODO parametrize
|
||||
var aspectRatio = wpx / hpx;
|
||||
var destWidthMM = Math.min(self.workingAreaWidthMM() - 2, maxWidthMM);
|
||||
var destHeightMM = destWidthMM / aspectRatio;
|
||||
var maxWidthMM = wpx * 0.25; // TODO parametrize
|
||||
var maxHeightMM = hpx * 0.25; // TODO parametrize
|
||||
var aspectRatio = wpx / hpx;
|
||||
var destWidthMM = Math.min(self.workingAreaWidthMM() - 2, maxWidthMM);
|
||||
var destHeightMM = Math.min(self.workingAreaHeightMM() - 2, maxHeightMM);
|
||||
if ((destWidthMM / aspectRatio) > destHeightMM) {
|
||||
destWidthMM = destHeightMM * aspectRatio;
|
||||
} else {
|
||||
destHeightMM = destWidthMM / aspectRatio;
|
||||
}
|
||||
var destWidthPT = self.mm2svgUnits(destWidthMM);
|
||||
var destHeightPT = self.mm2svgUnits(destHeightMM);
|
||||
return [destWidthPT, destHeightPT];
|
||||
|
|
@ -632,13 +638,13 @@ $(function(){
|
|||
|
||||
var userContent = snap.select("#userContent").clone();
|
||||
compSvg.append(userContent);
|
||||
|
||||
|
||||
self.renderInfill(compSvg, fillAreas, wMM, hMM, 10, function(svgWithRenderedInfill){
|
||||
callback( self._wrapInSvgAndScale(svgWithRenderedInfill));
|
||||
$('#compSvg').remove();
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
self._wrapInSvgAndScale = function(content){
|
||||
var svgStr = content.innerSVG();
|
||||
if(svgStr !== ''){
|
||||
|
|
@ -721,7 +727,7 @@ $(function(){
|
|||
self.clear_gcode = function(){
|
||||
snap.select('#gCodePreview').clear();
|
||||
};
|
||||
|
||||
|
||||
self.onStartup = function(){
|
||||
self.state.workingArea = self;
|
||||
self.files.workingArea = self;
|
||||
|
|
@ -754,11 +760,16 @@ $(function(){
|
|||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
self._embedAllImages = function(svg, callback){
|
||||
|
||||
|
||||
var allImages = svg.selectAll('image');
|
||||
var linkedImages = allImages.items.filter(function(i){ return !i.attr('href').startsWith('data:') });
|
||||
var linkedImages = allImages.items.filter(function(i){
|
||||
if(i.attr('xlink:href') != null) {
|
||||
return !i.attr('xlink:href').startsWith('data:');
|
||||
} else if(i.attr('href') != null) {
|
||||
return !i.attr('href').startsWith('data:');
|
||||
}});
|
||||
if(linkedImages.length > 0){
|
||||
var callbackCounter = linkedImages.length;
|
||||
for (var i = 0; i < linkedImages.length; i++) {
|
||||
|
|
@ -790,7 +801,7 @@ $(function(){
|
|||
var fillings = userContent.removeUnfilled(fillAreas);
|
||||
for (var i = 0; i < fillings.length; i++) {
|
||||
var item = fillings[i];
|
||||
|
||||
|
||||
if (item.type === 'image') {
|
||||
// remove filter effects on images for proper rendering
|
||||
var style = item.attr('style');
|
||||
|
|
|
|||
|
|
@ -217,6 +217,8 @@ $(function() {
|
|||
$("#confirmation_dialog .confirmation_dialog_acknowledge").click(
|
||||
function (e) {
|
||||
if (typeof callback === 'function') {
|
||||
self.resetOverrideSlider();
|
||||
self.numberOfPasses(1);
|
||||
callback(e);
|
||||
$("#confirmation_dialog").modal("hide");
|
||||
$("#confirmation_dialog .confirmation_dialog_message").html('');
|
||||
|
|
@ -286,8 +288,14 @@ $(function() {
|
|||
self.onEventRealTimeState = function(payload){
|
||||
self.currentPos({x: payload.wx, y: payload.wy});
|
||||
};
|
||||
|
||||
|
||||
|
||||
self.intensityOverride.subscribe(function(factor){
|
||||
self._overrideCommand("/intensity "+factor);
|
||||
});
|
||||
self.feedrateOverride.subscribe(function(factor){
|
||||
self._overrideCommand("/feedrate "+factor);
|
||||
});
|
||||
|
||||
self._overrideCommand = function(command, callback) {
|
||||
$.ajax({
|
||||
url: API_BASEURL + "printer/command",
|
||||
|
|
@ -302,34 +310,30 @@ $(function() {
|
|||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
self._configureOverrideSliders = function() {
|
||||
self.intensityOverrideSlider = $("#intensity_override_slider").slider({
|
||||
step: 1,
|
||||
min: 10,
|
||||
max: 200,
|
||||
value: 100,
|
||||
tooltip: 'hide'
|
||||
}).on("slide", function(ev){
|
||||
self.intensityOverride(ev.value);
|
||||
// tooltip: 'hide'
|
||||
}).on("slideStop", function(ev){
|
||||
self._overrideCommand("/intensity "+self.intensityOverride());
|
||||
self.intensityOverride(ev.value);
|
||||
});
|
||||
|
||||
|
||||
self.feedrateOverrideSlider = $("#feedrate_override_slider").slider({
|
||||
step: 1,
|
||||
min: 10,
|
||||
max: 200,
|
||||
value: 100,
|
||||
tooltip: 'hide'
|
||||
}).on("slide", function(ev){
|
||||
self.feedrateOverride(ev.value);
|
||||
// tooltip: 'hide'
|
||||
}).on("slideStop", function(ev){
|
||||
self._overrideCommand("/feedrate "+self.feedrateOverride());
|
||||
self.feedrateOverride(ev.value);
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
|
||||
self.increasePasses = function(){
|
||||
self.numberOfPasses(self.numberOfPasses()+1);
|
||||
self._jobCommand("incpasses");
|
||||
|
|
@ -339,17 +343,21 @@ $(function() {
|
|||
self.numberOfPasses(passes);
|
||||
self._jobCommand("degpasses");
|
||||
}
|
||||
|
||||
|
||||
self.onEventPrintDone = function(){
|
||||
self.feedrateOverrideSlider.slider('setValue', 100);
|
||||
self.resetOverrideSlider();
|
||||
};
|
||||
|
||||
self.onStartup = function() {
|
||||
self._configureOverrideSliders();
|
||||
};
|
||||
|
||||
self.resetOverrideSlider = function() {
|
||||
self.feedrateOverrideSlider.slider('setValue', 100);
|
||||
self.intensityOverrideSlider.slider('setValue', 100);
|
||||
self.intensityOverride(100);
|
||||
self.feedrateOverride(100);
|
||||
};
|
||||
|
||||
self.onStartup = function() {
|
||||
self._configureOverrideSliders();
|
||||
};
|
||||
}
|
||||
|
||||
OCTOPRINT_VIEWMODELS.push([
|
||||
|
|
|
|||
|
|
@ -84,6 +84,8 @@ class MachineCom(object):
|
|||
self._actual_intensity = None
|
||||
self._feedrate_dict = {}
|
||||
self._intensity_dict = {}
|
||||
self._passes = 1
|
||||
self._finished_passes = 0
|
||||
|
||||
# regular expressions
|
||||
self._regex_command = re.compile("^\s*\$?([GM]\d+|[TH])")
|
||||
|
|
@ -164,8 +166,15 @@ class MachineCom(object):
|
|||
if cmd is not None:
|
||||
self.sendCommand(cmd)
|
||||
self._callback.on_comm_progress()
|
||||
elif len(self._acc_line_buffer) == 0:
|
||||
self._set_print_finished()
|
||||
else:
|
||||
if self._finished_passes >= self._passes:
|
||||
if len(self._acc_line_buffer) == 0:
|
||||
self._set_print_finished()
|
||||
self._currentFile.resetToBeginning()
|
||||
cmd = self._getNext()
|
||||
if cmd is not None:
|
||||
self.sendCommand(cmd)
|
||||
self._callback.on_comm_progress()
|
||||
|
||||
self._sendCommand()
|
||||
self._send_event.wait(1)
|
||||
|
|
@ -311,7 +320,9 @@ class MachineCom(object):
|
|||
if self._finished_currentFile is False:
|
||||
line = self._currentFile.getNext()
|
||||
if line is None:
|
||||
self._finished_currentFile = True
|
||||
self._finished_passes += 1
|
||||
if self._finished_passes >= self._passes:
|
||||
self._finished_currentFile = True
|
||||
return line
|
||||
else:
|
||||
return None
|
||||
|
|
@ -830,6 +841,12 @@ class MachineCom(object):
|
|||
if self._currentFile is None:
|
||||
raise ValueError("No file selected for printing")
|
||||
|
||||
# reset feedrate and intesity factor in case they where changed in a previous run
|
||||
self._feedrate_factor = 1
|
||||
self._intensity_factor = 1
|
||||
self._passes = 1
|
||||
self._finished_passes = 0
|
||||
|
||||
try:
|
||||
# ensure fan is on whatever gcode follows.
|
||||
self.sendCommand("M08")
|
||||
|
|
@ -900,10 +917,12 @@ class MachineCom(object):
|
|||
eventManager().fire(Events.PRINT_PAUSED, payload)
|
||||
|
||||
def increasePasses(self):
|
||||
self._log("increase Passes")
|
||||
self._passes += 1
|
||||
self._log("increased Passes to %d" % self._passes)
|
||||
|
||||
def degreasePasses(self):
|
||||
self._log("degrease Passes")
|
||||
self._passes -= 1
|
||||
self._log("degrease Passes to %d" % self._passes)
|
||||
|
||||
def getStateString(self):
|
||||
if self._state == self.STATE_NONE:
|
||||
|
|
@ -1167,6 +1186,12 @@ class PrintingGcodeFileInformation(PrintingFileInformation):
|
|||
pass
|
||||
self._handle = None
|
||||
|
||||
def resetToBeginning(self):
|
||||
"""
|
||||
resets the file handle so you can read from the beginning again.
|
||||
"""
|
||||
self._handle = open(self._filename, "r")
|
||||
|
||||
def getNext(self):
|
||||
"""
|
||||
Retrieves the next line for printing.
|
||||
|
|
|
|||
Loading…
Reference in a new issue