Making some meaningful progress feedback.
This commit is contained in:
parent
5fe83110cb
commit
fcef1b107e
@ -476,7 +476,7 @@ sub quick_slice {
|
|||||||
|
|
||||||
# show processbar dialog
|
# show processbar dialog
|
||||||
$progress_dialog = Wx::ProgressDialog->new(L('Slicing…'), L("Processing ").$input_file_basename."…",
|
$progress_dialog = Wx::ProgressDialog->new(L('Slicing…'), L("Processing ").$input_file_basename."…",
|
||||||
100, $self, 0);
|
100, $self, 4);
|
||||||
$progress_dialog->Pulse;
|
$progress_dialog->Pulse;
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -113,10 +113,18 @@ sub export_png {
|
|||||||
my $self = shift;
|
my $self = shift;
|
||||||
my %params = @_;
|
my %params = @_;
|
||||||
|
|
||||||
$_->slice for @{$self->objects};
|
my @sobjects = @{$self->objects};
|
||||||
|
my $objnum = scalar @sobjects;
|
||||||
|
for(my $oi = 0; $oi < $objnum; $oi++)
|
||||||
|
{
|
||||||
|
$sobjects[$oi]->slice;
|
||||||
|
$self->status_cb->(($oi + 1)*100/$objnum - 1, "Slicing...");
|
||||||
|
}
|
||||||
|
|
||||||
my $fh = $params{output_file};
|
my $fh = $params{output_file};
|
||||||
|
$self->status_cb->(90, "Exporting zipped archive...");
|
||||||
$self->print_to_png($fh);
|
$self->print_to_png($fh);
|
||||||
|
$self->status_cb->(100, "Done.");
|
||||||
}
|
}
|
||||||
|
|
||||||
# Export SVG slices for the offline SLA printing.
|
# Export SVG slices for the offline SLA printing.
|
||||||
@ -125,7 +133,13 @@ sub export_svg {
|
|||||||
my $self = shift;
|
my $self = shift;
|
||||||
my %params = @_;
|
my %params = @_;
|
||||||
|
|
||||||
$_->slice for @{$self->objects};
|
my @sobjects = @{$self->objects};
|
||||||
|
my $objnum = scalar @sobjects;
|
||||||
|
for(my $oi = 0; $oi < $objnum; $oi++)
|
||||||
|
{
|
||||||
|
$sobjects[$oi]->slice;
|
||||||
|
$self->status_cb->(($oi + 1)*100/$objnum - 1, "Slicing...");
|
||||||
|
}
|
||||||
|
|
||||||
my $fh = $params{output_fh};
|
my $fh = $params{output_fh};
|
||||||
if (!$fh) {
|
if (!$fh) {
|
||||||
|
@ -35,7 +35,7 @@ sub slice {
|
|||||||
|
|
||||||
return if $self->step_done(STEP_SLICE);
|
return if $self->step_done(STEP_SLICE);
|
||||||
$self->set_step_started(STEP_SLICE);
|
$self->set_step_started(STEP_SLICE);
|
||||||
$self->print->status_cb->(10, "Processing triangulated mesh");
|
# $self->print->status_cb->(10, "Processing triangulated mesh");
|
||||||
|
|
||||||
$self->_slice;
|
$self->_slice;
|
||||||
|
|
||||||
|
@ -1254,6 +1254,7 @@ std::string Print::output_filepath(const std::string &path)
|
|||||||
void Print::set_status(int percent, const std::string &message)
|
void Print::set_status(int percent, const std::string &message)
|
||||||
{
|
{
|
||||||
printf("Print::status %d => %s\n", percent, message.c_str());
|
printf("Print::status %d => %s\n", percent, message.c_str());
|
||||||
|
std::cout.flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1463,9 +1464,13 @@ void Print::print_to(std::string dirpath,
|
|||||||
FilePrinter<format> printer(std::forward<Args>(args)...);
|
FilePrinter<format> printer(std::forward<Args>(args)...);
|
||||||
printer.layers(layers.size()); // Allocate space for all the layers
|
printer.layers(layers.size()); // Allocate space for all the layers
|
||||||
|
|
||||||
|
set_status(0, "Rasterizing and compressing sliced layers");
|
||||||
|
|
||||||
|
int st_prev = 0;
|
||||||
|
|
||||||
// Method that prints one layer
|
// Method that prints one layer
|
||||||
auto process_layer = [this, &layers, &printer, print_bb, dir, cx, cy]
|
auto process_layer = [this, &layers, &printer, &st_prev,
|
||||||
(unsigned layer_id)
|
print_bb, dir, cx, cy] (unsigned layer_id)
|
||||||
{
|
{
|
||||||
Layer& l = *(layers[layer_id]);
|
Layer& l = *(layers[layer_id]);
|
||||||
|
|
||||||
@ -1504,7 +1509,11 @@ void Print::print_to(std::string dirpath,
|
|||||||
|
|
||||||
printer.finishLayer(layer_id); // Finish the layer for later saving it.
|
printer.finishLayer(layer_id); // Finish the layer for later saving it.
|
||||||
|
|
||||||
std::cout << "Layer " << layer_id << " processed." << std::endl;
|
auto st = static_cast<int>(layer_id*100.0/layers.size());
|
||||||
|
if(st > st_prev) {
|
||||||
|
set_status(st, "processed");
|
||||||
|
st_prev = st;
|
||||||
|
}
|
||||||
|
|
||||||
// printer.saveLayer(layer_id, dir); We could save the layer immediately
|
// printer.saveLayer(layer_id, dir); We could save the layer immediately
|
||||||
};
|
};
|
||||||
@ -1518,7 +1527,9 @@ void Print::print_to(std::string dirpath,
|
|||||||
// for(unsigned l = 0; l < layers.size(); ++l) process_layer(l);
|
// for(unsigned l = 0; l < layers.size(); ++l) process_layer(l);
|
||||||
|
|
||||||
// Save the print into the file system.
|
// Save the print into the file system.
|
||||||
|
set_status(0, "Writing layers to disk");
|
||||||
printer.save(dir);
|
printer.save(dir);
|
||||||
|
set_status(100, "Done.");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Print::print_to_png(std::string dirpath, long width_px, long height_px,
|
void Print::print_to_png(std::string dirpath, long width_px, long height_px,
|
||||||
|
Loading…
Reference in New Issue
Block a user