84 Commits

Author SHA1 Message Date
Vojtech Bubnik
84b28a25e8 Support for forward compatibility of configurations, user and system
config bundles, project files (3MFs, AMFs). When loading these files,
the caller may decide whether to substitute some of the configuration
values the current PrusaSlicer version does not understand with
some reasonable default value, and whether to report it. If substitution
is disabled, an exception is being thrown as before this commit.
If substitution is enabled, list of substitutions is returned by the
API to be presented to the user. This allows us to introduce for example
new firmware flavor key in PrusaSlicer 2.4 while letting PrusaSlicer
2.3.2 to fall back to some default and to report it to the user.

As a preparation for PrusaSlicer 2.4.0, the new firmware_flavor
"marlinfirmware" (signifying Marlin 2.0 and newer) that is not
supported by 2.3.2 yet will default to "marlin" (signifying legacy
Marlin).

When slicing from command line, substutions are performed by default
and reported into the console, however substitutions may be either
disabled or made silent with the new "config-compatibility" command
line option.

Substitute enums and bools only.  Allow booleans to be parsed as
    true: "1", "enabled", "on" case insensitive
    false: "0", "disabled", "off" case insensitive
This will allow us in the future for example to switch the draft_shield
boolean to an enum with the following values: "disabled" / "enabled" / "limited".

Added "enum_bitmask.hpp" - support for type safe sets of options.
See for example PresetBundle::load_configbundle(...
LoadConfigBundleAttributes flags) for an example of intended usage.

WIP: GUI for reporting the list of config substitutions needs to be
implemented by @YuSanka.
2021-06-27 16:14:16 +02:00
enricoturri1966
4d3cb19423 5677 - GCodeProcessor accepts gcode line T-1 as valid for RepRapFirmware and RepRapSprinter 2021-01-04 14:21:24 +01:00
enricoturri1966
b8fc1d3173 GCodeViewer - Fixed visualization of time estimates for silent mode 2020-12-17 11:41:41 +01:00
enricoturri1966
dcd69b4ef8 #5415 - Fixed preview when volumetric extrusion is turned on 2020-12-15 15:57:22 +01:00
enricoturri1966
cdb05d103a Tweaked clamping of max toolpaths width 2020-12-14 15:11:38 +01:00
enricoturri1966
9605e235b8 #5378 - Do not apply machine limits for non-Marlin firmwares 2020-12-14 14:02:50 +01:00
enricoturri1966
5bd443cd1f #4936 - Take toolpaths width and height from gcode decorations, if available 2020-12-08 15:55:53 +01:00
enricoturri1966
f77475e501 Tech ENABLE_SHOW_WIPE_MOVES set as default 2020-12-07 10:29:50 +01:00
enricoturri1966
00a67ba004 GCode Viewer -> Parse gcode produced by KISSSlicer 2020-11-26 16:07:07 +01:00
enricoturri1966
4d483f323f GCode Viewer -> Show extimated layer time on the vertical slider for gcode produced by PrusaSlicer 2.3.0, Cura, Simplify3D, CraftWare, ideaMaker 2020-11-26 08:43:04 +01:00
enricoturri1966
92953acc57 #5236 - Fixed color not correctly shown after slice
The bug was introduced with 148f4fe766cb7cf63972686af600d83804a2e8d3 which is now replaced by this commit
2020-11-23 17:15:22 +01:00
enricoturri1966
f68cf49f3d Merge branch 'master' of https://github.com/prusa3d/PrusaSlicer into et_wipe_moves 2020-11-23 10:11:04 +01:00
Vojtech Bubnik
25ca1fcf77 Some minor refactoring / polishing. 2020-11-21 13:16:03 +01:00
enricoturri1966
0e6acbc0e2 Preview - Visualization of wipe mones 2020-11-21 10:36:10 +01:00
Enrico Turri
148f4fe766 GCode Viewer - Fixed crash when switching to tool view with gcode generated by slicers other than PrusaSlicer 2020-11-20 11:50:25 +01:00
YuSanka
feffb66085 Ruler for DoubleSlider: Added estimated print time 2020-11-18 05:02:51 -08:00
enricoturri1966
f1d10f3c90 ENABLE_GCODE_VIEWER set as default in libslic3r 2020-11-12 14:03:58 +01:00
enricoturri1966
bf12c7cb8c GCode Viewer - Fixed color print visualization for gcode containing multiple extruders 2020-11-09 13:06:20 +01:00
enricoturri1966
479d4b70f2 GCode Viewer - Show print/printer/filament settings names in legend 2020-11-09 08:41:14 +01:00
enricoturri1966
8491872fb7 #5079 - Fixed GCode Viewer changing files modified date on Windows 2020-11-05 14:02:43 +01:00
enricoturri1966
8af25f7771 Fixed post-processing of placeholders in gcode when not exporting remaining times 2020-11-03 12:26:48 +01:00
Vojtech Bubnik
9e545eba13 Fixed quadratic complexity of the time estimator post processor
with a constant complexity (amortized) code.
2020-10-30 09:13:04 +01:00
Vojtech Bubnik
5ccd9d9d9a Fixed previous commit for Linux/OSX 2020-10-29 13:16:32 +01:00
Vojtech Bubnik
2fd7c20a86 Workaround for missing or partially implemented std::from_chars() 2020-10-29 11:37:45 +01:00
Vojtech Bubnik
d2e5be89e3 Fix of Slicer image not good #4992
Tighter parsing of PrusaSlicer's own G-code annotations
to avoid clashes with comments inside user G-codes.

Also the GCodeReader was extended to return string_views instead
of copying a substring, and the GCodeProcessor was partially adapted
to string_views.
2020-10-29 10:51:51 +01:00
enricoturri1966
0798fa8185 Merge branch 'master' of https://github.com/prusa3d/PrusaSlicer 2020-10-27 17:21:41 +01:00
enricoturri1966
128e4cff2d #4982 - Load config data when importing gcode produced by Slic3r and Slic3rPE 2020-10-27 17:18:15 +01:00
enricoturri1966
90c69e6bda #4986 - Fixed remaining print time and SD-percentage calculation not correct (replaces e14c122d1233a7af9bfe63425d3bfb4e5906ede3) 2020-10-27 15:50:04 +01:00
enricoturri1966
e14c122d12 Fixed percentage value exported into gcode M73 lines 2020-10-26 11:44:38 +01:00
Lukas Matena
8cd13803ca Updated the G10 RepRapFirmware pull request to current master 2020-10-23 13:27:45 +02:00
enricoturri1966
daf1011705 Changed heuristic to clamp toolpaths width 2020-10-16 09:02:37 +02:00
Lukas Matena
b42a12db66 Fixup of 8df0181 (turning off the export of machine limits)
This should solve #1212 for good
2020-10-06 13:31:42 +02:00
enricoturri1966
04a928b241 Follow-up of 8df01818dd85560a76d3a33bcff1f3437cede618 -> GCodeProcessor uses new Machine Limits limitations 2020-10-05 09:15:43 +02:00
enricoturri1966
980fe77b32 #4806 - Fixed detection of move type for G1 lines containing Z>0 and E>0 2020-09-30 08:34:29 +02:00
Vojtech Bubnik
067cde85f1 WIP Refactoring of exceptions:
1) All slicer's exceptions are now derived from Slic3r::Exception.
2) New exceptions are defined for slicing errors.
3) Exceptions are propagated to the Plater to show.
It remains to modify the slicing back-end to throw the new SlicingError
exceptions instead of std::runtime_error and to show the other exceptions
by a message dialog instead of a notification.
2020-09-14 18:03:22 +02:00
enricoturri1966
f58d3116bf Fixed crash when loading gcode files saved with older version of PrusaSlicer 2.3.0.alpha 2020-09-08 11:43:18 +02:00
enricoturri1966
8579184d70 Follow-up of 573194e059836916b6f216dc068c27a89ea7b843 -> Fixed crash when opening a gcode file 2020-09-07 11:30:31 +02:00
enricoturri1966
e10d1eba54 GCodeProcessor -> Use decorations to detect toolpaths height for gcode files generated by PrusaSlicer 2020-09-07 08:35:34 +02:00
enricoturri1966
573194e059 GCodeProcessor -> Added cancel callback 2020-09-03 08:32:06 +02:00
Lukas Matena
1eef1d32a0 Added two missing includes to fix build on gcc 2020-09-01 18:12:51 +02:00
enricoturri1966
7a093b08fd GCodeViewer -> Show printbed model and texture for system printers detected when loading gcode files produced by PrusaSlicer 2020-08-21 10:59:07 +02:00
enricoturri1966
bd4e4535f9 GCodeProcessor -> Calculate per layer time estimate 2020-08-18 12:37:07 +02:00
enricoturri1966
c81d87b470 Code cleanup 2020-08-17 15:59:36 +02:00
enricoturri1966
73603e4937 GCodeProcessor -> Do not export width tags to gcode 2020-08-17 14:37:26 +02:00
enricoturri1966
b156153405 GCodeViewer -> Use rounded values for toolpaths height, width and volumetric rate to reduce the number of generated paths 2020-08-17 13:07:13 +02:00
enricoturri1966
5b579aee9a GCodeProcessor -> Extract toolpaths width from gcode moves 2020-08-17 10:54:41 +02:00
enricoturri1966
f2d02faef4 GCodeProcessor -> Added debug code to check toolpaths data extracted from gcode, as mm3 per mm, height and width 2020-08-17 10:06:41 +02:00
enricoturri1966
b80bde11f3 GCodeProcessor -> Extract toolpaths height from gcode moves 2020-08-13 12:51:50 +02:00
enricoturri1966
5a0e048079 ENABLE_GCODE_VIEWER -> Drag and drop .gcode files into gcode viewer 2020-08-11 14:23:47 +02:00
enricoturri1966
5882c121cc GCodeProcessor -> Fixed time estimate for stealth mode 2020-08-11 11:12:30 +02:00