diff --git a/cura/LayerPolygon.py b/cura/LayerPolygon.py index 628fd78350..858fa11c77 100644 --- a/cura/LayerPolygon.py +++ b/cura/LayerPolygon.py @@ -18,13 +18,14 @@ class LayerPolygon: __jump_map = numpy.logical_or(numpy.logical_or(numpy.arange(11) == NoneType, numpy.arange(11) == MoveCombingType), numpy.arange(11) == MoveRetractionType) - def __init__(self, mesh, extruder, line_types, data, line_widths): + def __init__(self, mesh, extruder, line_types, data, line_widths, line_thicknesses): self._mesh = mesh self._extruder = extruder self._types = line_types self._data = data self._line_widths = line_widths - + self._line_thicknesses = line_thicknesses + self._vertex_begin = 0 self._vertex_end = 0 self._index_begin = 0 @@ -89,8 +90,8 @@ class LayerPolygon: colors[self._vertex_begin:self._vertex_end, :] *= numpy.array([[0.5, 0.5, 0.5, 1.0]], numpy.float32) # Create an array with line widths for each vertex. - line_dimensions[self._vertex_begin:self._vertex_end, :] = numpy.tile(self._line_widths, (1, 2)).reshape((-1, 1))[needed_points_list.ravel()] - line_dimensions[self._vertex_begin:self._vertex_end, 1] = thickness + line_dimensions[self._vertex_begin:self._vertex_end, 0] = numpy.tile(self._line_widths, (1, 2)).reshape((-1, 1))[needed_points_list.ravel()][:, 0] + line_dimensions[self._vertex_begin:self._vertex_end, 1] = numpy.tile(self._line_thicknesses, (1, 2)).reshape((-1, 1))[needed_points_list.ravel()][:, 0] # The relative values of begin and end indices have already been set in buildCache, so we only need to offset them to the parents offset. self._index_begin += index_offset diff --git a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py index f8b80e9da0..7b814d99b4 100644 --- a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py +++ b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py @@ -92,7 +92,6 @@ class ProcessSlicedLayersJob(Job): layer_data.addLayer(abs_layer_number) this_layer = layer_data.getLayer(abs_layer_number) layer_data.setLayerHeight(abs_layer_number, layer.height) - layer_data.setLayerThickness(abs_layer_number, layer.thickness) for p in range(layer.repeatedMessageCount("path_segment")): polygon = layer.getRepeatedMessage("path_segment", p) @@ -110,7 +109,12 @@ class ProcessSlicedLayersJob(Job): line_widths = numpy.fromstring(polygon.line_width, dtype="f4") # Convert bytearray to numpy array line_widths = line_widths.reshape((-1,1)) # We get a linear list of pairs that make up the points, so make numpy interpret them correctly. - + + # In the future, line_thicknesses should be given by CuraEngine as well. + # Currently the infill layer thickness also translates to line width + line_thicknesses = numpy.zeros(line_widths.shape, dtype="f4") + line_thicknesses[:] = layer.thickness / 1000 # from micrometer to millimeter + # Create a new 3D-array, copy the 2D points over and insert the right height. # This uses manual array creation + copy rather than numpy.insert since this is # faster. @@ -124,7 +128,7 @@ class ProcessSlicedLayersJob(Job): new_points[:, 1] = points[:, 2] new_points[:, 2] = -points[:, 1] - this_poly = LayerPolygon.LayerPolygon(layer_data, extruder, line_types, new_points, line_widths) + this_poly = LayerPolygon.LayerPolygon(layer_data, extruder, line_types, new_points, line_widths, line_thicknesses) this_poly.buildCache() this_layer.polygons.append(this_poly)