Commit Graph

92 Commits

Author SHA1 Message Date
bubnikv
e2a169b0e5 Changed the G-code protocol for cleaning up the priming towers
for the multi material prints.
2017-09-13 13:27:49 +02:00
bubnikv
98408bbed0 Fixed a crash when slicing leads to no print.
Fixed a bug in TriangleMesh::bounding_box().
2017-09-12 16:48:44 +02:00
bubnikv
b08d6f1969 The last priming area is shortened and the excess wipe is moved
into the wipe tower if there is enough space inside the wipe tower.
2017-09-12 15:55:38 +02:00
bubnikv
100c8f60a5 Added GCode/PrintExtents.cpp,h
Added a check for a collision between the multi material priming
regions with the rest of the print.
2017-09-12 09:01:48 +02:00
bubnikv
2c5304a520 Implemented an initial priming line for a single-material print
on a Prusa Multi-Material printer.
2017-09-04 13:51:05 +02:00
bubnikv
b610866d77 Implemented priming of all the filaments of the Prusa Multi Material. 2017-09-01 17:30:18 +02:00
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