mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 14:37:29 -06:00
Catch error when loading gcode with more extruders than the current machine.
CURA-10183
This commit is contained in:
parent
8d6ab7aa30
commit
ba63109d84
1 changed files with 9 additions and 4 deletions
|
@ -32,6 +32,7 @@ class FlavorParser:
|
|||
"""This parser is intended to interpret the common firmware codes among all the different flavors"""
|
||||
|
||||
MAX_EXTRUDER_COUNT = 16
|
||||
DEFAULT_FILAMENT_DIAMETER = 2.85
|
||||
|
||||
def __init__(self) -> None:
|
||||
CuraApplication.getInstance().hideMessageSignal.connect(self._onHideMessage)
|
||||
|
@ -48,7 +49,7 @@ class FlavorParser:
|
|||
self._is_layers_in_file = False # Does the Gcode have the layers comment?
|
||||
self._extruder_offsets = {} # type: Dict[int, List[float]] # Offsets for multi extruders. key is index, value is [x-offset, y-offset]
|
||||
self._current_layer_thickness = 0.2 # default
|
||||
self._filament_diameter = 2.85 # default
|
||||
self._current_filament_diameter = 2.85 # default
|
||||
self._previous_extrusion_value = 0.0 # keep track of the filament retractions
|
||||
|
||||
CuraApplication.getInstance().getPreferences().addPreference("gcodereader/show_caution", True)
|
||||
|
@ -152,7 +153,7 @@ class FlavorParser:
|
|||
|
||||
def _calculateLineWidth(self, current_point: Position, previous_point: Position, current_extrusion: float, previous_extrusion: float, layer_thickness: float) -> float:
|
||||
# Area of the filament
|
||||
Af = (self._filament_diameter / 2) ** 2 * numpy.pi
|
||||
Af = (self._current_filament_diameter / 2) ** 2 * numpy.pi
|
||||
# Length of the extruded filament
|
||||
de = current_extrusion - previous_extrusion
|
||||
# Volume of the extruded filament
|
||||
|
@ -287,7 +288,11 @@ class FlavorParser:
|
|||
|
||||
def processTCode(self, global_stack, T: int, line: str, position: Position, path: List[List[Union[float, int]]]) -> Position:
|
||||
self._extruder_number = T
|
||||
self._filament_diameter = global_stack.extruderList[self._extruder_number].getProperty("material_diameter", "value")
|
||||
try:
|
||||
self._current_filament_diameter = global_stack.extruderList[self._extruder_number].getProperty("material_diameter", "value")
|
||||
except IndexError:
|
||||
self._current_filament_diameter = self.DEFAULT_FILAMENT_DIAMETER
|
||||
|
||||
if self._extruder_number + 1 > len(position.e):
|
||||
self._extrusion_length_offset.extend([0] * (self._extruder_number - len(position.e) + 1))
|
||||
position.e.extend([0] * (self._extruder_number - len(position.e) + 1))
|
||||
|
@ -323,7 +328,7 @@ class FlavorParser:
|
|||
if not global_stack:
|
||||
return None
|
||||
|
||||
self._filament_diameter = global_stack.extruderList[self._extruder_number].getProperty("material_diameter", "value")
|
||||
self._current_filament_diameter = global_stack.extruderList[self._extruder_number].getProperty("material_diameter", "value")
|
||||
|
||||
scene_node = CuraSceneNode()
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue