diff --git a/README.markdown b/README.markdown index 873b5733..bc13c2f0 100644 --- a/README.markdown +++ b/README.markdown @@ -85,7 +85,8 @@ The author is Alessandro Ranellucci (me). -o, --output File to output gcode to (by default, the file will be saved into the same directory as the input file using the --output-filename-format to generate the filename) - + -j, --threads Number of threads to use (1+, default: 4) + Output options: --output-filename-format Output file name format; all config options enclosed in brackets diff --git a/lib/Slic3r.pm b/lib/Slic3r.pm index fda8e449..13ec74fb 100644 --- a/lib/Slic3r.pm +++ b/lib/Slic3r.pm @@ -38,7 +38,8 @@ use Slic3r::Surface; use Slic3r::TriangleMesh; use Slic3r::TriangleMesh::IntersectionLine; -our $threads = 4; +our $have_threads = $Config{useithreads} && eval "use threads; use Thread::Queue; 1"; +our $threads = $have_threads ? 4 : undef; # miscellaneous options our $notes = ''; @@ -146,7 +147,7 @@ our $duplicate_distance = 6; # mm sub parallelize { my %params = @_; - if (!$params{disable} && $Config{useithreads} && $Slic3r::threads > 1 && eval "use threads; use Thread::Queue; 1") { + if (!$params{disable} && $Slic3r::have_threads && $Slic3r::threads > 1) { my $q = Thread::Queue->new; $q->enqueue(@{ $params{items} }, (map undef, 1..$Slic3r::threads)); diff --git a/lib/Slic3r/Config.pm b/lib/Slic3r/Config.pm index f371cb1a..1db007ee 100644 --- a/lib/Slic3r/Config.pm +++ b/lib/Slic3r/Config.pm @@ -507,6 +507,12 @@ sub validate_cli { sub validate { my $class = shift; + + # -j, --threads + die "Invalid value for --threads\n" + if defined $Slic3r::threads && $Slic3r::threads < 1; + die "Your perl wasn't built with multithread support\n" + if defined $Slic3r::threads && !$Slic3r::have_threads; # --layer-height die "Invalid value for --layer-height\n" diff --git a/slic3r.pl b/slic3r.pl index 838f0237..62d4b6b1 100755 --- a/slic3r.pl +++ b/slic3r.pl @@ -95,6 +95,13 @@ if (@ARGV) { sub usage { my ($exit_code) = @_; + my $j = ''; + if ($Slic3r::have_threads) { + $j = <<"EOF"; + -j, --threads Number of threads to use (1+, default: $Slic3r::threads) +EOF + } + print <<"EOF"; Slic3r $Slic3r::VERSION is a STL-to-GCODE translator for RepRap 3D printers written by Alessandro Ranellucci - http://slic3r.org/ @@ -108,7 +115,7 @@ Usage: slic3r.pl [ OPTIONS ] file.stl -o, --output File to output gcode to (by default, the file will be saved into the same directory as the input file using the --output-filename-format to generate the filename) - +$j Output options: --output-filename-format Output file name format; all config options enclosed in brackets