Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adaptive slicing #4

Merged
merged 417 commits into from
Jun 6, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
417 commits
Select commit Hold shift + click to select a range
4a91ea8
Releasing 1.2.8
alranel Jun 9, 2015
552430d
More fixes for Unicode path handling (thanks @josefprusa for Czech te…
alranel Jun 13, 2015
7a34078
Bump version number
alranel Jun 13, 2015
38a9e32
Limit bridge over sparse infill to areas that can absorb such extruda…
alranel Jun 13, 2015
bc69d6d
Minor adjustment of infill_overlap math
alranel Jun 14, 2015
539cde8
Raise the thickness threshold used for generating thin walls. TODO: d…
alranel Jun 15, 2015
6dc3caa
Typo
alranel Jun 15, 2015
be635c6
Fixed regression casusing some rare STL files not to parsed correctly…
alranel Jun 15, 2015
455a106
Fix minor rendering glitch in 2D toolpaths preview
alranel Jun 16, 2015
3cd6c78
Releasing 1.2.9
alranel Jun 17, 2015
4a39665
Bugfix: binary ASCII files were not written with the correct fopen() …
alranel Jun 20, 2015
be1f35c
Disable testing of modules that have known broken tests
alranel Jun 20, 2015
3b7cb67
Add perl 5.22 to Travis CI
alranel Jun 20, 2015
724e668
Revert "Add perl 5.22 to Travis CI"
alranel Jun 20, 2015
f361d8a
Ported PlaceholderParser::apply_env_variables() to XS
alranel Jul 1, 2015
249088b
Ported Config::setenv() to XS
alranel Jul 1, 2015
580d28d
Finished porting PlaceholderParser to XS
alranel Jul 1, 2015
bf9cd1b
Ported Slic3r::GCode::AvoidCrossingPerimeters to XS
alranel Jul 1, 2015
76b2e88
Removed setenv() test as we can't test environment variables in Perl …
alranel Jul 1, 2015
b43dd92
Ported Slic3r::GCode::Wipe storage to XS
alranel Jul 1, 2015
280f3f3
Ported Slic3r::GCode::OozePrevention storage to XS
alranel Jul 1, 2015
ab858f3
Updated test
alranel Jul 1, 2015
801f629
Ported Slic3r::GCode storage to XS
alranel Jul 1, 2015
b4019bb
Ported more Slic3r::GCode methods to XS
alranel Jul 1, 2015
5571144
Ported Slic3r::GCode::needs_retraction() to XS
alranel Jul 1, 2015
b14290b
Make tests happy
alranel Jul 2, 2015
ff5747b
Macro for readability
alranel Jul 2, 2015
72355a9
Use macro in PrintConfig.hpp
alranel Jul 2, 2015
a6f4c8e
Ported GCode::set_extruder() and OozePrevention
alranel Jul 2, 2015
b025efe
Ported GCode::travel_to() to XS
alranel Jul 2, 2015
fbd640f
Ported GCode::extrude_path() to XS (speed boost!)
alranel Jul 2, 2015
9a17efc
Use GCodeWriter for path segments (refactoring)
alranel Jul 2, 2015
0ad4296
Ported GCode::set_extruders() and GCode::change_layer() to XS
alranel Jul 2, 2015
3e739b8
Finished porting Slic3r::GCode to XS (speed boost!)
alranel Jul 2, 2015
b8aecbd
Initial work for porting PerimeterGenerator to XS
alranel Jul 3, 2015
440af2c
Bugfix: bridge anchors were shortened under rare circumstances
alranel Jul 3, 2015
e84ead5
Bugfix: changing range-based layer heigths didn't trigger background …
alranel Jul 4, 2015
c65c9d8
Bugfix: zooming in empty layers preview (because of disabled backgrou…
alranel Jul 4, 2015
0e18b09
More work for porting PerimeterGenerator to XS
alranel Jul 6, 2015
9ac4fc9
Fix compilation on Windows due to lack of setenvt(). #2973
alranel Jul 10, 2015
b4515cf
Finished porting PerimeterGenerator to C++
alranel Jul 23, 2015
15d2522
Merge branch 'xs-perimetergenerator'
alranel Jul 23, 2015
6ac79e3
Ported make_perimeters() to C++
alranel Jul 23, 2015
5b8ed73
Fixed potential hang in PerimeterGenerator.cpp
alranel Aug 6, 2015
b31edc0
Update GCode.cpp
llluis Aug 10, 2015
8e0d458
Fix for #3069
Vicious-one Sep 30, 2015
9fcec10
Finished porting LayerRegion to C++
alranel Oct 26, 2015
889a54e
Bump version number
alranel Oct 26, 2015
2811af3
Added a new grid infill pattern
alranel Nov 1, 2015
9b21ac8
Merge branch 'master' into sender
alranel Nov 1, 2015
fc1a747
Several improvements to the print job queue
alranel Nov 2, 2015
b309c61
Test button for serial connection
alranel Nov 2, 2015
05812a0
Fixed memory leak
alranel Nov 2, 2015
3685f50
Fixed memory leak
alranel Nov 2, 2015
4e3784a
More memory leaks fixed
alranel Nov 2, 2015
9438289
Removed debugging statement
alranel Nov 2, 2015
01a2a07
More memory leaks fixed
alranel Nov 2, 2015
cb8f8a2
Keep print job order
alranel Nov 2, 2015
4295d65
Manual control
alranel Nov 2, 2015
9ee6829
Implemented connection timeout in C++
alranel Nov 2, 2015
16c3831
Fixed manual control buttons
alranel Nov 2, 2015
d8a94c3
Smarter logic for displaying printer panels
alranel Nov 3, 2015
e8ae2d6
Try to fix broken wx scrolling
alranel Nov 3, 2015
8f7e820
Display a warning when no USB/serial printers were configured
alranel Nov 3, 2015
1d10e46
Bugfix: wrong error handling in GCodeSender
alranel Nov 3, 2015
369b99c
Fix incorrect comments to temperature-setting gcode
mdebski Nov 4, 2015
c34430c
Fix G-code checksum
alranel Nov 4, 2015
69a71db
Bugfix: wrong default in extruder_offset tooltip. #3051
alranel Nov 4, 2015
a25757a
Fixed regression causing empty prints to hang. #3107
alranel Nov 4, 2015
198dc7d
When background processing fails because of an error, display it in a…
alranel Nov 4, 2015
810d7ee
Fixed one more memory leak
alranel Nov 4, 2015
b67b903
Include the option category for first_layer_extrusion_width. #3061
alranel Nov 4, 2015
b8e95f4
Prompt user when setting wipe + use_firmware_retraction. #3056
alranel Nov 4, 2015
7a2a1b5
Merge pull request #3039 from llluis/patch-1
alranel Nov 4, 2015
bce3d98
Bugfix: error when setting per-region percent perimeter_extrusion_wid…
alranel Nov 4, 2015
06913cc
Merge pull request #3111 from mdebski/temp_comments
alranel Nov 4, 2015
f2c4a66
Refactoring: prefix inc/dec operators for iterators
ntfshard Jul 26, 2015
eb7464a
Style fix: const for some functions
ntfshard Jul 27, 2015
dd5c5eb
Fix: Initializer list, right initialisation order
ntfshard Jul 28, 2015
c6ef26a
std::list::empty faster than std::list::size (for C++03)
ntfshard Jul 28, 2015
dbcd1e2
Fix: memory leak in ExPolygon::triangulate_p2t
ntfshard Aug 1, 2015
e1d663c
Function arguments passed by reference
ntfshard Aug 6, 2015
ef00506
Function arguments passed by reference
ntfshard Aug 6, 2015
40e4961
Config: pass value as a reference
ntfshard Aug 11, 2015
32f5538
Fix for -Wmaybe-uninitialized warninig
ntfshard Aug 23, 2015
d62f33b
Removed unused variables
ntfshard Aug 23, 2015
c90ecac
Addtional check for TPPLPoly::operator=
ntfshard Aug 23, 2015
7c7982d
Fix signed-unsigned compare
ntfshard Aug 30, 2015
f8d2c69
Fixed compilation warnings and a potential bug in MotionPlanner, as r…
alranel Nov 4, 2015
61f0a9e
Replace the flip word with mirror. #3060
alranel Nov 4, 2015
2e9a0f5
Added more search paths for Boost on Win32
alranel Nov 5, 2015
9f9b5af
Merge branch 'master' into sender
alranel Nov 5, 2015
97bf69b
Fix compilation on Windows
alranel Nov 6, 2015
e7d2be8
Improve Boost path detection
alranel Nov 6, 2015
ca48501
Remove Boost from distribution and fix some more things for Windows c…
alranel Nov 6, 2015
9a8724c
More compilation changes for Win32
alranel Nov 6, 2015
5d69e73
Fix serial port detection on Windows
alranel Nov 6, 2015
3cbc351
More fixes for serial port detection on Windows
alranel Nov 6, 2015
25a358c
Prevent double connection check
alranel Nov 6, 2015
37ecc61
Two fixes for --debug
alranel Nov 8, 2015
321b1a9
Two fixes for --debug
alranel Nov 8, 2015
9febb10
Smoother manual control movements
alranel Nov 8, 2015
3c43fb8
Fix rendering on Windows
alranel Nov 8, 2015
80620a5
Some fixes and improvements to controller
alranel Nov 8, 2015
6bfa2cf
Projector for DLP
alranel Nov 15, 2015
be0ba4d
Re-enable serial connection for DLP projector
alranel Nov 15, 2015
5ba2f72
More customizable options for DLP projector
alranel Nov 15, 2015
c1f95ac
Slice objects even if background processing is disabled
alranel Nov 15, 2015
e50bbc0
Don't crash when no serial ports are available on Windows
alranel Nov 16, 2015
870cb3c
Merge branch 'sender' into sender-dlp
alranel Nov 16, 2015
21a5d6e
Several fixes to GCodeSender, including compilation on older OS X and…
alranel Nov 19, 2015
dbcc41e
Merge branch 'sender'
alranel Nov 19, 2015
73b6400
Merge branch 'master' into sender-dlp
alranel Nov 19, 2015
624c5e7
Changed default settings for DLP projector and changed time options f…
alranel Nov 19, 2015
e48a0fe
Added libboost-* packages for Travis CI build
alranel Nov 19, 2015
1378562
Further improvements for compilation (Ubuntu)
alranel Nov 19, 2015
c149420
Further improvements for compilation (Ubuntu)
alranel Nov 19, 2015
c63a5f2
One more fix for Travis CI
alranel Nov 19, 2015
39924ee
More small fixes for compilation on Linux
alranel Nov 19, 2015
6fde339
One more fix for Travis CI
alranel Nov 19, 2015
128b262
More small fixes for compilation on Linux
alranel Nov 19, 2015
2efc759
Add manual control to DLP projector too
alranel Nov 19, 2015
0af289e
Added manual projection control
alranel Nov 20, 2015
cc57432
Let user configure travel speed in manual control dialog
alranel Nov 20, 2015
4a65671
Prevent absolute movement if user hasn't homed both X and Y
alranel Nov 20, 2015
78d2240
Limit slider to number of layers
alranel Nov 20, 2015
bd00e7c
Fix projection of slices with holes because wxDC is not honoring the …
alranel Nov 20, 2015
f9d1ca8
Project grid
alranel Nov 20, 2015
ad4940a
New option for inverting the Y axis in projection
alranel Nov 20, 2015
017ed05
Removed debugging comment
alranel Nov 22, 2015
fbc67d9
Merge branch 'sender-dlp'
alranel Nov 28, 2015
48f1fab
Bugfix: an error in porting caused bad perimeter ordering. Includes r…
alranel Dec 1, 2015
5844b95
Bugfix: prevent crash when setting a Choice field to a non-indexed value
alranel Dec 1, 2015
5655f78
Change order in DLP projection
alranel Dec 1, 2015
dfce3a3
Ported _arrange() and arrange_object() to XS
alranel Dec 1, 2015
ed75219
Ported mode Model methods to XS
alranel Dec 2, 2015
3a9cf91
Ported a couple more methods to XS
alranel Dec 2, 2015
4f8a18b
Ported Layer::maker_perimeters() to XS
alranel Dec 2, 2015
1bebe60
Make test happy
alranel Dec 2, 2015
7523550
Try to fix compilation on older Perls
alranel Dec 2, 2015
366b364
Improvements to DLP projector: disable all options while printing; ap…
alranel Dec 4, 2015
e2b203b
Disable screensaver while projecting (untested on Windows)
alranel Dec 4, 2015
d0db891
Fix a compilation error on Win32
alranel Dec 5, 2015
4b59490
Upgrade Travis CI conf
alranel Dec 5, 2015
65d0f92
Fixed Travis CI conf
alranel Dec 5, 2015
abff77c
Add color icons to menu items about axes. #3121
alranel Dec 5, 2015
50b5236
New "Scale to size" command(s). #2711
alranel Dec 5, 2015
a8091e4
Fix a minor glitch with scrollbars in OverrideSettingsPanel
alranel Dec 5, 2015
c16cdb9
Preserve the current layer when refreshing the 3D preview
alranel Dec 5, 2015
27dcd60
Fix compilation on Windows
alranel Dec 6, 2015
954e2c9
Fix comment stripping in sender
alranel Dec 6, 2015
7eb3a70
Bump version number
alranel Dec 6, 2015
7e1fac8
Separate libslic3r code from slic3r application code
alranel Dec 6, 2015
32a333f
Import config bundle automatically if found in application directory
alranel Dec 7, 2015
3fac8cd
Large refactoring of the Config classes
alranel Dec 7, 2015
4913e90
Remove any Perl related code from libslic3r
alranel Dec 7, 2015
5cfa36f
Fix typo #3152
alranel Dec 8, 2015
9f90b2a
Fix compilation
alranel Dec 8, 2015
e2f2761
One more fix for compilation
alranel Dec 8, 2015
9bd10b3
Updates to GUI projector: fix buttons not updating when print finishe…
alranel Dec 11, 2015
37d0558
Move the position_screen method to the Screen class
alranel Dec 11, 2015
c0248de
Bugfix: missing include assert.h #3155
alranel Dec 11, 2015
7ecfe19
Live preview in the cut dialog
alranel Dec 13, 2015
21364b7
Fix one regression in arrange
alranel Dec 13, 2015
c733787
Prevent flickering
alranel Dec 15, 2015
3c86283
Refactored the Config XS bindings
alranel Dec 16, 2015
934bd43
More refactoring on Config XS bindings
alranel Dec 16, 2015
e381100
More efficient syntax for the PrintConfigDef constructor
alranel Dec 16, 2015
3ec3aaf
Removed debugging statements
alranel Dec 16, 2015
d0ad57b
Don't show any dialog if 0 configs were imported
alranel Dec 17, 2015
44825d9
Some changes to DLP projector
alranel Dec 17, 2015
b8f0391
Fix compilation with GCC
alranel Dec 18, 2015
562efc1
Typo
alranel Dec 18, 2015
8138fbf
New --retract-lift-above and --retract-lift-below options. #763 #3057
alranel Dec 18, 2015
4b30d67
Implement resizable left column in preset editor. #3151
alranel Dec 18, 2015
fd7795d
One more fix for compilation with older compilers
alranel Dec 19, 2015
a2ea191
Fix regression in lift, includes regression test
alranel Dec 19, 2015
9dc0514
Use bridge flow and speed for solid_infill_every_layers
alranel Dec 19, 2015
667a121
Fixed error in porting causing wrong moves with avoid_crossing_perime…
alranel Dec 19, 2015
790dbfe
Fix false positive in lift unit test
alranel Dec 19, 2015
2df750a
Fixed ported code of PerimeterGenerator
alranel Dec 19, 2015
bab3404
Very minor code improvements
alranel Dec 19, 2015
795107d
Bugfix: external details were simplified too much when using default …
alranel Dec 19, 2015
4f32a1c
Fix Slic3r crash when opening About dialog
hippich Dec 19, 2015
70e8db8
Minor code cleanup here and there
alranel Dec 19, 2015
6e231a8
Editable text control for specifying the cut Z in cut dialog
alranel Dec 19, 2015
025a508
Ignore cut result if user didn't click the cut button
alranel Dec 19, 2015
f7e97f7
Refactor cutting logic, don't slice in 3DScene
alranel Dec 19, 2015
1a286fc
Fixes and improvements to MotionPlanner, much smarter now
alranel Dec 21, 2015
7c8b710
Force the 'nearest' strategy for starting skirt loops
alranel Dec 21, 2015
f5326c3
Revert "Implement resizable left column in preset editor. #3151"
alranel Dec 25, 2015
83c91a3
Dump serial messages to file in order to debug communication issues
alranel Dec 26, 2015
571b406
@farhaven: There's one more wxCLOSE in lib/Slic3r/GUI/Projector.pm, t…
hippich Dec 27, 2015
5a13c43
Implement serial port baudrate selection for OpenBSD
farhaven Jan 3, 2016
a9c5874
Don't toggle support_material_enforce_layers field
hyperair Jan 17, 2016
e72a89e
New icon for Infill (credits: Carlo Mariella)
alranel Feb 20, 2016
9eabbde
Fixed regression in the C++ port of PerimeterGenerator causing gaps t…
alranel Feb 20, 2016
a32937c
Refactoring: new Layer::make_fill() method
alranel Feb 20, 2016
5f8eea9
Don't use equality comparisons for floats
hyperair Mar 6, 2016
3acb051
fix a segment fault by admesh
Mar 12, 2016
4fad87e
Fixed float comparison in combine_infill
alranel Mar 13, 2016
b9127e1
Merge pull request #3269 from 2bright/master
alranel Mar 13, 2016
6e5938c
Fixed return value for deserialize() implementations. #3250
alranel Mar 13, 2016
ff0a947
Merge pull request #3190 from farhaven/master
alranel Mar 13, 2016
d5ff69b
Make GCodeSender more robust (keep more than one sent line) and fix a…
alranel Mar 13, 2016
0964700
Merge pull request #3209 from hyperair/fix-3046
alranel Mar 13, 2016
38d9acb
Bugfix: memory corruption in BridgeDetector (thanks @JakeQZ for the p…
alranel Mar 13, 2016
f4a9fa6
Support incompatible change in Boost 1.60. #3117
alranel Mar 13, 2016
7aafa54
Raise allowed temperatures to 500°C. #3114
alranel Mar 13, 2016
1a09ae8
Merge pull request #3166 from hippich/pk-fix-about-screen
alranel Mar 13, 2016
92e1f10
Fix issue with undefined BOOST_VERSION
markwal Mar 14, 2016
c12ccd8
Merge pull request #3272 from markwal/fixboost106000check
alranel Mar 14, 2016
e2aae39
Bugfix: crash when input to bed shape options was '-'. #3254
alranel Mar 18, 2016
5ff7511
Fixed regression in bridging caused by error in porting. Includes reg…
alranel Mar 18, 2016
6dc42ee
Variable-width gap fill. Yay! #2960
alranel Mar 19, 2016
dfb1ec9
Variable-width thin walls. Yay!
alranel Mar 19, 2016
dd879c3
When loading an AMF file having multiple objects that look like multi…
alranel Mar 19, 2016
412a862
Fixed dragging in 3D plater having some glitches with multipart objects
alranel Mar 19, 2016
b744947
Missing #include
alranel Mar 20, 2016
bfa12e5
Update ISSUE_TEMPLATE.md
lordofhyphens Mar 20, 2016
e4147a6
Merge pull request #3284 from lordofhyphens/gh2
lordofhyphens Mar 20, 2016
7041bb5
Rewritten the medial axis algorithm, now more robust (don't just prun…
alranel Mar 20, 2016
f5a5eb3
Moved CONTRIBUTING.md to .github/
alranel Mar 26, 2016
660b56a
Fixed type error
alranel Mar 26, 2016
fd4f5e4
Actually add CONNTRIBUTING.md, not included in f5a5eb37362bc6416949bf…
alranel Mar 26, 2016
36d5272
Filter gap fill using length relative to the actual width. #2781
alranel Mar 26, 2016
9576973
Tune gap fill and thin walls to less extreme values
alranel Mar 26, 2016
f006e66
Refactored calls to Wx::Bitmap->new
alranel Apr 9, 2016
82b07a0
One more year
alranel Apr 9, 2016
2e2e4e6
Fix layer time slowdown
hyperair Apr 10, 2016
a94402a
Update tests for new GCode style and markers
hyperair Apr 10, 2016
f66585c
Fixed compilation on OS X
alranel Apr 11, 2016
a54edf8
Support static linking of the Boost libs
alranel Apr 11, 2016
4c622c5
Account for travel moves in elapsed_time
hyperair Apr 12, 2016
3d73fbf
Use float for elapsed_time
hyperair Apr 12, 2016
510ca9f
Merge pull request #3303 from hyperair/fix-cooldown
lordofhyphens Apr 12, 2016
209b919
Fix cooling not working if !gcode_comments
hyperair May 12, 2016
d8be976
The "controller" tab and the settings of the USB/serial connection was
bubnikv May 16, 2016
6122056
Merge pull request #3330 from prusa3d/release_candidate_1_3
lordofhyphens May 19, 2016
3d34bed
Merge pull request #3326 from hyperair/fix-cooldown-verbose
lordofhyphens May 19, 2016
f2e8c6f
Merge pull request #3262 from hyperair/fix-autospeed-F0-moves
lordofhyphens May 19, 2016
b068616
Merge pull request #3120 from Vicious-one/patch-1
lordofhyphens May 19, 2016
9e8022f
More refactoring to medial axis and gap fill, more robust
alranel May 20, 2016
ea9b10c
Added a short OpenSCAD description to aid in the creation of simple m…
lordofhyphens May 29, 2016
00ab6af
Merge pull request #3346 from lordofhyphens/feature-1129_899
lordofhyphens May 29, 2016
30f6e4b
Bugfix: homing was not correctly saved
alranel May 24, 2016
2a8c139
Add XYZ homing button to printer manual control
alranel May 24, 2016
08a2775
Update solid_layers.scad
lordofhyphens Jun 1, 2016
8485e4b
Merge branch 'master' into adaptive-slicing
platsch Jun 6, 2016
5bb1ffb
Feature: try to match horizontal surfaces with adaptive slicing
platsch Jun 6, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
File renamed without changes.
22 changes: 22 additions & 0 deletions .github/ISSUE_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
### Version
_Version of Slic3r used goes here_

_Use `About->About Slic3r` for release versions_

_For -dev versions, use `git describe --tag` or get the hash value for the version you downloaded or `git rev-parse HEAD`_

### Operating system type + version
_What OS are you using, and state any version #s_

### Behavior
* _Describe the problem_
* _Steps needed to reproduce the problem_
* _If this is a command-line slicing issue, include the options used_
* _Expected Results_
* _Actual Results_
* _Screenshots from __*Slic3r*__ preview are preferred_

_Is this a new feature request?_

#### STL/Config (.ZIP) where problem occurs
_Upload a zipped copy of an STL and your config (`File -> Export Config`)_
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,5 @@ xs/buildtmp
*.o
MANIFEST.bak
xs/MANIFEST.bak
xs/assertlib*
.init_bundle.ini
13 changes: 11 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,20 @@ language: perl
install: true
script: perl ./Build.PL
perl:
- "5.12"
- "5.14"
- "5.18"
- "5.20"
branches:
only:
- master
- stable

sudo: false
cache:
- apt
addons:
apt:
sources:
- boost-latest
packages:
- libboost-thread1.55-dev
- libboost-system1.55-dev
13 changes: 11 additions & 2 deletions Build.PL
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ use Config;
use File::Spec;

my %prereqs = qw(
Encode::Locale 0
Devel::CheckLib 0
Encode 0
Encode::Locale 1.05
ExtUtils::MakeMaker 6.80
ExtUtils::ParseXS 3.22
File::Basename 0
Expand All @@ -23,6 +25,7 @@ my %prereqs = qw(
IO::Scalar 0
threads 1.96
Time::HiRes 0
Unicode::Normalize 0
);
my %recommends = qw(
Class::XSAccessor 0
Expand All @@ -47,6 +50,8 @@ if ($gui) {
Net::Bonjour 0
);
if ($^O eq 'MSWin32') {
$recommends{"Win32::TieRegistry"} = 0;

# we need an up-to-date Win32::API because older aren't thread-safe (GH #2517)
$prereqs{'Win32::API'} = 0.79;
}
Expand Down Expand Up @@ -116,7 +121,11 @@ EOF
foreach my $module (sort keys %modules) {
my $version = $modules{$module};
my @cmd = ($cpanm, @cpanm_args);
push @cmd, '--notest', if $module eq 'OpenGL'; # temporary workaround for upstream bug in test

# temporary workaround for upstream bug in test
push @cmd, '--notest'
if $module =~ /^(?:OpenGL|Math::PlanePath|Test::Harness)$/;

push @cmd, "$module~$version";
if ($module eq 'XML::SAX::ExpatXS' && $^O eq 'MSWin32') {
my $mingw = 'C:\dev\CitrusPerl\mingw64';
Expand Down
13 changes: 9 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Slic3r [![Build Status](https://travis-ci.org/alexrj/Slic3r.png?branch=master)](
Slic3r takes 3D models (STL, OBJ, AMF) and converts them into G-code instructions for
3D printers. It's compatible with any modern printer based on the RepRap toolchain,
including all those based on the Marlin, Sprinter and Repetier firmware. It also works
with Mach3 and LinuxCNC controllers.
with Mach3, LinuxCNC and Machinekit controllers.

See the [project homepage](http://slic3r.org/) at slic3r.org and the
[manual](http://manual.slic3r.org/) for more information.
Expand All @@ -30,7 +30,7 @@ Key features are:
* **multi-platform** (Linux/Mac/Win) and packaged as standalone-app with no dependencies required
* complete **command-line interface** to use it with no GUI
* multi-material **(multiple extruders)** object printing
* multiple G-code flavors supported (RepRap, Makerbot, Mach3 etc.)
* multiple G-code flavors supported (RepRap, Makerbot, Mach3, Machinekit etc.)
* ability to plate **multiple objects having distinct print settings**
* **multithread** processing
* **STL auto-repair** (tolerance for broken models)
Expand Down Expand Up @@ -109,6 +109,8 @@ The author of the Silk icon set is Mark James.
-j, --threads <num> Number of threads to use (1+, default: 2)

GUI options:
--gui Forces the GUI launch instead of command line slicing (if you
supply a model file, it will be loaded into the plater)
--no-plater Disable the plater tab
--gui-mode Overrides the configured mode (simple/expert)
--autosave <file> Automatically export current configuration to the specified file
Expand All @@ -130,7 +132,7 @@ The author of the Silk icon set is Mark James.
(default: 100,100)
--z-offset Additional height in mm to add to vertical coordinates
(+/-, default: 0)
--gcode-flavor The type of G-code to generate (reprap/teacup/makerware/sailfish/mach3/no-extrusion,
--gcode-flavor The type of G-code to generate (reprap/teacup/makerware/sailfish/mach3/machinekit/no-extrusion,
default: reprap)
--use-relative-e-distances Enable this to get relative E values (default: no)
--use-firmware-retraction Enable firmware-controlled retraction using G10/G11 (default: no)
Expand Down Expand Up @@ -277,8 +279,10 @@ The author of the Silk icon set is Mark James.
--retract-before-travel
Only retract before travel moves of this length in mm (default: 2)
--retract-lift Lift Z by the given distance in mm when retracting (default: 0)
--retract-lift-above Only lift Z when above the specified height (default: 0)
--retract-lift-below Only lift Z when below the specified height (default: 0)
--retract-layer-change
Enforce a retraction before each Z move (default: yes)
Enforce a retraction before each Z move (default: no)
--wipe Wipe the nozzle while doing a retraction (default: no)

Retraction options for multi-extruder setups:
Expand Down Expand Up @@ -350,6 +354,7 @@ The author of the Silk icon set is Mark James.
Set a different extrusion width for top infill
--support-material-extrusion-width
Set a different extrusion width for support material
--infill-overlap Overlap between infill and perimeters (default: 15%)
--bridge-flow-ratio Multiplier for extrusion when bridging (> 0, default: 1)

Multiple extruder options:
Expand Down
51 changes: 36 additions & 15 deletions lib/Slic3r.pm
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,12 @@ warn "Running Slic3r under Perl 5.16 is not supported nor recommended\n"
if $^V == v5.16;

use FindBin;
our $var = "$FindBin::Bin/var";
our $var = sub { decode_path($FindBin::Bin) . "/var/" . $_[0] };

use Encode;
use Encode::Locale;
use Moo 1.003001;

use Slic3r::XS; # import all symbols (constants etc.) before they get parsed
use Slic3r::AdaptiveSlicing;
use Slic3r::Config;
use Slic3r::ExPolygon;
use Slic3r::ExtrusionLoop;
Expand All @@ -46,20 +45,16 @@ use Slic3r::Flow;
use Slic3r::Format::AMF;
use Slic3r::Format::OBJ;
use Slic3r::Format::STL;
use Slic3r::GCode;
use Slic3r::GCode::ArcFitting;
use Slic3r::GCode::CoolingBuffer;
use Slic3r::GCode::MotionPlanner;
use Slic3r::GCode::PlaceholderParser;
use Slic3r::GCode::PressureRegulator;
use Slic3r::GCode::Reader;
use Slic3r::GCode::SpiralVase;
use Slic3r::GCode::VibrationLimit;
use Slic3r::Geometry qw(PI);
use Slic3r::Geometry::Clipper;
use Slic3r::Layer;
use Slic3r::Layer::PerimeterGenerator;
use Slic3r::Layer::Region;
use Slic3r::Line;
use Slic3r::Model;
use Slic3r::Point;
Expand All @@ -73,15 +68,15 @@ use Slic3r::Print::SupportMaterial;
use Slic3r::Surface;
our $build = eval "use Slic3r::Build; 1";
use Thread::Semaphore;
use Encode::Locale 1.05;
use Encode;
use Unicode::Normalize;

use constant SCALING_FACTOR => 0.000001;
use constant RESOLUTION => 0.0125;
use constant SCALED_RESOLUTION => RESOLUTION / SCALING_FACTOR;
use constant SMALL_PERIMETER_LENGTH => (6.5 / SCALING_FACTOR) * 2 * PI;
use constant LOOP_CLIPPING_LENGTH_OVER_NOZZLE_DIAMETER => 0.15;
use constant INFILL_OVERLAP_OVER_SPACING => 0.45;
use constant EXTERNAL_INFILL_MARGIN => 3;
use constant INSET_OVERLAP_TOLERANCE => 0.4;
use constant INFILL_OVERLAP_OVER_SPACING => 0.3;

# keep track of threads we created
my @my_threads = ();
Expand Down Expand Up @@ -178,6 +173,11 @@ sub parallelize {
sub thread_cleanup {
return if !$Slic3r::have_threads;

if (threads->tid == 0) {
warn "Calling thread_cleanup() from main thread\n";
return;
}

# prevent destruction of shared objects
no warnings 'redefine';
*Slic3r::BridgeDetector::DESTROY = sub {};
Expand All @@ -187,18 +187,25 @@ sub thread_cleanup {
*Slic3r::Config::Print::DESTROY = sub {};
*Slic3r::Config::PrintObject::DESTROY = sub {};
*Slic3r::Config::PrintRegion::DESTROY = sub {};
*Slic3r::Config::Static::DESTROY = sub {};
*Slic3r::ExPolygon::DESTROY = sub {};
*Slic3r::ExPolygon::Collection::DESTROY = sub {};
*Slic3r::Extruder::DESTROY = sub {};
*Slic3r::ExtrusionLoop::DESTROY = sub {};
*Slic3r::ExtrusionPath::DESTROY = sub {};
*Slic3r::ExtrusionPath::Collection::DESTROY = sub {};
*Slic3r::Flow::DESTROY = sub {};
*Slic3r::GCode::DESTROY = sub {};
*Slic3r::GCode::AvoidCrossingPerimeters::DESTROY = sub {};
*Slic3r::GCode::OozePrevention::DESTROY = sub {};
*Slic3r::GCode::PlaceholderParser::DESTROY = sub {};
*Slic3r::GCode::Sender::DESTROY = sub {};
*Slic3r::GCode::Wipe::DESTROY = sub {};
*Slic3r::GCode::Writer::DESTROY = sub {};
*Slic3r::Geometry::BoundingBox::DESTROY = sub {};
*Slic3r::Geometry::BoundingBoxf::DESTROY = sub {};
*Slic3r::Geometry::BoundingBoxf3::DESTROY = sub {};
*Slic3r::Layer::PerimeterGenerator::DESTROY = sub {};
*Slic3r::Line::DESTROY = sub {};
*Slic3r::Linef3::DESTROY = sub {};
*Slic3r::Model::DESTROY = sub {};
Expand Down Expand Up @@ -261,13 +268,27 @@ sub resume_all_threads {
}

sub encode_path {
my ($filename) = @_;
return encode('locale_fs', $filename);
my ($path) = @_;

$path = Unicode::Normalize::NFC($path);
$path = Encode::encode(locale_fs => $path);

return $path;
}

sub decode_path {
my ($filename) = @_;
return decode('locale_fs', $filename);
my ($path) = @_;

$path = Encode::decode(locale_fs => $path)
unless utf8::is_utf8($path);

# The filesystem might force a normalization form (like HFS+ does) so
# if we rely on the filename being comparable after the open() + readdir()
# roundtrip (like when creating and then selecting a preset), we need to
# restore our normalization form.
$path = Unicode::Normalize::NFC($path);

return $path;
}

sub open {
Expand Down
Loading