diff --git a/cura/LayerDataBuilder.py b/cura/LayerDataBuilder.py index aab01e7acc..e8d1b8c59f 100755 --- a/cura/LayerDataBuilder.py +++ b/cura/LayerDataBuilder.py @@ -21,13 +21,6 @@ class LayerDataBuilder(MeshBuilder): if layer not in self._layers: self._layers[layer] = Layer(layer) - def addPolygon(self, layer: int, polygon_type, data, line_width, line_thickness, line_feedrate): - if layer not in self._layers: - self.addLayer(layer) - - p = LayerPolygon(self, polygon_type, data, line_width, line_thickness, line_feedrate) - self._layers[layer].polygons.append(p) - def getLayer(self, layer: int) -> Optional[Layer]: return self._layers.get(layer) diff --git a/cura/LayerPolygon.py b/cura/LayerPolygon.py index 1941a558ba..072d5f94f5 100644 --- a/cura/LayerPolygon.py +++ b/cura/LayerPolygon.py @@ -2,7 +2,7 @@ # Cura is released under the terms of the LGPLv3 or higher. from UM.Application import Application -from typing import Any +from typing import Any, Optional import numpy from UM.Logger import Logger @@ -26,13 +26,13 @@ class LayerPolygon: __jump_map = numpy.logical_or(numpy.logical_or(numpy.arange(__number_of_types) == NoneType, numpy.arange(__number_of_types) == MoveCombingType), numpy.arange(__number_of_types) == MoveRetractionType) ## LayerPolygon, used in ProcessSlicedLayersJob - # \param extruder + # \param extruder The position of the extruder # \param line_types array with line_types # \param data new_points # \param line_widths array with line widths # \param line_thicknesses: array with type as index and thickness as value # \param line_feedrates array with line feedrates - def __init__(self, extruder, line_types, data, line_widths, line_thicknesses, line_feedrates): + def __init__(self, extruder: int, line_types: numpy.ndarray, data: numpy.ndarray, line_widths: numpy.ndarray, line_thicknesses: numpy.ndarray, line_feedrates: numpy.ndarray) -> None: self._extruder = extruder self._types = line_types for i in range(len(self._types)): @@ -57,16 +57,16 @@ class LayerPolygon: # Buffering the colors shouldn't be necessary as it is not # re-used and can save alot of memory usage. self._color_map = LayerPolygon.getColorMap() - self._colors = self._color_map[self._types] + self._colors = self._color_map[self._types] # type: numpy.ndarray # When type is used as index returns true if type == LayerPolygon.InfillType or type == LayerPolygon.SkinType or type == LayerPolygon.SupportInfillType # Should be generated in better way, not hardcoded. self._isInfillOrSkinTypeMap = numpy.array([0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1], dtype=numpy.bool) - self._build_cache_line_mesh_mask = None - self._build_cache_needed_points = None + self._build_cache_line_mesh_mask = None # type: Optional[numpy.ndarray] + self._build_cache_needed_points = None # type: Optional[numpy.ndarray] - def buildCache(self): + def buildCache(self) -> None: # For the line mesh we do not draw Infill or Jumps. Therefore those lines are filtered out. self._build_cache_line_mesh_mask = numpy.ones(self._jump_mask.shape, dtype=bool) mesh_line_count = numpy.sum(self._build_cache_line_mesh_mask) @@ -94,10 +94,14 @@ class LayerPolygon: # \param extruders : vertex numpy array to be filled # \param line_types : vertex numpy array to be filled # \param indices : index numpy array to be filled - def build(self, vertex_offset, index_offset, vertices, colors, line_dimensions, feedrates, extruders, line_types, indices): + def build(self, vertex_offset: int, index_offset: int, vertices: numpy.ndarray, colors: numpy.ndarray, line_dimensions: numpy.ndarray, feedrates: numpy.ndarray, extruders: numpy.ndarray, line_types: numpy.ndarray, indices: numpy.ndarray) -> None: if self._build_cache_line_mesh_mask is None or self._build_cache_needed_points is None: self.buildCache() - + + if self._build_cache_line_mesh_mask is None or self._build_cache_needed_points is None: + Logger.log("w", "Failed to build cache for layer polygon") + return + line_mesh_mask = self._build_cache_line_mesh_mask needed_points_list = self._build_cache_needed_points