Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAlessandro Ranellucci <aar@cpan.org>2013-07-13 22:23:03 +0400
committerAlessandro Ranellucci <aar@cpan.org>2013-07-13 22:23:03 +0400
commit6affa232979ce2291e82a182a246d239aae2a99e (patch)
tree6cc9514a985a40301efbbd19d32616b0d53147bc /lib
parent00683195c85c1479d15c1792179eba1149dcc36d (diff)
Show repair stats in object info dialog
Diffstat (limited to 'lib')
-rw-r--r--lib/Slic3r/Format/STL.pm2
-rw-r--r--lib/Slic3r/GUI/Plater.pm2
-rw-r--r--lib/Slic3r/GUI/Plater/ObjectDialog.pm28
-rw-r--r--lib/Slic3r/Model.pm1
4 files changed, 28 insertions, 5 deletions
diff --git a/lib/Slic3r/Format/STL.pm b/lib/Slic3r/Format/STL.pm
index 48b242933..26071f384 100644
--- a/lib/Slic3r/Format/STL.pm
+++ b/lib/Slic3r/Format/STL.pm
@@ -13,7 +13,7 @@ sub read_file {
my ($vertices, $facets) = @{$tmesh->ToPerl};
my $model = Slic3r::Model->new;
- my $object = $model->add_object(vertices => $vertices);
+ my $object = $model->add_object(vertices => $vertices, mesh_stats => $tmesh->stats);
my $volume = $object->add_volume(facets => $facets);
return $model;
}
diff --git a/lib/Slic3r/GUI/Plater.pm b/lib/Slic3r/GUI/Plater.pm
index d9ac19c5b..877e53fee 100644
--- a/lib/Slic3r/GUI/Plater.pm
+++ b/lib/Slic3r/GUI/Plater.pm
@@ -317,6 +317,7 @@ sub load_file {
input_file => $input_file,
input_file_object_id => $i,
model_object => $model->objects->[$i],
+ mesh_stats => $model->objects->[$i]->mesh_stats, # so that we can free model_object
instances => [
$model->objects->[$i]->instances
? (map $_->offset, @{$model->objects->[$i]->instances})
@@ -1084,6 +1085,7 @@ has 'thumbnail' => (is => 'rw', trigger => \&_transform_thumbnail);
has 'transformed_thumbnail' => (is => 'rw');
has 'thumbnail_scaling_factor' => (is => 'rw', trigger => \&_transform_thumbnail);
has 'layer_height_ranges' => (is => 'rw', default => sub { [] }); # [ z_min, z_max, layer_height ]
+has 'mesh_stats' => (is => 'rw');
# statistics
has 'facets' => (is => 'rw');
diff --git a/lib/Slic3r/GUI/Plater/ObjectDialog.pm b/lib/Slic3r/GUI/Plater/ObjectDialog.pm
index 4fc838841..214df0e2c 100644
--- a/lib/Slic3r/GUI/Plater/ObjectDialog.pm
+++ b/lib/Slic3r/GUI/Plater/ObjectDialog.pm
@@ -10,7 +10,7 @@ use base 'Wx::Dialog';
sub new {
my $class = shift;
my ($parent, %params) = @_;
- my $self = $class->SUPER::new($parent, -1, "Object", wxDefaultPosition, [500,350], wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER);
+ my $self = $class->SUPER::new($parent, -1, "Object", wxDefaultPosition, [500,500], wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER);
$self->{object} = $params{object};
$self->{tabpanel} = Wx::Notebook->new($self, -1, wxDefaultPosition, wxDefaultSize, wxNB_TOP | wxTAB_TRAVERSAL);
@@ -50,7 +50,7 @@ sub new {
my $self = $class->SUPER::new($parent, -1, wxDefaultPosition, wxDefaultSize);
$self->{object} = $params{object};
- my $grid_sizer = Wx::FlexGridSizer->new(3, 2, 10, 5);
+ my $grid_sizer = Wx::FlexGridSizer->new(3, 2, 5, 5);
$grid_sizer->SetFlexibleDirection(wxHORIZONTAL);
$grid_sizer->AddGrowableCol(1);
@@ -76,14 +76,34 @@ sub get_properties {
my $self = shift;
my $object = $self->{object};
- return [
+ my $properties = [
['Name' => $object->name],
['Size' => sprintf "%.2f x %.2f x %.2f", @{$object->transformed_size}],
['Facets' => $object->facets],
['Vertices' => $object->vertices],
['Materials' => $object->materials],
- ['Two-Manifold' => $object->is_manifold ? 'Yes' : 'No'],
];
+
+ if (my $stats = $object->mesh_stats) {
+ push @$properties,
+ [ 'Shells' => $stats->{number_of_parts} ],
+ [ 'Volume' => sprintf('%.2f', $stats->{volume} * ($object->scale**3)) ],
+ [ 'Degenerate facets' => $stats->{degenerate_facets} ],
+ [ 'Edges fixed' => $stats->{edges_fixed} ],
+ [ 'Facets removed' => $stats->{facets_removed} ],
+ [ 'Facets added' => $stats->{facets_added} ],
+ [ 'Facets reversed' => $stats->{facets_reversed} ],
+ [ 'Backwards edges' => $stats->{backwards_edges} ],
+ # we don't show normals_fixed because we never provide normals
+ # to admesh, so it generates normals for all facets
+ ;
+ } else {
+ push @$properties,
+ ['Two-Manifold' => $object->is_manifold ? 'Yes' : 'No'],
+ ;
+ }
+
+ return $properties;
}
package Slic3r::GUI::Plater::ObjectDialog::PreviewTab;
diff --git a/lib/Slic3r/Model.pm b/lib/Slic3r/Model.pm
index 71937ef07..ba873da9d 100644
--- a/lib/Slic3r/Model.pm
+++ b/lib/Slic3r/Model.pm
@@ -297,6 +297,7 @@ has 'vertices' => (is => 'ro', default => sub { [] });
has 'volumes' => (is => 'ro', default => sub { [] });
has 'instances' => (is => 'rw');
has 'layer_height_ranges' => (is => 'rw', default => sub { [] }); # [ z_min, z_max, layer_height ]
+has 'mesh_stats' => (is => 'rw');
has '_bounding_box' => (is => 'rw');
sub add_volume {