mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-05-11 09:49:07 +08:00
Skip geometry from unfinished steps in 3D rendering
This commit is contained in:
parent
b782351fd3
commit
3d500ca317
@ -924,6 +924,7 @@ use base qw(Slic3r::GUI::3DScene::Base);
|
|||||||
use OpenGL qw(:glconstants :gluconstants :glufunctions);
|
use OpenGL qw(:glconstants :gluconstants :glufunctions);
|
||||||
use List::Util qw(first);
|
use List::Util qw(first);
|
||||||
use Slic3r::Geometry qw(scale unscale epsilon);
|
use Slic3r::Geometry qw(scale unscale epsilon);
|
||||||
|
use Slic3r::Print::State ':steps';
|
||||||
|
|
||||||
use constant COLORS => [ [1,1,0,1], [1,0.5,0.5,1], [0.5,1,0.5,1], [0.5,0.5,1,1] ];
|
use constant COLORS => [ [1,1,0,1], [1,0.5,0.5,1], [0.5,1,0.5,1], [0.5,0.5,1,1] ];
|
||||||
|
|
||||||
@ -1102,14 +1103,18 @@ sub load_print_object_toolpaths {
|
|||||||
|
|
||||||
foreach my $copy (@{ $object->_shifted_copies }) {
|
foreach my $copy (@{ $object->_shifted_copies }) {
|
||||||
foreach my $layerm (@{$layer->regions}) {
|
foreach my $layerm (@{$layer->regions}) {
|
||||||
|
if ($object->step_done(STEP_PERIMETERS)) {
|
||||||
$self->_extrusionentity_to_verts($layerm->perimeters, $top_z, $copy,
|
$self->_extrusionentity_to_verts($layerm->perimeters, $top_z, $copy,
|
||||||
\@perim_qverts, \@perim_qnorms, \@perim_tverts, \@perim_tnorms);
|
\@perim_qverts, \@perim_qnorms, \@perim_tverts, \@perim_tnorms);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($object->step_done(STEP_INFILL)) {
|
||||||
$self->_extrusionentity_to_verts($layerm->fills, $top_z, $copy,
|
$self->_extrusionentity_to_verts($layerm->fills, $top_z, $copy,
|
||||||
\@infill_qverts, \@infill_qnorms, \@infill_tverts, \@infill_tnorms);
|
\@infill_qverts, \@infill_qnorms, \@infill_tverts, \@infill_tnorms);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($layer->isa('Slic3r::Layer::Support')) {
|
if ($layer->isa('Slic3r::Layer::Support') && $object->step_done(STEP_SUPPORTMATERIAL)) {
|
||||||
$self->_extrusionentity_to_verts($layer->support_fills, $top_z, $copy,
|
$self->_extrusionentity_to_verts($layer->support_fills, $top_z, $copy,
|
||||||
\@support_qverts, \@support_qnorms, \@support_tverts, \@support_tnorms);
|
\@support_qverts, \@support_qnorms, \@support_tverts, \@support_tnorms);
|
||||||
|
|
||||||
|
@ -28,7 +28,6 @@ use constant TB_SCALE => &Wx::NewId;
|
|||||||
use constant TB_SPLIT => &Wx::NewId;
|
use constant TB_SPLIT => &Wx::NewId;
|
||||||
use constant TB_CUT => &Wx::NewId;
|
use constant TB_CUT => &Wx::NewId;
|
||||||
use constant TB_SETTINGS => &Wx::NewId;
|
use constant TB_SETTINGS => &Wx::NewId;
|
||||||
use constant CONFIG_TIMER_ID => &Wx::NewId;
|
|
||||||
|
|
||||||
# package variables to avoid passing lexicals to threads
|
# package variables to avoid passing lexicals to threads
|
||||||
our $THUMBNAIL_DONE_EVENT : shared = Wx::NewEventType;
|
our $THUMBNAIL_DONE_EVENT : shared = Wx::NewEventType;
|
||||||
@ -53,8 +52,6 @@ sub new {
|
|||||||
$self->{model} = Slic3r::Model->new;
|
$self->{model} = Slic3r::Model->new;
|
||||||
$self->{print} = Slic3r::Print->new;
|
$self->{print} = Slic3r::Print->new;
|
||||||
$self->{objects} = [];
|
$self->{objects} = [];
|
||||||
$self->{apply_config_timer} = Wx::Timer->new($self, CONFIG_TIMER_ID)
|
|
||||||
if $Slic3r::have_threads;
|
|
||||||
|
|
||||||
$self->{print}->set_status_cb(sub {
|
$self->{print}->set_status_cb(sub {
|
||||||
my ($percent, $message) = @_;
|
my ($percent, $message) = @_;
|
||||||
@ -291,10 +288,14 @@ sub new {
|
|||||||
Slic3r::thread_cleanup();
|
Slic3r::thread_cleanup();
|
||||||
});
|
});
|
||||||
|
|
||||||
EVT_TIMER($self, CONFIG_TIMER_ID, sub {
|
if ($Slic3r::have_threads) {
|
||||||
|
my $timer_id = Wx::NewId();
|
||||||
|
$self->{apply_config_timer} = Wx::Timer->new($self, $timer_id);
|
||||||
|
EVT_TIMER($self, $timer_id, sub {
|
||||||
my ($self, $event) = @_;
|
my ($self, $event) = @_;
|
||||||
$self->async_apply_config;
|
$self->async_apply_config;
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
$self->{canvas}->update_bed_size;
|
$self->{canvas}->update_bed_size;
|
||||||
if ($self->{canvas3D}) {
|
if ($self->{canvas3D}) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user