-
-
Notifications
You must be signed in to change notification settings - Fork 889
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CURA-11873 interleaved prime tower bad raft #2078
Conversation
Previously the material_print_temp_prepend setting was taken care of only for non-Griffin flavor. This logic is now also applied for Griffin, and the setting is properly applied. CURA-11868
Previously we would calculate the most appropriate layer to do the priming of an extruder, but when using a prime blob the extruder needs to be primed at first layer, which won't happen when using a raft. We now then for priming at first layer when having a prime blob, and process priming after the raft base layer has been printed. CURA-11868
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I remember implementing some logic where you could determine per layer nr what raft layer is printed. This PR seems to re-implement a lot of that logic.
Lines 199 to 229 in 8a3debd
Raft::LayerType Raft::getLayerType(LayerIndex layer_index) | |
{ | |
const Settings& mesh_group_settings = Application::getInstance().current_slice_->scene.current_mesh_group->settings; | |
const ExtruderTrain& base_train = mesh_group_settings.get<ExtruderTrain&>("raft_base_extruder_nr"); | |
const ExtruderTrain& interface_train = mesh_group_settings.get<ExtruderTrain&>("raft_interface_extruder_nr"); | |
const ExtruderTrain& surface_train = mesh_group_settings.get<ExtruderTrain&>("raft_surface_extruder_nr"); | |
const auto airgap = Raft::getFillerLayerCount(); | |
const auto interface_layers = interface_train.settings_.get<size_t>("raft_interface_layers"); | |
const auto surface_layers = surface_train.settings_.get<size_t>("raft_surface_layers"); | |
if (layer_index < -airgap - surface_layers - interface_layers) | |
{ | |
return LayerType::RaftBase; | |
} | |
if (layer_index < -airgap - surface_layers) | |
{ | |
return LayerType::RaftInterface; | |
} | |
if (layer_index < -airgap) | |
{ | |
return LayerType::RaftSurface; | |
} | |
else if (layer_index < 0) | |
{ | |
return LayerType::Airgap; | |
} | |
else | |
{ | |
return LayerType::Model; | |
} | |
} |
Does it make sense to re-use some of that code?
Yes it does ! I did it where it was possible, but maybe there are other parts of the code where it could also be used. I will try to keep that in mind. |
The recent addition of the "interleaved" prime tower didn't really consider the use of the raft, which can use various extruders combinations. This PR fixes cases were some prime tower layers were completely missing while printing the raft, resulting in unusable interleaved prime tower.
The first 2 commits do some code simplification that is now possible due to the changed prime tower raft a few months ago. Before that, the prime tower had a regular raft below it, which is not the case anymore.
The last 2 commits actually handle the prime tower generation, properly taking care of the raft.
CURA-11873