|
@@ -2,7 +2,7 @@
|
|
# Cura is released under the terms of the LGPLv3 or higher.
|
|
# Cura is released under the terms of the LGPLv3 or higher.
|
|
|
|
|
|
from UM.Application import Application
|
|
from UM.Application import Application
|
|
-from typing import Any
|
|
|
|
|
|
+from typing import Any, Optional
|
|
import numpy
|
|
import numpy
|
|
|
|
|
|
from UM.Logger import Logger
|
|
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)
|
|
__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
|
|
## LayerPolygon, used in ProcessSlicedLayersJob
|
|
- # \param extruder
|
|
|
|
|
|
+ # \param extruder The position of the extruder
|
|
# \param line_types array with line_types
|
|
# \param line_types array with line_types
|
|
# \param data new_points
|
|
# \param data new_points
|
|
# \param line_widths array with line widths
|
|
# \param line_widths array with line widths
|
|
# \param line_thicknesses: array with type as index and thickness as value
|
|
# \param line_thicknesses: array with type as index and thickness as value
|
|
# \param line_feedrates array with line feedrates
|
|
# \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._extruder = extruder
|
|
self._types = line_types
|
|
self._types = line_types
|
|
for i in range(len(self._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
|
|
# Buffering the colors shouldn't be necessary as it is not
|
|
# re-used and can save alot of memory usage.
|
|
# re-used and can save alot of memory usage.
|
|
self._color_map = LayerPolygon.getColorMap()
|
|
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
|
|
# 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.
|
|
# 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._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.
|
|
# 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)
|
|
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)
|
|
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 extruders : vertex numpy array to be filled
|
|
# \param line_types : vertex numpy array to be filled
|
|
# \param line_types : vertex numpy array to be filled
|
|
# \param indices : index 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:
|
|
if self._build_cache_line_mesh_mask is None or self._build_cache_needed_points is None:
|
|
self.buildCache()
|
|
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
|
|
line_mesh_mask = self._build_cache_line_mesh_mask
|
|
needed_points_list = self._build_cache_needed_points
|
|
needed_points_list = self._build_cache_needed_points
|
|
|
|
|