Commit Graph

136 Commits

Author SHA1 Message Date
bubnikv
1385018724 Unicode handling:
Removed the Perl dependencies on Encode, Encode::Locale and Unicode::Normalize.
Added dependency on boost::locale.
Added encode_path, decode_path, normalize_utf8 functions to Slic3r.xs

Slic3r.xs has been made mostly utf8 safe by using the boost::nowide library,
thanks to @alexrj for the idea.

Simplified the encode_path / decode_path stuff:
wxWidgets are unicode already, so there is no need to decode_path() from it.
Perl / win32 interfacing is non-unicode, so decode_path() is executed
on ARGV just at the beginning of the perl scripts.
2017-08-03 17:31:31 +02:00
bubnikv
75c72bc59b Fix of "MM incorrect extruder temperature"
https://github.com/prusa3d/Slic3r/issues/443

Change of the PlaceholderParser:
All vector configuration values stored into the PlaceholderParser
are expected to be addressed by the extruder ID, therefore
if a vector configuration value is addressed without an index,
a current extruder ID is used.

Also a small fix of fan handling: The fan speed is set to zero
at the start of the G-code if the cooling for the initial extruder
is disabled.
2017-07-31 15:42:55 +02:00
bubnikv
c159165780 A bit of clean-up in GCode.cpp 2017-07-11 11:42:55 +02:00
bubnikv
41f50b246c Inlined Surface::any_internal_contains / any_bottom_contains 2017-07-10 13:15:36 +02:00
bubnikv
434f538919 Fix of soluble interface / non-soluble support:
The non-soluble support with "don't care" extruder will preferably
be printed with a non-soluble extruder, if possible without a tool change.
2017-07-07 13:22:00 +02:00
bubnikv
e78839d2fc Fixed a regression after porting GCode generator to C++
Not lifting extruder after printing complete individual objects
https://github.com/prusa3d/Slic3r/issues/400
2017-07-05 11:58:00 +02:00
bubnikv
0ad4e9d51f Refactored the cooling buffer: Removed ElapsedTime. 2017-06-30 20:01:32 +02:00
bubnikv
1158ce41df Finalized implementation of a cooling buffer for multiple extruders
with different settings.
2017-06-30 17:05:58 +02:00
bubnikv
32fa84c5a5 Fix of https://github.com/alexrj/Slic3r/issues/4043 , thanks to @lordofhyphens.
Further refactoring of the cooling logic to collect per extruder data.
2017-06-23 10:13:09 +02:00
bubnikv
39b9341359 Include the wipe tower print time into the cooling time.
Further refactoring of Extruder class.
2017-06-22 15:18:37 +02:00
bubnikv
0454cc95f9 Ported the cooling changes from @alexrj: Don't slow down the external
perimeters if not necessary, don't take the bridging time into account
when slowing down the print.

Removed Extruder & GCodeWriter Perl bindings.
Improved Extruder for constness.
Refactored GCode::m_elapsed_time to struct ElapsedTime.
2017-06-22 12:59:23 +02:00
bubnikv
c1146e298b Set the bed temperature based on the active extruder settings.
https://github.com/prusa3d/Slic3r/issues/157
2017-06-21 17:45:55 +02:00
bubnikv
f0325575c2 Slic3r has been modified to propagate the following filament specific
values to GCode generator, one per active extruder:

bed_temperature
bridge_fan_speed
cooling
disable_fan_first_layers
fan_always_on
fan_below_layer_time
first_layer_bed_temperature
max_fan_speed
min_fan_speed
min_print_speed
slowdown_below_layer_time

