mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-07 06:57:28 -06:00
Handle negative layers in the Layer view
Offset all layers by the minimum layer count. This makes raft just a minor special case when processing layers instead of needing to adjust everything. Contributes to CURA-653
This commit is contained in:
parent
2afea115da
commit
e5cc84cb3e
1 changed files with 17 additions and 4 deletions
|
@ -68,12 +68,22 @@ class ProcessSlicedLayersJob(Job):
|
|||
layer_data = LayerData.LayerData()
|
||||
layer_count = len(self._layers)
|
||||
|
||||
# Find the minimum layer number
|
||||
# When using a raft, the raft layers are sent as layers < 0. Instead of allowing layers < 0, we
|
||||
# instead simply offset all other layers so the lowest layer is always 0.
|
||||
min_layer_number = 0
|
||||
for layer in self._layers:
|
||||
if(layer.id < min_layer_number):
|
||||
min_layer_number = layer.id
|
||||
|
||||
current_layer = 0
|
||||
|
||||
for layer in self._layers:
|
||||
layer_data.addLayer(layer.id)
|
||||
layer_data.setLayerHeight(layer.id, layer.height)
|
||||
layer_data.setLayerThickness(layer.id, layer.thickness)
|
||||
abs_layer_number = layer.id + abs(min_layer_number)
|
||||
|
||||
layer_data.addLayer(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("polygons")):
|
||||
polygon = layer.getRepeatedMessage("polygons", p)
|
||||
|
@ -91,7 +101,7 @@ class ProcessSlicedLayersJob(Job):
|
|||
|
||||
new_points /= 1000
|
||||
|
||||
layer_data.addPolygon(layer.id, polygon.type, new_points, polygon.line_width)
|
||||
layer_data.addPolygon(abs_layer_number, polygon.type, new_points, polygon.line_width)
|
||||
Job.yieldThread()
|
||||
Job.yieldThread()
|
||||
current_layer += 1
|
||||
|
@ -135,6 +145,9 @@ class ProcessSlicedLayersJob(Job):
|
|||
if self._progress:
|
||||
self._progress.hide()
|
||||
|
||||
# Clear the unparsed layers. This saves us a bunch of memory if the Job does not get destroyed.
|
||||
self._layers = None
|
||||
|
||||
def _onActiveViewChanged(self):
|
||||
if self.isRunning():
|
||||
if Application.getInstance().getController().getActiveView().getPluginId() == "LayerView":
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue