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/utils
diff options
context:
space:
mode:
authorAlessandro Ranellucci <aar@cpan.org>2012-08-29 18:49:38 +0400
committerAlessandro Ranellucci <aar@cpan.org>2012-08-29 19:12:32 +0400
commitf90520ed0666533842ca2512d8dd52fb70327250 (patch)
treeff6b5ed19937d51356c8236f67bfbd9a720d5855 /utils
parentc0322ec703ab065fa5fece6eac711b4c020f1555 (diff)
Refactoring: new Slic3r::Model class to represent files
Diffstat (limited to 'utils')
-rwxr-xr-xutils/amf-to-stl.pl4
-rwxr-xr-xutils/split_stl.pl11
-rwxr-xr-xutils/stl-to-amf.pl39
3 files changed, 40 insertions, 14 deletions
diff --git a/utils/amf-to-stl.pl b/utils/amf-to-stl.pl
index 847e5e749..b421dd33a 100755
--- a/utils/amf-to-stl.pl
+++ b/utils/amf-to-stl.pl
@@ -25,12 +25,12 @@ my %opt = ();
}
{
- my $mesh = Slic3r::Format::AMF->read_file($ARGV[0]);
+ my $model = Slic3r::Format::AMF->read_file($ARGV[0]);
my $output_file = $ARGV[0];
$output_file =~ s/\.amf(?:\.xml)?$/\.stl/i;
printf "Writing to %s\n", basename($output_file);
- Slic3r::Format::STL->write_file($output_file, $mesh, !$opt{ascii});
+ Slic3r::Format::STL->write_file($output_file, $model, binary => !$opt{ascii});
}
diff --git a/utils/split_stl.pl b/utils/split_stl.pl
index af9890116..42d2926bd 100755
--- a/utils/split_stl.pl
+++ b/utils/split_stl.pl
@@ -25,15 +25,20 @@ my %opt = ();
}
{
- my $mesh = Slic3r::Format::STL->read_file($ARGV[0]);
+ my $model = Slic3r::Format::STL->read_file($ARGV[0]);
my $basename = $ARGV[0];
$basename =~ s/\.stl$//i;
my $part_count = 0;
- foreach my $new_mesh ($mesh->split_mesh) {
+ foreach my $new_mesh ($model->mesh->split_mesh) {
+ my $new_model = Slic3r::Model->new;
+ $new_model
+ ->add_object(vertices => $new_mesh->vertices)
+ ->add_volume(facets => $new_mesh->facets);
+
my $output_file = sprintf '%s_%02d.stl', $basename, ++$part_count;
printf "Writing to %s\n", basename($output_file);
- Slic3r::Format::STL->write_file($output_file, $new_mesh, !$opt{ascii});
+ Slic3r::Format::STL->write_file($output_file, $new_model, binary => !$opt{ascii});
}
}
diff --git a/utils/stl-to-amf.pl b/utils/stl-to-amf.pl
index f4805369b..90aacc535 100755
--- a/utils/stl-to-amf.pl
+++ b/utils/stl-to-amf.pl
@@ -18,29 +18,49 @@ my %opt = ();
{
my %options = (
'help' => sub { usage() },
+ 'distinct-materials' => \$opt{distinct_materials},
);
GetOptions(%options) or usage(1);
$ARGV[0] or usage(1);
}
{
- my @meshes = map Slic3r::Format::STL->read_file($_), @ARGV;
+ my @models = map Slic3r::Format::STL->read_file($_), @ARGV;
my $output_file = $ARGV[0];
$output_file =~ s/\.stl$/.amf.xml/i;
- my $materials = {};
- my $meshes_by_material = {};
- if (@meshes == 1) {
- $meshes_by_material->{_} = $meshes[0];
+ my $new_model = Slic3r::Model->new;
+
+ if ($opt{distinct_materials} && @models > 1) {
+ my $new_object = $new_model->add_object;
+ for my $m (0 .. $#models) {
+ my $model = $models[$m];
+ my $v_offset = @{$new_object->vertices};
+ push @{$new_object->vertices}, @{$model->objects->[0]->vertices};
+ my @new_facets = map {
+ my $f = [@$_];
+ $f->[$_] += $v_offset for -3..-1;
+ $f;
+ } @{ $model->objects->[0]->volumes->[0]->facets };
+
+ push @{$new_model->materials}, { Name => basename($ARGV[$m]) };
+ $new_object->add_volume(
+ material_id => $#{$new_model->materials},
+ facets => [@new_facets],
+ );
+ }
} else {
- for (0..$#meshes) {
- $materials->{$_+1} = { Name => basename($ARGV[$_]) };
- $meshes_by_material->{$_+1} = $meshes[$_];
+ foreach my $model (@models) {
+ $new_model->add_object(
+ vertices => $model->objects->[0]->vertices,
+ )->add_volume(
+ facets => $model->objects->[0]->volumes->[0]->facets,
+ );
}
}
printf "Writing to %s\n", basename($output_file);
- Slic3r::Format::AMF->write_file($output_file, $materials, $meshes_by_material);
+ Slic3r::Format::AMF->write_file($output_file, $new_model);
}
@@ -51,6 +71,7 @@ sub usage {
Usage: amf-to-stl.pl [ OPTIONS ] file.stl [ file2.stl [ file3.stl ] ]
--help Output this usage screen and exit
+ --distinct-materials Assign each STL file to a different material
EOF
exit ($exit_code || 0);