Now it remains to extend Slic3r to correctly apply these values.
2017-06-21 16:15:39 +02:00
bubnikv
c431bf5982 Fixed missing default_region_config values exported into the g-code. 2017-06-14 15:16:43 +02:00
bubnikv
6cb7583756 Reverted the "set_and_wait_temperatures" configuration to match
the behavior of the @alexrj slic3r.
2017-06-13 13:46:04 +02:00
bubnikv
ad3be1a69e Implemented filament start / g-codes.
https://github.com/prusa3d/Slic3r/issues/265
https://github.com/prusa3d/Slic3r/issues/319
Based on the implementation by @lordofhyphens
19eea19d91
2017-06-05 11:30:57 +02:00
bubnikv
b5f38dd23f Fixed the "avoid crossing perimeters" bug introduced in Slic3r 1.34.1.24
https://github.com/prusa3d/Slic3r/issues/311
https://github.com/prusa3d/Slic3r/issues/317
https://github.com/prusa3d/Slic3r/issues/323
2017-06-02 13:33:19 +02:00
bubnikv
2f4ff6577a With single_extruder_multi_material enabled,
don't append a tool selection (Txx) to the extruder temperature
settings (M104 and M109).
2017-05-25 22:52:28 +02:00
bubnikv
e000b22578 Implemented wipe tower print path preview. 2017-05-25 22:27:53 +02:00
bubnikv
7d64c465c0 New config field extruder_color for preview of extruder assignment. 2017-05-24 15:20:20 +02:00
bubnikv
2713aa1772 When generating a g-code for a layer, collect layers of multiple objects
with not exactly the same print_z, but support a slight deviation.
2017-05-23 17:09:43 +02:00
bubnikv
ca590cb559 Refactored ToolOrdering to a class,
layers with print_z closer than EPSILON are merged and printed together.
2017-05-23 15:00:01 +02:00
bubnikv
c9c4105289 Fixed an excessive retract / derectract length
with the new retract_before_wipe value set to nonzero.
2017-05-22 18:16:35 +02:00
bubnikv
dfc4717308 Fixes for Multi Material ramming, increased separation of wipe lines. 2017-05-20 18:59:05 +02:00
bubnikv
a99b006b98 Implemented https://github.com/prusa3d/Slic3r/issues/199
by merging the work by @lordofhyphens done on https://github.com/alexrj/Slic3r/issues/3268
2017-05-20 15:29:25 +02:00
bubnikv
70db88dd90 Improved retract handling on bowden extruders:
Separated deretract speed from a retract speed,
allowed a partial retract before wipe.
2017-05-19 19:24:21 +02:00
bubnikv
8bd3dec331 Extrude brim of the wipe tower before any other objects. 2017-05-18 21:22:48 +02:00
bubnikv
81701b400c Prusa Multi Material: Improved path planning when jumping to the wipe tower. 2017-05-18 16:53:19 +02:00
bubnikv
fdff937cb2 Fixed tool ordering for sequential prints. 2017-05-17 19:25:36 +02:00
bubnikv
66b619dfa4 Bugfix of tool ordering. 2017-05-17 17:21:55 +02:00
bubnikv
f27ec3f226 Prusa Multi Material wipe tower: Do an unretract before doing
the wipe tower things.
2017-05-17 16:59:56 +02:00
bubnikv
7b6c9b3b3c Fixes of the Prusa Multi Material wipe tower. 2017-05-17 16:45:37 +02:00
bubnikv
7b152919a6 Changed handling of extruder temperatures
for single_extruder_multi_material printers.
Fixed some compilation errors on OSX.
Disabled re-slicing on change of new G-code only parameters.
2017-05-16 16:02:52 +02:00
bubnikv
21be680ac2 Fixes of G-code multi-tool ordering. 2017-05-16 15:30:03 +02:00
bubnikv
c22b6edeeb Initial integration of the Prusa MultiMatrial Wipe Tower. 2017-05-16 13:45:28 +02:00
bubnikv
74346efccb Fix of a multi-material g-code export. 2017-05-15 16:42:29 +02:00
bubnikv
60c65f6da7 Fixed crashes intruduced recently into G-code generator.
Added a template sort_remove_duplicates.
2017-05-15 11:32:59 +02:00
bubnikv
2f57ee60d1 Improved G-code generator for multi-material prints
to minimize tool switches.
2017-05-10 11:25:57 +02:00
bubnikv
60528c5c2a Performance improvements of the MotionPlanner
(rewrote the Dijkstra shortest path algorithm to use a binary priority
heap instead of a dumb O(n^2) algorithm, added some bounding box tests
to avoid expensive in-polygon tests if possible).
2017-05-05 09:59:56 +02:00
bubnikv
0adc6cc65e Provide own implementation of std::make_unique for older compilers. 2017-05-03 18:57:33 +02:00
bubnikv
e90279c513 Ported the G-code generator from Perl to C++.
Removed GCode.pm
Removed the Perl bindigns for AvoidCrossingPerimeters, OozePrevention, SpiralVase, Wipe
Changed the std::set of extruder IDs to vector of IDs.
Removed some MSVC compiler warnings, removed obnoxious compiler warnings when compiling the Perl bindings.
2017-05-03 18:28:22 +02:00
bubnikv
72ae3585e4 Removed a broken Arc Fitting feature.
Removed the questionable Pressure Advance feature. It is better to use the Pressure Advance implemented into a firmware.
Added a C++ implementation of GCodeReader and SpiralVase, thanks to @alexrj
Added a C++ implementation of GCodeTimeEstimator, thanks to @lordofhyphens
2017-04-26 14:24:31 +02:00
bubnikv
ed2ee2f6f3 Merged support_fills with support_interface_fills.
When extruding supports, the support is interleaved with interface
if possible (when extruded with the same extruder).
Otherwise the base is extruded first.
2017-04-07 17:37:30 +02:00
bubnikv
5dc899d64e Reset wipe moves on tool change and on travel. 2017-03-29 17:45:38 +02:00
bubnikv
cb1a6eae1e Added dependencies on the Intel Thread Building Blocks.
Changed the C++ parallelization code to Intel Thread Building Blocks.
2017-03-07 13:03:14 +01:00
bubnikv
82aed45816 Hopefully fixes the aligned seam:
https://github.com/prusa3d/Slic3r/issues/74

