From 1aa5dbafd3394c2860a32acb2b9e979ae271d986 Mon Sep 17 00:00:00 2001 From: Alessandro Ranellucci Date: Mon, 16 Sep 2013 09:58:09 +0200 Subject: [PATCH] Update AMF export code --- lib/Slic3r/Format/AMF.pm | 30 ++++++++++++++++++++---------- lib/Slic3r/GUI/Plater.pm | 3 +-- lib/Slic3r/GUI/SkeinPanel.pm | 3 +-- 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/lib/Slic3r/Format/AMF.pm b/lib/Slic3r/Format/AMF.pm index 0b3bbc1e..d881148f 100644 --- a/lib/Slic3r/Format/AMF.pm +++ b/lib/Slic3r/Format/AMF.pm @@ -49,22 +49,32 @@ sub write_file { printf $fh qq{ \n}, $object_id; printf $fh qq{ \n}; printf $fh qq{ \n}; - foreach my $vertex (@{$object->vertices}, ) { - printf $fh qq{ \n}; - printf $fh qq{ \n}; - printf $fh qq{ %s\n}, $vertex->[X]; - printf $fh qq{ %s\n}, $vertex->[Y]; - printf $fh qq{ %s\n}, $vertex->[Z]; - printf $fh qq{ \n}; - printf $fh qq{ \n}; + my @vertices_offset = (); + { + my $vertices_offset = 0; + foreach my $volume (@{ $object->volumes }) { + push @vertices_offset, $vertices_offset; + my $vertices = $volume->mesh->vertices; + foreach my $vertex (@$vertices) { + printf $fh qq{ \n}; + printf $fh qq{ \n}; + printf $fh qq{ %s\n}, $vertex->[X]; + printf $fh qq{ %s\n}, $vertex->[Y]; + printf $fh qq{ %s\n}, $vertex->[Z]; + printf $fh qq{ \n}; + printf $fh qq{ \n}; + } + $vertices_offset += scalar(@$vertices); + } } printf $fh qq{ \n}; foreach my $volume (@{ $object->volumes }) { + my $vertices_offset = shift @vertices_offset; printf $fh qq{ \n}, (!defined $volume->material_id) ? '' : (sprintf ' materialid="%s"', $volume->material_id); - foreach my $facet (@{$volume->facets}) { + foreach my $facet (@{$volume->mesh->facets}) { printf $fh qq{ \n}; - printf $fh qq{ %d\n}, (4+$_), $facet->[$_], (4+$_) for -3..-1; + printf $fh qq{ %d\n}, $_, $facet->[$_-1] + $vertices_offset, $_ for 1..3; printf $fh qq{ \n}; } printf $fh qq{ \n}; diff --git a/lib/Slic3r/GUI/Plater.pm b/lib/Slic3r/GUI/Plater.pm index a83f4c05..207750ea 100644 --- a/lib/Slic3r/GUI/Plater.pm +++ b/lib/Slic3r/GUI/Plater.pm @@ -789,7 +789,6 @@ sub make_model { my $model_object = $plater_object->get_model_object; my $new_model_object = $model->add_object( - vertices => $model_object->vertices, input_file => $plater_object->input_file, config => $plater_object->config, layer_height_ranges => $plater_object->layer_height_ranges, @@ -798,7 +797,7 @@ sub make_model { foreach my $volume (@{$model_object->volumes}) { $new_model_object->add_volume( material_id => $volume->material_id, - facets => $volume->facets, + mesh => $volume->mesh, ); $model->set_material($volume->material_id || 0, {}); } diff --git a/lib/Slic3r/GUI/SkeinPanel.pm b/lib/Slic3r/GUI/SkeinPanel.pm index dd59cf3e..7f4236b0 100644 --- a/lib/Slic3r/GUI/SkeinPanel.pm +++ b/lib/Slic3r/GUI/SkeinPanel.pm @@ -355,8 +355,7 @@ sub combine_stls { $new_model->set_material($m, { Name => basename($input_files[$m]) }); $new_object->add_volume( material_id => $m, - facets => $model->objects->[0]->volumes->[0]->facets, - vertices => $model->objects->[0]->vertices, + mesh => $model->objects->[0]->volumes->[0]->mesh, ); }