mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-08-13 22:35:51 +08:00
Auto color change: Fixed some cases:
* first layer is a little bit less than all another (like for elephant foot compensation) * ignore small changes of the layer area
This commit is contained in:
parent
5aff44debe
commit
0bb5c2ef88
@ -2057,6 +2057,10 @@ void Control::auto_color_change()
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
if (prev_area - cur_area > delta_area) {
|
if (prev_area - cur_area > delta_area) {
|
||||||
|
// Check percent of the area decrease.
|
||||||
|
// Ignore it, if this value is less than 10%
|
||||||
|
if (cur_area / prev_area > 0.9)
|
||||||
|
continue;
|
||||||
int tick = get_tick_from_value(layer->print_z);
|
int tick = get_tick_from_value(layer->print_z);
|
||||||
if (tick >= 0 && !m_ticks.has_tick(tick)) {
|
if (tick >= 0 && !m_ticks.has_tick(tick)) {
|
||||||
if (m_mode == SingleExtruder) {
|
if (m_mode == SingleExtruder) {
|
||||||
|
@ -713,8 +713,15 @@ void Preview::update_layers_slider(const std::vector<double>& layers_z, bool kee
|
|||||||
int i;
|
int i;
|
||||||
for (i = 1; i < int(0.3 * num_layers); ++ i) {
|
for (i = 1; i < int(0.3 * num_layers); ++ i) {
|
||||||
double cur_area = area(object->get_layer(i)->lslices);
|
double cur_area = area(object->get_layer(i)->lslices);
|
||||||
if (cur_area != bottom_area && fabs(cur_area - bottom_area) > scale_(scale_(1)))
|
if (cur_area != bottom_area && fabs(cur_area - bottom_area) > scale_(scale_(1))) {
|
||||||
|
// but due to the elephant foot compensation, the first layer may be slightly smaller than the others
|
||||||
|
if (i == 1 && fabs(cur_area - bottom_area) / bottom_area < 0.1) {
|
||||||
|
// So, let process this case and use second layer as a bottom
|
||||||
|
bottom_area = cur_area;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (i < int(0.3 * num_layers))
|
if (i < int(0.3 * num_layers))
|
||||||
continue;
|
continue;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user