The way it works now is following:
Slic3r will add some negative penalty to all perimeter points near the last seam.
Once the perimeter point with minimum penalty is found, its penalty is compared
to a point closest to the last seam. If the penalty of the point
closest to the last seam is nearly as good as the minimum penalty,
the point closest to the last seam is picked instead. This heuristics
will hide the seams into corners if possible, but if not possible, it will
strive to align the seams precisely.
2017-02-22 16:35:07 +01:00
Alessandro Ranellucci
4a84643894 Fixed regression causing slowdown_below_layer_time to be ignored. #3515 #3443 2017-02-22 15:29:14 +01:00
Alessandro Ranellucci
a8edff1e84 Always retract in bottom layers. #3053 #3618 2017-02-21 16:37:31 +01:00
bubnikv
3bfa6416d8 Fixed https://github.com/prusa3d/Slic3r/issues/126
by re-shuffling the simplification of a path to be extruded.
A non-simplified path was being used for a wipe move before,
causing an extremely detailed path to be exported into a G-code.
2017-02-15 17:51:46 +01:00
bubnikv
957803e60c Added min_layer_height, max_layer_height per nozzle settings
for controlling the support layer height & variable layer height.
Added an experimental "rear" seam option.
2017-02-07 18:46:02 +01:00
bubnikv
7e6390c4b6 Avoid placement of seams on bridging perimeters, if random seam is enabled.
https://github.com/alexrj/Slic3r/issues/3526#issuecomment-263125049
2017-02-02 18:49:33 +01:00
bubnikv
e016c4e423 New extrusion class: ExtrusionMultiPath
This is similar to an ExtrusionLoop, but it is open.
It may contain multiple chained paths with differing parameters.
This allows one to have a hierarchy of paths, where the ExtrusionEntityCollection
will be chained by the G-code generator, but ExtrusionMultiPath will not.
2017-01-19 13:35:55 +01:00
bubnikv
6582182e0c Adapted to the new ClipperUtils.hpp interface by @alexrj 2016-12-13 19:22:23 +01:00
bubnikv
3d3654707b Added "Notes" page to the filament configuration.
Added "filament_max_volumetric_speed", a cap on the maximum volumetric
extrusion role, filament specific. This is very useful when mixing
rigid filament with a soft filament.

Extended the import / export of multi-string values into configuration
values, including the test cases. Multi-line strings will be enclosed
into quotes, quotes escaped using a C-style escape sequences. Single
word strings could still be stored without quotes.
2016-11-01 13:41:24 +01:00
bubnikv
15d3e94a66 Unified the creation of paths of debugging output files
pointing to a predefined output directory.
2016-10-21 10:18:01 +02:00
bubnikv
feb269c97c G code generator will include marks for the G-code analyzer, so
the path preview will be colored with a fine granularity.
2016-09-26 12:52:40 +02:00
bubnikv
7d56827e26 updated for older gcc 2016-09-13 15:29:31 +02:00
bubnikv
f518e0675c Initial commit of the new Pressure Equalizer, the EdgeGrid
signed distance field structure.
The EdgeGrid is used to avoid placing the seams on overhangs.
2016-09-12 16:25:15 +02:00
Joseph Lenox
b068616366 Merge pull request #3120 from Vicious-one/patch-1
Fix for #3069
2016-05-18 23:01:19 -05:00
Chow Loong Jin
209b919fe6 Fix cooling not working if !gcode_comments
The cooling markers were being passed into GCodeWriter::set_speed() as a
comment which were being ignored if gcode_comments was false.

