mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-17 02:22:17 +00:00
FIX: brim generation with extruder overridding in by layer slicing
in brim generation, object's first layer extruders are obtained from regions. If the extruders are changed at certain layers in by layer slicing mode, the extruders from layer regions are not right. this patch fix that issue by updating the extruder overridding in a new member "object_first_layer_wall_extruders" in "print_object" class during constructing "Tool_ordering" class. then using the new member directly when generating brim. besides, support contour, which should be no_brim_area, is obtained from "support_infills" instead of "lslices" of "support_layers" JIRA-ID: https://jira.bambooolab.com/browse/STUDIO-4332 Change-Id: I271d0ea0d8c01c412d4fb9ade5296c6a6471aed6 (cherry picked from commit 9919ce9d1b9105b859273eee4fe9481c4dff6189)
This commit is contained in:
@@ -1450,16 +1450,21 @@ std::map<ObjectID, unsigned int> getObjectExtruderMap(const Print& print) {
|
||||
std::map<ObjectID, unsigned int> objectExtruderMap;
|
||||
for (const PrintObject* object : print.objects()) {
|
||||
// BBS
|
||||
unsigned int objectFirstLayerFirstExtruder = print.config().filament_diameter.size();
|
||||
auto firstLayerRegions = object->layers().front()->regions();
|
||||
if (!firstLayerRegions.empty()) {
|
||||
for (const LayerRegion* regionPtr : firstLayerRegions) {
|
||||
if (regionPtr -> has_extrusions())
|
||||
objectFirstLayerFirstExtruder = std::min(objectFirstLayerFirstExtruder,
|
||||
regionPtr->region().extruder(frExternalPerimeter));
|
||||
if (object->object_first_layer_wall_extruders.empty()){
|
||||
unsigned int objectFirstLayerFirstExtruder = print.config().filament_diameter.size();
|
||||
auto firstLayerRegions = object->layers().front()->regions();
|
||||
if (!firstLayerRegions.empty()) {
|
||||
for (const LayerRegion* regionPtr : firstLayerRegions) {
|
||||
if (regionPtr->has_extrusions())
|
||||
objectFirstLayerFirstExtruder = std::min(objectFirstLayerFirstExtruder,
|
||||
regionPtr->region().extruder(frExternalPerimeter));
|
||||
}
|
||||
}
|
||||
objectExtruderMap.insert(std::make_pair(object->id(), objectFirstLayerFirstExtruder));
|
||||
}
|
||||
else {
|
||||
objectExtruderMap.insert(std::make_pair(object->id(), object->object_first_layer_wall_extruders.front()));
|
||||
}
|
||||
objectExtruderMap.insert(std::make_pair(object->id(), objectFirstLayerFirstExtruder));
|
||||
}
|
||||
return objectExtruderMap;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user