FIX: too slow slice in brim generate
1.Cache extruder_brim_areas jira: STUDIO-11478 Signed-off-by: xun.zhang <xun.zhang@bambulab.com> Change-Id: I370aad43b043e72a674da79271a806d3b3d97ffa
This commit is contained in:
parent
e7c94ed79e
commit
b48c8c3547
|
@ -1067,6 +1067,16 @@ static ExPolygons outer_inner_brim_area(const Print& print,
|
|||
expolygons_append(no_brim_area, expolyFromLines);
|
||||
}
|
||||
|
||||
std::vector<ExPolygons> extruder_no_brim_area_cache(extruder_nums, no_brim_area);
|
||||
for (int extruder_id = 0; extruder_id < extruder_nums; ++extruder_id) {
|
||||
auto bedPoly = extruder_unprintable_area[extruder_id];
|
||||
auto bedExPoly = diff_ex((offset(bedPoly, scale_(30.), jtRound, SCALED_RESOLUTION)), {bedPoly});
|
||||
if (!bedExPoly.empty()) {
|
||||
extruder_no_brim_area_cache[extruder_id].push_back(bedExPoly.front());
|
||||
}
|
||||
extruder_no_brim_area_cache[extruder_id] = offset2_ex(extruder_no_brim_area_cache[extruder_id], scaled_flow_width, -scaled_flow_width); // connect scattered small areas to prevent generating very small brims
|
||||
}
|
||||
|
||||
for (const PrintObject* object : print.objects()) {
|
||||
ExPolygons extruder_no_brim_area = no_brim_area;
|
||||
auto iter = std::find_if(objPrintVec.begin(), objPrintVec.end(), [object](const std::pair<ObjectID, unsigned int>& item) {
|
||||
|
@ -1075,13 +1085,7 @@ static ExPolygons outer_inner_brim_area(const Print& print,
|
|||
|
||||
if (iter != objPrintVec.end()) {
|
||||
int extruder_id = filament_map[iter->second - 1] - 1;
|
||||
auto bedPoly = extruder_unprintable_area[extruder_id];
|
||||
auto bedExPoly = diff_ex((offset(bedPoly, scale_(30.), jtRound, SCALED_RESOLUTION)), {bedPoly});
|
||||
if (!bedExPoly.empty()) {
|
||||
extruder_no_brim_area.push_back(bedExPoly.front());
|
||||
}
|
||||
extruder_no_brim_area = offset2_ex(extruder_no_brim_area, scaled_flow_width, -scaled_flow_width); // connect scattered small areas to prevent generating very small brims
|
||||
|
||||
extruder_no_brim_area = extruder_no_brim_area_cache[extruder_id];
|
||||
}
|
||||
|
||||
if (brimAreaMap.find(object->id()) != brimAreaMap.end()) {
|
||||
|
|
Loading…
Reference in New Issue