Fixes: #3325
2016-05-12 23:35:39 +08:00
Chow Loong Jin
3d73fbf5fd Use float for elapsed_time
When accumulating elapsed_time from many moves that take less than 1
second, elapsed_time does not get incremented because (unsigned int)0.9
= 0.
2016-04-13 01:13:42 +08:00
Chow Loong Jin
4c622c504f Account for travel moves in elapsed_time 2016-04-13 01:13:39 +08:00
Chow Loong Jin
2e2e4e68d3 Fix layer time slowdown
The recent GCode writer changes which put the speed changes on a line of
their own have caused the layer time slowdown to be ignored by the regex
in CoolingBuffer.pm.

Fixes: #3134
2016-04-10 16:10:18 +08:00
Alessandro Ranellucci
7c8b71012c Force the 'nearest' strategy for starting skirt loops 2015-12-21 15:02:39 +01:00
Alessandro Ranellucci
1a286fc906 Fixes and improvements to MotionPlanner, much smarter now 2015-12-21 14:46:35 +01:00
Alessandro Ranellucci
bab3404b2d Very minor code improvements 2015-12-19 16:36:07 +01:00
Alessandro Ranellucci
667a121ddb Fixed error in porting causing wrong moves with avoid_crossing_perimeters 2015-12-19 14:49:29 +01:00
Alessandro Ranellucci
4913e90e10 Remove any Perl related code from libslic3r 2015-12-08 00:39:54 +01:00
ntfshard
d62f33b0b4 Removed unused variables 2015-11-04 20:49:20 +01:00
ntfshard
dd5c5eb931 Fix: Initializer list, right initialisation order 2015-11-04 20:49:19 +01:00
Vicious-one
8e0d458d1d Fix for #3069 2015-09-30 16:22:49 +03:00
Luís Andrade
b31edc0be3 Update GCode.cpp
Bugfix #3038
2015-08-10 18:03:45 -04:00
Alessandro Ranellucci
3e739b87da Finished porting Slic3r::GCode to XS (speed boost!) 2015-07-02 20:24:16 +02:00
Alessandro Ranellucci
0ad4296aaf Ported GCode::set_extruders() and GCode::change_layer() to XS 2015-07-02 19:33:08 +02:00
Alessandro Ranellucci
9a17efc480 Use GCodeWriter for path segments (refactoring) 2015-07-02 19:14:55 +02:00
Alessandro Ranellucci
fbd640fdc5 Ported GCode::extrude_path() to XS (speed boost!) 2015-07-02 18:57:40 +02:00
Alessandro Ranellucci
b025efe729 Ported GCode::travel_to() to XS 2015-07-02 15:12:04 +02:00
Alessandro Ranellucci
a6f4c8e567 Ported GCode::set_extruder() and OozePrevention 2015-07-02 15:02:20 +02:00
Alessandro Ranellucci
ff5747bb60 Macro for readability 2015-07-02 14:31:21 +02:00
Alessandro Ranellucci
b14290b9f6 Make tests happy 2015-07-02 14:29:20 +02:00
Alessandro Ranellucci
5571144c0e Ported Slic3r::GCode::needs_retraction() to XS 2015-07-01 23:14:40 +02:00
Alessandro Ranellucci
b4019bb438 Ported more Slic3r::GCode methods to XS 2015-07-01 23:00:52 +02:00
Alessandro Ranellucci
801f629fdc Ported Slic3r::GCode storage to XS 2015-07-01 21:47:17 +02:00
Alessandro Ranellucci
280f3f38d7 Ported Slic3r::GCode::OozePrevention storage to XS 2015-07-01 21:01:42 +02:00
Alessandro Ranellucci
b43dd92766 Ported Slic3r::GCode::Wipe storage to XS 2015-07-01 20:57:16 +02:00
Alessandro Ranellucci
bf9cd1b8e6 Ported Slic3r::GCode::AvoidCrossingPerimeters to XS 2015-07-01 20:14:05 +02:00