mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-25 15:44:04 -06:00
Merge branch '4.6'
This commit is contained in:
commit
c79d7d89b3
2 changed files with 36 additions and 30 deletions
|
@ -1254,7 +1254,11 @@ class MachineManager(QObject):
|
||||||
return
|
return
|
||||||
Logger.log("i", "Attempting to switch the printer type to [%s]", machine_name)
|
Logger.log("i", "Attempting to switch the printer type to [%s]", machine_name)
|
||||||
# Get the definition id corresponding to this machine name
|
# Get the definition id corresponding to this machine name
|
||||||
machine_definition_id = CuraContainerRegistry.getInstance().findDefinitionContainers(name = machine_name)[0].getId()
|
definitions = CuraContainerRegistry.getInstance().findDefinitionContainers(name=machine_name)
|
||||||
|
if not definitions:
|
||||||
|
Logger.log("e", "Unable to switch printer type since it could not be found!")
|
||||||
|
return
|
||||||
|
machine_definition_id = definitions[0].getId()
|
||||||
# Try to find a machine with the same network key
|
# Try to find a machine with the same network key
|
||||||
metadata_filter = {"group_id": self._global_container_stack.getMetaDataEntry("group_id")}
|
metadata_filter = {"group_id": self._global_container_stack.getMetaDataEntry("group_id")}
|
||||||
new_machine = self.getMachine(machine_definition_id, metadata_filter = metadata_filter)
|
new_machine = self.getMachine(machine_definition_id, metadata_filter = metadata_filter)
|
||||||
|
|
|
@ -38,36 +38,38 @@ class RetractContinue(Script):
|
||||||
current_x = self.getValue(line, "X", current_x)
|
current_x = self.getValue(line, "X", current_x)
|
||||||
current_y = self.getValue(line, "Y", current_y)
|
current_y = self.getValue(line, "Y", current_y)
|
||||||
if self.getValue(line, "G") == 1:
|
if self.getValue(line, "G") == 1:
|
||||||
if self.getValue(line, "E"):
|
if not self.getValue(line, "E"): # Either None or 0: Not a retraction then.
|
||||||
new_e = self.getValue(line, "E")
|
continue
|
||||||
if new_e >= current_e: # Not a retraction.
|
new_e = self.getValue(line, "E")
|
||||||
continue
|
if new_e - current_e >= -0.0001: # Not a retraction. Account for floating point rounding errors.
|
||||||
# A retracted travel move may consist of multiple commands, due to combing.
|
|
||||||
# This continues retracting over all of these moves and only unretracts at the end.
|
|
||||||
delta_line = 1
|
|
||||||
dx = current_x # Track the difference in X for this move only to compute the length of the travel.
|
|
||||||
dy = current_y
|
|
||||||
while line_number + delta_line < len(lines) and self.getValue(lines[line_number + delta_line], "G") != 1:
|
|
||||||
travel_move = lines[line_number + delta_line]
|
|
||||||
if self.getValue(travel_move, "G") != 0:
|
|
||||||
delta_line += 1
|
|
||||||
continue
|
|
||||||
travel_x = self.getValue(travel_move, "X", dx)
|
|
||||||
travel_y = self.getValue(travel_move, "Y", dy)
|
|
||||||
f = self.getValue(travel_move, "F", "no f")
|
|
||||||
length = math.sqrt((travel_x - dx) * (travel_x - dx) + (travel_y - dy) * (travel_y - dy)) # Length of the travel move.
|
|
||||||
new_e -= length * extra_retraction_speed # New retraction is by ratio of this travel move.
|
|
||||||
if f == "no f":
|
|
||||||
new_travel_move = "G1 X{travel_x} Y{travel_y} E{new_e}".format(travel_x = travel_x, travel_y = travel_y, new_e = new_e)
|
|
||||||
else:
|
|
||||||
new_travel_move = "G1 F{f} X{travel_x} Y{travel_y} E{new_e}".format(f = f, travel_x = travel_x, travel_y = travel_y, new_e = new_e)
|
|
||||||
lines[line_number + delta_line] = new_travel_move
|
|
||||||
|
|
||||||
delta_line += 1
|
|
||||||
dx = travel_x
|
|
||||||
dy = travel_y
|
|
||||||
|
|
||||||
current_e = new_e
|
current_e = new_e
|
||||||
|
continue
|
||||||
|
# A retracted travel move may consist of multiple commands, due to combing.
|
||||||
|
# This continues retracting over all of these moves and only unretracts at the end.
|
||||||
|
delta_line = 1
|
||||||
|
dx = current_x # Track the difference in X for this move only to compute the length of the travel.
|
||||||
|
dy = current_y
|
||||||
|
while line_number + delta_line < len(lines) and self.getValue(lines[line_number + delta_line], "G") != 1:
|
||||||
|
travel_move = lines[line_number + delta_line]
|
||||||
|
if self.getValue(travel_move, "G") != 0:
|
||||||
|
delta_line += 1
|
||||||
|
continue
|
||||||
|
travel_x = self.getValue(travel_move, "X", dx)
|
||||||
|
travel_y = self.getValue(travel_move, "Y", dy)
|
||||||
|
f = self.getValue(travel_move, "F", "no f")
|
||||||
|
length = math.sqrt((travel_x - dx) * (travel_x - dx) + (travel_y - dy) * (travel_y - dy)) # Length of the travel move.
|
||||||
|
new_e -= length * extra_retraction_speed # New retraction is by ratio of this travel move.
|
||||||
|
if f == "no f":
|
||||||
|
new_travel_move = "G1 X{travel_x} Y{travel_y} E{new_e}".format(travel_x = travel_x, travel_y = travel_y, new_e = new_e)
|
||||||
|
else:
|
||||||
|
new_travel_move = "G1 F{f} X{travel_x} Y{travel_y} E{new_e}".format(f = f, travel_x = travel_x, travel_y = travel_y, new_e = new_e)
|
||||||
|
lines[line_number + delta_line] = new_travel_move
|
||||||
|
|
||||||
|
delta_line += 1
|
||||||
|
dx = travel_x
|
||||||
|
dy = travel_y
|
||||||
|
|
||||||
|
current_e = new_e
|
||||||
|
|
||||||
new_layer = "\n".join(lines)
|
new_layer = "\n".join(lines)
|
||||||
data[layer_number] = new_layer
|
data[layer_number] = new_layer
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue