mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-08-05 17:00:42 +08:00
After opening the adaptive layer dialog, trigger reslicing only if necessary
This commit is contained in:
parent
5eab886069
commit
614f4d9ca4
@ -92,8 +92,7 @@ sub new {
|
||||
# object already processed?
|
||||
wxTheApp->CallAfter(sub {
|
||||
if (!$plater->{processed}) {
|
||||
$object->layer_height_spline->suppressUpdate();
|
||||
$self->_trigger_slicing;
|
||||
$self->_trigger_slicing(0); # trigger processing without invalidating STEP_SLICE to keep current height distribution
|
||||
}else{
|
||||
$self->{preview3D}->reload_print($obj_idx);
|
||||
$self->{preview3D}->canvas->zoom_to_volumes;
|
||||
@ -200,7 +199,8 @@ sub reload_preview {
|
||||
|
||||
# Trigger background slicing at the plater
|
||||
sub _trigger_slicing {
|
||||
my ($self) = @_;
|
||||
my ($self, $invalidate) = @_;
|
||||
$invalidate //= 1;
|
||||
my $object = $self->{plater}->{print}->get_object($self->{obj_idx});
|
||||
$self->{model_object}->set_layer_height_spline($self->{object}->layer_height_spline); # push modified spline object to model_object
|
||||
$self->{model_object}->layer_height_spline->updateRequired; # make sure the model_object spline requires update
|
||||
@ -212,10 +212,10 @@ sub _trigger_slicing {
|
||||
$self->{plater}->statusbar->SetStatusText("Slicing cancelled");
|
||||
$self->{plater}->preview_notebook->SetSelection(0);
|
||||
});
|
||||
$object->invalidate_step(STEP_SLICE);
|
||||
$object->invalidate_step(STEP_SLICE) if($invalidate);
|
||||
$self->{plater}->start_background_process;
|
||||
}else{
|
||||
$object->invalidate_step(STEP_SLICE);
|
||||
$object->invalidate_step(STEP_SLICE) if($invalidate);
|
||||
$self->{plater}->schedule_background_process;
|
||||
}
|
||||
}
|
||||
|
@ -515,8 +515,6 @@ ModelObject::add_instance()
|
||||
{
|
||||
ModelInstance* i = new ModelInstance(this);
|
||||
this->instances.push_back(i);
|
||||
this->invalidate_bounding_box();
|
||||
this->layer_height_spline.setObjectHeight(this->raw_bounding_box().size().z);
|
||||
return i;
|
||||
}
|
||||
|
||||
@ -525,8 +523,6 @@ ModelObject::add_instance(const ModelInstance &other)
|
||||
{
|
||||
ModelInstance* i = new ModelInstance(this, other);
|
||||
this->instances.push_back(i);
|
||||
this->invalidate_bounding_box();
|
||||
this->layer_height_spline.setObjectHeight(this->raw_bounding_box().size().z);
|
||||
return i;
|
||||
}
|
||||
|
||||
@ -536,10 +532,6 @@ ModelObject::delete_instance(size_t idx)
|
||||
ModelInstancePtrs::iterator i = this->instances.begin() + idx;
|
||||
delete *i;
|
||||
this->instances.erase(i);
|
||||
if(!this->instances.empty()) {
|
||||
this->layer_height_spline.setObjectHeight(this->raw_bounding_box().size().z);
|
||||
}
|
||||
this->invalidate_bounding_box();
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -580,6 +580,8 @@ std::vector<coordf_t> PrintObject::generate_object_layers(coordf_t first_layer_h
|
||||
coordf_t print_z = first_layer_height;
|
||||
coordf_t height = first_layer_height;
|
||||
|
||||
// Update object size at the spline object to define upper border
|
||||
this->layer_height_spline.setObjectHeight(unscale(this->size.z));
|
||||
if(!this->layer_height_spline.updateRequired()) { // layer heights are already generated, just update layers from spline
|
||||
// we don't need to respect first layer here, it's correctly provided by the spline object
|
||||
result = this->layer_height_spline.getInterpolatedLayers();
|
||||
|
Loading…
x
Reference in New Issue
Block a user